Ruby——Metasploit的核心
Ruby编程语言可以说是’Metasploit’框架的核心。不过Ruby到底是什么呢?根据Ruby官方网站的说法,Ruby是一种简单而强大的编程语言。日本的松本行弘在1995年设计并实现了Ruby语言。后来它被进一步定义为功能类似于Perl语言的、具有动态特性和反射机制的、通用的面向对象
(Object-Oriented Programming,OOP)的程序设计语言。
可以从http://Rubyinstaller.org/downloads/
下载Windows/Linux版本的Ruby。
也可以通过下面的网页获得优秀的Ruby学习资源:http://tryruby.org/levels/1/challenges/。
1.1 创建你的第一个Ruby程序
Ruby是一种十分简单易学的编程语言。首先了解一下Ruby语言的基础知识。但是请记住,Ruby是一种内容十分丰富的编程语言。如果讲解Ruby的所有知识将会远远超出本书的范围,因此我们将只涉及编写Metasploit模块所必需的Ruby知识。
1.Ruby的交互式命令行
Ruby语言提供了一个可以进行交互的命令行。在交互式命令行上进行工作可以使我们更清楚地理解Ruby的基础知识。好的,现在就要开始了。首先打开你的CMD命令行或者终端窗口,然后在其中输入命令irb
来启动Ruby的交互式命令行。
先在Ruby交互式命令行中输入一些内容,然后查看发生的变化;假设如所示输入数字2
irb(main):001:0> 2
=> 2
交互式命令行返回并输出了刚刚输入的值。现在,来进行另一个操作,例如一个如下图所示的加法运算:
irb(main):002:0> 2+3
=> 5
可以看到,如果输入的内容是一个表达式的话,交互式命令行会返回并输出表达式的结果。
现在来执行一些对字符串的操作,例如将一个字符串类型的值保存到一个变量中。过程如下所示:
irb(main):005:0> a= "nipun"
=> "nipun"irb(main):006:0> b= "loves
Metasploit"
=> "loves metasploit"
当对变量a和b赋值结束后,我们来查看一下当在交互式命令行中输入a
和a+b时,交互式命令行是如何反应的:
irb(main):014:0> a
=> "nipun"irb(main):015:0> a
+b=> "nipun loves me
tasploit"
可以看到,当将a作为一个输入时,交互式命令行返回并输出了它保存的名为a的变量的值。类似地,输入a+b返回并输出的结果为变量a和b的连接。
2.在命令行中定义方法
方法或者函数是一组语句,当我们调用它们时会开始执行。可以简单地在Ruby交互命令行中声明一个方法,也可以在脚本中对它们进行声明。在使用Metasploit模块时,Ruby的方法是一个很重要的部分。来看看它的语法格式:
def method_name [( [arg [= default]]...[, * arg [, &expr ]])]
exprend
要定义一个方法,首先以def开始,紧随其后的是方法的名称,然后是包含在括号中的参数和表达式。我们还将一个end
声明放在所有表达式的最后来结束对方法的定义。这里,arg
指的是方法所接收的参数,expr
指的是方法用来接受并计算的表达式。来看一个例子:
irb(main):002:0> def xorops(a,b)
irb(main):003:1> res = a ^ birb(main):004:1> return resirb(main):005:1> end=> :xorops
我们定义了一个名为xorops
的方法,它接收a
和b两个参数。接着将接收到的参数进行异或运算,并将结果保存到一个名为res
的新变量中。最后使用return
语句来返回结果。
irb(main):006:0> xorops(90,147)
=> 201
可以看到,函数通过异或运算打印出了正