0

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

我这里有个问题。在 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如此,我得到了每个错误。temphostsnil

有人可以为我指出一个好的方向吗?

非常感谢。

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

再次感谢!

4

1 回答 1

0
$stdout.string

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

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

temphosts.split("\n").each do |x|
于 2011-04-12T18:00:33.457 回答