是的 但是总是定位不到 nmap 的真实路径,我用了 which nmap 是显示 /usr/bin/nmap是有的 但是程序里面却没有
linux 里面好像是没有 exe 的 我感觉是不是这样上面出的问题 那如果不用 Rex 还能有其他的方法来寻找 nmap 路径吗 他好像只是为了验证是否找到 nmap 这个程序 因为这个只是我给 metasploit 的一个 nmap 插件。
你要不考虑 win 的话,直接
[1] pry(main)> `which ruby`
=> "/Users/jasl/.rvm/rubies/ruby-2.6.2/bin/ruby\n"
[2] pry(main)> path = `which ruby`.gsub("\n", "")
=> "/Users/jasl/.rvm/rubies/ruby-2.6.2/bin/ruby"
[3] pry(main)> path
=> "/Users/jasl/.rvm/rubies/ruby-2.6.2/bin/ruby"
用系统的 which
不就能获得真实路径了吗?
::File.expand_path(ret) 这段代码前面有个空格我不是很理解是什么意思,那个路径我我试过直接使用绝对路近赋值给 nmap_bin 但是 好像还是显示 Cannot locate 困扰了我很久 我就在想是否这个函数并不是返回绝对路径
我不是都给你一种可行做法了么。。。你用我的就行了吧。。。
如果你真的想抠你贴的代码,那也容易,一个是查文档,搞明白这里面调用的每个函数的用途和用法,然后,这段代码在控制台里一步步执行,观察他们的返回值
你这里调的 test
是什么。。。你的贴图里一点跟他有关的都没
其次,你要想理解代码,如果不会用调试器,最简单的方式就是你把要研究的那个函数里的每行代码都贴进你的控制台,一行一行执行看返回值,返会 nil
哪步 nil 的?这一步在做什么?调用的库的函数的文档怎么解释的?一步步分析
rex fileutils
find_full_path
, 可以找到这个方法的文档。如果是我遇到一个陌生的项目的方法,应该就会这样去找它的 API 文档,然后就能理解是什么意思了。
::File.expand_path(ret) 这段代码前面有个空格我不是很理解是什么意思
遇到看不懂的 Ruby 语法可以这样查:
Ruby Core Reference
,点击这个链接New to Ruby? You may find these links helpful: syntax, control expressions, assignment, methods, modules + classes, and operator precedence.
里面的 modules + classes
链接到的页面就有你想要的答案。
我试了在 irb nmap_bin 的值是存在的 我这个是 metasploit 的一个插件 在 msf 模块中 我定了一个模块 nmap 一个命令控制的 commanddispater 类 我觉得会不会是 nmap_binary 的值没有传到这个控制类里