【问题标题】:Error in ruby script while running meterpreter运行meterpreter时ruby脚本出错
【发布时间】:2011-08-03 22:04:24
【问题描述】:

我喜欢这个网站,它帮助我解决了其他人的问题,现在我加入了,所以如果可以的话,我可以互相帮助。

我有一个问题。 在 VM 中运行meterpreter(来自 metasploit 套件)时,我尝试了一个脚本,该脚本中继受感染机器中的所有端口并在本地机器中创建虚拟接口。但我得到了错误

Undefined method: each.

去代码的时候:

def discovery()
  ip_port = []
  # Alive hosts discovery
  temphosts = []
  hosts = []
  ## oldstdout = $stdout ## Trick for capturing stdout
  $stdout = StringIO.new
  client.run_cmd('run landiscovery')
  temphosts = $stdout.string
  $stdout = oldstdout
  print_status "Alive Hosts:"
  temphosts.each do |x|
    if x.match(/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/)
      y = x.chomp
      hosts << y
      print " - #{y}\n"
    end
  end
end

我认为这与我用## 包围的线有某种关系。它必须是nil,所以temphosts 也是nil,我得到了每个错误。

有人能指点我一个好的方向吗?

非常感谢。

PS:如果有人感兴趣,脚本在这里:http://tools.pentester.es/multirelay

再次感谢!

【问题讨论】:

    标签: ruby metasploit


    【解决方案1】:
    $stdout.string
    

    此行将返回一个字符串对象,其中包含输出的所有行,其中包含 \n 字符。 字符串对象没有each方法。

    也许你想得到一个字符串列表,代表你输出的行列表。在这种情况下,您应该首先拆分您的字符串:

    temphosts.split("\n").each do |x|
    

    【讨论】:

      猜你喜欢
      • 2017-02-05
      • 2016-12-18
      • 2017-03-28
      • 1970-01-01
      • 2015-01-31
      • 2017-09-18
      • 2013-10-07
      • 2018-01-30
      相关资源
      最近更新 更多