张家港个人网站制作网站建设用户画像例子
张家港个人网站制作,网站建设用户画像例子,网站模板上传,wordpress同步百度Ruby-Metasploit的核心
Ruby编程语言可以说是Metasploit框架的核心。
根据Ruby官方网站介绍#xff0c;Ruby编程语言简单而又强大#xff0c;面向对象#xff0c;为解释性语言#xff0c;执行速度快#xff0c;项目开发周期短#xff0c;可以构建自动化类来重用代码是R…Ruby-Metasploit的核心
Ruby编程语言可以说是Metasploit框架的核心。
根据Ruby官方网站介绍Ruby编程语言简单而又强大面向对象为解释性语言执行速度快项目开发周期短可以构建自动化类来重用代码是Ruby语言的一个特点而这个特点正好满足了Metasploit的需求。
日本的松本行弘在1995年设计并实现了Ruby语言。后来它被进一步定义为功能类似与Perl语言的、具有动态特性和反射机制的、通用的面向对象OOP的程序设计语言。
可以从http://Rubyinstaller.org/downloads/网站下载Windows/Linux版本的Ruby。 也可通过http://tryruby.org/levels/1/challenges网站获得优秀的Ruby资源。
Ruby语言的基础知识
Ruby的交互式命令行
Ruby语言提供了一个可以进行交互的命令行。在交互式命令行上进行工作可以让我们更清楚理解Ruby的基础知识。
在CMD命令行或者终端窗口输入命令irb来启动Ruby的交互式命令行。
输入数字2 irb(main):001:0 2 2
进行加法运算 irb(main):002:0 2 3 5
对字符串操作 irb(main):008:0 a “Ruby” “Ruby” irb(main):009:0 b “Metasploit” “Metasploit” irb(main):010:0 a b “Ruby Metasploit”
在命令行定义方法
方法或者函数是一组语句当我们调用它们时会开始执行。可以简单地在Ruby交互命令行声明一个方法也可以在脚本里对它们进行声明。在使用Metasploit模块时Ruby的方法是一个很重要的部分。
它的语法格式 def method_name [([arg [ default]] … [, * arg [, expr]])] expr end
要定义一个方法首先以def开始之后随其后的是方法的名称然后是包含在括号内的参数和表达式。我们还将一个end声明放在表达式的最后来结束对方法的定义。这里arg指的是方法所接收的参数expr指的是方法接收并计算的表达式。
例如 irb(main):002:0 def xorops(a,b) irb(main):003:0 res a ^ b irb(main):004:0 return res irb(main):005:0 end :xorops
定义一个名为xoropos的方法它接收a和b两个参数。接着对接收到的参数进行异或运算并将结果保存到一个名为res的新变量里。最后用return语句返回结果。
Ruby的输出
Ruby语言提供了puts和print两类输出形式可以用print_good、print_status、print_error语句来表示成功执行、状态和错误。 例如 print_good(“Example of Print Good”) print_error(“Example of Print Error”) print_status(“Example of Print Status”)
当在Metasploit模块下运行这些命令时会产生如下输出符号并绿色显示表示正常*符号并蓝色显示表示状态信息-符号并红色显示表示错误信息。 [ ]Example of Print Good [ - ]Example of Print Error [ * ]Example of Print Status
字符串追加
当需要在一个变量后面追加数据的时候可以用运算符。
例如 irb(main):001:0 a “Ruby” “Ruby” irb(main):002:0 a “Metasploit” “Ruby Metasploit”
子字符串函数
在Ruby里可以轻松输入substring函数来获取子字符串——只需要指明子字符串在字符串内的起始位置和长度就可以获得它。
例如 irb(main):001:0 a “123678” “123678” irb(main):002:0 a[0,2] “12” irb(main):001:0 a[2,2] “36”
split函数
可以输入split函数将一个字符串类型的值分割为一个变量数组。
例如 irb(main):001:0 a “mastering,metasploit” “mastering,metasploit” irb(main):002:0 b a.split(,) [“mastering”,“metasploit”] irb(main):008:0 b[0] “mastering” irb(main):009:0 b[1] “metasploit”
可以看到现在已经将字符串转换成了一个新的数组b这个数组b包括b[0]和b[1]两个元素分别为“mastering”和“metasploit”。
Ruby的数字和转换
可以直接在算术运算里采用数字。在处理用户的输入时可以用to_i函数将字符串类型的输入转换成整数。另一方面也可以采用to_s将一个整数转换成字符串。
例如 irb(main):001:0 a “23” “23” irb(main):002:0a.to_i 10 33
irb(main):006:0 am 29 29 irb(main):007:0 aa “hello” “hello” irb(main):008:0 am.to_s aa “29hello”
Ruby的数值转换
在采用渗透模块和其他模块时都将利用到各个转换机制。
16进制到10进制的转换 例如 irb(main):001:0 a “10” “10” irb(main):002:0 a.hex 16
10进制到16进制的转换 例如 和上例相反的操作可以采用to_s来实现 irb(main):003:0 16.to_s(16) “10”
Ruby的范围
范围range是一个很重要的内容广泛应用在Metasploit的辅助模块里例如扫描模块和测试模块。
定义一个范围并且查看一下可以对此数据类型进行哪些操作 irb(main):002:0 zero_to_nine 0…9 0…9 irb(main):003:0 zero_to_nine.include?(4) true irb(main):004:0 zero_to_nine.include?(11) false irb(main):005:0 zero_to_nine.each{|zero_to_nine| print(zero_to_nine)} 0123456789 0…9 irb(main):006:0 zero_to_nine.min 0 irb(main):007:0 zero_to_nine.max 9
可以看到一个范围对象提供的操作例如搜索、查找最小值和最大值以及显示范围内的所有数据。这里的include?函数可以检查范围内是否包括某个特定的值。此外min和max函数可以显示出范围内的最小值和最大值。
Ruby的数组
可以简单地将数组定义为一系列元素的集合。
例如 irb(main):001:0 name [“Ruby”,“metasploit”] [“Ruby”,“metasploit”] irb(main):002:0 name[0] “Ruby” irb(main):003:0 name[1] “metasploijt”
学到这里已经介绍了所有编写的Metasploit模块必需的变量和数据类型的相关知识。
有关变量的数据类型的更多信息请访问http://www.tutorialspoint.com/ruby/ 有关利用Ruby编程的速查表请参考https://github.com/savini/cheatsheets/raw/master/ruby/再点击RubyCheat.pdf 若你现在正从别的语言向Ruby语言过渡这有一份推荐材料http://hyperpolyglot.org/scripting
Ruby的方法
方法为函数的另一个说法。除了Ruby程序员以外其他背景的程序员可能经常使用这两类叫法。方法就是指能执行特定操作的子程序。方法的使用实现了代码的重用大大缩短了程序的长度。定义一个方法很容易在定义开始的地方使用def关键字在结束的地方使用end关键字。
例如 打印出50个空格 def print_data(part1) square par1 * par1 return square end answer print_data(50) print(answer)
这里的print_data方法接收主函数发送过来的参数然后让其乘以自身再使用return将结果返回。这个程序将返回的值放到了一个名为answer的变量内随后输出流这个值。
决策运算符
与其他任何编程语言一样决策在Ruby里也是一个简单的概念
例如 irb(main):001:0 1 2 false 同样再来查看一个字符串数据的例子 irb(main):005:0 “Ruby” “ruby” false irb(main):006:0 “Ruby” “Ruby” true
来看一个利用决策运算符的简单程序 def find_match(a) if a ~ /Metasploit/ return true else return false end end #主函数从这里开始 a “128924983Metasploitduidsamerican” bool_bfind_matcch(a) print bool_b.to_s
在上面的这个程序里利用了一个包含有“Metasploit” 的字符串这个字符串里的“Metasploit”前后都添加了一些无用字符。然后将这个字符串赋值给变量a。接下来将该变量传递给函数find_match(),这个函数的作用是检查该变量是否可以匹配正则表达式/Metasploit/。若这个变量里包含了“Metasploit”函数的返回值就是true否则就将false赋值给bool_b变量。
运行上面这个方法将会产生一个true这是因为按照决策运算符~的计算这两个值是匹配的。 前面的程序在Windows系统环境下执行完成后输出的结果如下 C:\Ruby23-x64\binruby.exe a.rb true
Ruby的循环
迭代语句被称为循环。
例如 def forl(a) for i in 0…a print(“Number #{i}n”) end end forl(10) 上面的代码按照定义的范围从0遍历到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 [10,20,50,90,111] each_example(a) 在上面的代码里定义了一个方法这个方法接收一个数组a然后将数组a的所有元素用each循环打印出来。利用each方法完成会将数组a里的元素临时保存到i里一直到下一个循环时再重写这个变量的值。输出语句里的.t表示一个制表位tab。
有关循环的更多信息请访问http://www.tutorialspoint.com/Ruby/Ruby_loops.htm
正则表达式
正则表达式用来匹配一个字符串或者获取字符串在一组给定的字符串或一个句子里出现的次数。在Metasploit里正则表达式十分关键。在编写漏洞检查工具和扫描工具以及分析某个给定端口的响应时总会需要利用正则表达式。
看一个例子这里的程序演示了正则表达式的使用。 有一个变量它的值为Hello world需要为它设计一个正则表达式。代码如下 irb(main):001:0 n “Hello world” “Hello world” irb(main):002:0 r /world/ /world/ irb(main):003:0 r.match n #MatchData “world” irb(main):004:0 n ~ r 6
创建另一个名为r的变量并把正则表达式内容——/world/保存在其内。在下一行我们用MatchData类的match对象将这个字符和正则表达式进行匹配。命令行返回了一个匹配成功的信息MatchData “world”。接下来利用另一个运算符~来完成字符串的匹配操作返回匹配的具体位置。例如
irb(main):001:0 r /^world/ /^world/ irb(main):002:0 n ~ r nil irb(main):003:0 r /^Hello/ /^Hello/ irb(main):004:0 n ~ r 0 irb(main):005:0 r / world $/ / world $/ irb(main):006:0 n ~ r 6
分配一个新的值/^world/给r这里 ^运算符表示要匹配字符串的开始位置。我们得到了输出nil这说明并没有匹配成功。我们修改这个表达式以匹配单词hello开始的字符串。这一次系统的输出为数字0这意味着在最开始的位置匹配成功。下一步将正则表达式修改为/world $/,这意味着只有一个以单词world结尾的字符串才会匹配。
有关Ruby正则表达式的更多信息请访问http://www.tutorialspoint.com/Ruby/Ruby_regular_expressions.htm 下方的链接提供了Ruby编程语言速查卡可以让你的编程更高效 https://github.com/savini/cheatsheets/raw/master/Ruby/RubyCheat.pdf http://hyperpolyglot.org/scripting
有关如何构建正确的正则表达式的更多信息请访问http://rubular.com
Ruby基础知识小结
可以从下面的网址获得极为优秀的Ruby编程资源
一个丰富的Ruby语言教程资源库 http://tutorialspoint.com/Ruby/
可以帮助你提高Ruby语言编程效率的速查表的链接 https://github.com/savini/cheatsheets/raw/master/Ruby/RubyCheat.pdf http://hyperpolyglot.org/scripting
有关Ruby的更多信息请访问http://en.wikibooks.org/wiki/Ruby_Programming
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92269.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!