打造定制化的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 循环打印出来。


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

查看所有标签

猜你喜欢:

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

常用算法程序集

常用算法程序集

2009-7 / 58.00元

《常用算法程序集(C++语言描述)第4版》是针对工程中常用且行之有效的算法而编写的,主要内容包括矩阵运算,矩阵特征值与特征向量的计算,线性代数方程组的求解,非线性方程与方程组的求解,插值与逼近,数值积分,常微分方程组的求解,数据处理,极值问题的求解,复数、多项式与特殊函数的计算,查找与排序。书中所有的算法程序均用C++描述,全部程序可从清华大学出版社网站上的《常用算法程序集(C++语言描述)第4版......一起来看看 《常用算法程序集》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具