我喜欢这个网站,它通过别人的问题帮了我很多,现在我加入了这个网站,这样我就可以在可能的情况下互相帮助。
我这里有个问题。在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,我得到了each错误。
谁能给我指个好方向?
谢谢,非常感谢。
PS:如果有人感兴趣,脚本在这里:http://tools.pentester.es/multirelay
再次感谢!
发布于 2011-04-13 02:00:33
$stdout.string此行将返回一个字符串对象,其中包含输出的所有行,并包含\n个字符。String对象没有任何each方法。
也许你想得到一个字符串的列表,代表你的输出行的列表。在这种情况下,您应该首先拆分字符串:
temphosts.split("\n").each do |x|https://stackoverflow.com/questions/5636207
复制相似问题