内容简介: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的交互式命令行
这里直接使用Kali系统自带的Ruby环境,跟 Python 等语言一样,ruby也有命令交互的,输入 irb
即可进入到命令行交互操作。
下面做个 计算 与 赋值 的简单操作:
命令行中定义方法
方法或函数是一组语句,当强调它们时就会执行。在使用Metasploit模块时,Ruby的方法是一个很重要的部分。语法格式:
def method_name [( [arg [= default]]...[, * arg [, &expr ]])] |
expr.. |
end |
首先已 def
开始, end
声明放在最后来结束对方法的定义, arg
指的是方法所接收的参数, expr
指的是用来接受并计算的表达式。
下面定义一个函数方法:
可以看到,函数通过运算打印出了正确的结果。Ruby语言提供了puts和print这两种输出打印函数。当涉及Metasploit时,将使用 print_line
函数。
下面分别使用 print_line
、 print_good
、 print_error
、 print_warning
、 print_status
、与 print_blank_line
语句来表示行、成功执行、错误执行、警告、状态与换行:
def run |
print_line("---") |
print_good("successful") |
print_error("error") |
print_warning("warning") |
print_status("status") |
print_blank_line |
end |
Ruby中的变量和数据类型
变量是指一个值可以随时改变的占位符。Ruby语言支持众多的数据类型,但只讲解与Metasploit相关的数据类型。
字符串处理
使用Ruby语言编写Metasploit模块时,尽量使用双引号标记,因为单引号可能会产生问题:
字符串连接
将两个不同结果连接成一个字符串,使用 +
运算符实现字符串的连接;当需要一个变量后面追加数据的时候,可以使用 <<
运算符:
子字符串substring函数
split函数
Ruby中的数字和转换
在处理用户输入是,可以用 to_i
函数将字符串类型的输入转换成数字;另外,可以用 to_s
函数将一个数字转换成字符串。
数制转换
- 16进制到10进制的转换
- 10进制到16进制的转换
范围
范围(range)是一个很重要的内容,广泛应用在Metasploit的辅助模块中。例如 auxiliary
…
一个范围的对象提供多种操作:搜索、查找最小值与最大值、显示范围中的所有数据。这里 include?
函数可以检查范围中是否包含某一个特定的值。此外, min
与 max
分别显示范围中的最小值和最大值。
Ruby中的循环
迭代语句被称为循环。Ruby的语法和其他编程语言的不同之处:
def for1(a) |
for i in 0..a |
print ("This number is #{i}\n") |
end |
end |
for1 (10) |
这里使用 #{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) |
定义一个方法,并接收数组a,再用 each
循环打印出来。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。