打造定制化的Metasploit-第一课

栏目: IT技术 · 发布时间: 4年前

内容简介:Ruby编程语言可以说是Metasploit框架的核心,想要学习好Metasploit模块编写必须要会Ruby。不过Ruby到底是什么呢?根据Ruby官方网站的说法:”Ruby一门开源的动态编程语言,注重简洁和效率。Ruby 的句法优雅,读起来自然,写起来舒适。”(引自简单来说,Ruby是一种简单快捷的面向对象(面向对象程序设计)脚本语言。ruby 另以”红宝石”命名。

Ruby编程语言可以说是Metasploit框架的核心,想要学习好Metasploit模块编写必须要会Ruby。不过 Ruby 到底是什么呢?根据Ruby官方网站的说法:”Ruby一门开源的动态编程语言,注重简洁和效率。Ruby 的句法优雅,读起来自然,写起来舒适。”(引自 Ruby中文官网

简单来说,Ruby是一种简单快捷的面向对象(面向对象程序设计)脚本语言。ruby 另以”红宝石”命名。

本文只讲解涉及编写Metasploit模块所必需的Ruby知识,如需更多介绍可以查阅 Ruby教程 ,进行学习。

创建第一个ruby程序

如需了解Ruby的安装过程,可自行百度,本文不进行讲解。

下载Ruby

Ruby的交互式命令行

这里直接使用Kali系统自带的Ruby环境,跟 Python 等语言一样,ruby也有命令交互的,输入 irb 即可进入到命令行交互操作。

下面做个 计算 与 赋值 的简单操作:

打造定制化的Metasploit-第一课

命令行中定义方法

方法或函数是一组语句,当强调它们时就会执行。在使用Metasploit模块时,Ruby的方法是一个很重要的部分。语法格式:

def method_name [( [arg [= default]]...[, * arg [, &expr ]])]
   expr..
end

首先已 def 开始, end 声明放在最后来结束对方法的定义, arg 指的是方法所接收的参数, expr 指的是用来接受并计算的表达式。

下面定义一个函数方法:

打造定制化的Metasploit-第一课

可以看到,函数通过运算打印出了正确的结果。Ruby语言提供了puts和print这两种输出打印函数。当涉及Metasploit时,将使用 print_line 函数。

下面分别使用 print_lineprint_goodprint_errorprint_warningprint_status 、与 print_blank_line 语句来表示行、成功执行、错误执行、警告、状态与换行:

def run
    print_line("---")
    print_good("successful")
    print_error("error")
    print_warning("warning")
    print_status("status")
    print_blank_line
  end

打造定制化的Metasploit-第一课

Ruby中的变量和数据类型

变量是指一个值可以随时改变的占位符。Ruby语言支持众多的数据类型,但只讲解与Metasploit相关的数据类型。

字符串处理

使用Ruby语言编写Metasploit模块时,尽量使用双引号标记,因为单引号可能会产生问题:

打造定制化的Metasploit-第一课

字符串连接

将两个不同结果连接成一个字符串,使用 + 运算符实现字符串的连接;当需要一个变量后面追加数据的时候,可以使用 << 运算符:

打造定制化的Metasploit-第一课

子字符串substring函数

打造定制化的Metasploit-第一课

split函数

打造定制化的Metasploit-第一课

Ruby中的数字和转换

在处理用户输入是,可以用 to_i 函数将字符串类型的输入转换成数字;另外,可以用 to_s 函数将一个数字转换成字符串。

打造定制化的Metasploit-第一课

数制转换

  • 16进制到10进制的转换

打造定制化的Metasploit-第一课

  • 10进制到16进制的转换

打造定制化的Metasploit-第一课

范围

范围(range)是一个很重要的内容,广泛应用在Metasploit的辅助模块中。例如 auxiliary

打造定制化的Metasploit-第一课

一个范围的对象提供多种操作:搜索、查找最小值与最大值、显示范围中的所有数据。这里 include? 函数可以检查范围中是否包含某一个特定的值。此外, minmax 分别显示范围中的最小值和最大值。

Ruby中的循环

迭代语句被称为循环。Ruby的语法和其他编程语言的不同之处:

def for1(a)
	for i in 0..a
		print ("This number is #{i}\n")
	end
end
for1 (10)

打造定制化的Metasploit-第一课

这里使用 #{i} 去打印输出的变量i的值,关键字 \n 指定开始新的一行。

而迭代循环是通过each实现的,在Metasploit模块中被广泛使用。

def each_example(a)
    a.each do |i|
        print i.to_s + "\t"
    end
end
a=Array.new(5)
a=[5,10,15,20,25]
each_example(a)

打造定制化的Metasploit-第一课

定义一个方法,并接收数组a,再用 each 循环打印出来。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Persuasive Technology

Persuasive Technology

B.J. Fogg / Morgan Kaufmann / 2002-12 / USD 39.95

Can computers change what you think and do? Can they motivate you to stop smoking, persuade you to buy insurance, or convince you to join the Army? "Yes, they can," says Dr. B.J. Fogg, directo......一起来看看 《Persuasive Technology》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码