Ошибка в скрипте ruby ​​при запуске meterpreter - PullRequest
0 голосов
/ 12 апреля 2011

Мне нравится этот сайт, он очень помог мне в ответах на вопросы других людей, теперь я присоединился, чтобы помогать друг другу, если смогу.

У меня есть проблема здесь.Запустив meterpreter (из metasploit suite) на виртуальной машине, я попробовал скрипт, который ретранслирует все порты скомпрометированной машины и создает виртуальный интерфейс на вашей локальной машине.Но я получаю сообщение об ошибке

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

Еще раз спасибо!

1 Ответ

0 голосов
/ 12 апреля 2011
$stdout.string

Эта строка вернет один объект String, содержащий все строки вашего вывода, с включенными символами \ n. У строковых объектов нет каждого метода.

Возможно, вы хотите получить список строк, представляющий список строк вашего вывода. В этом случае вы должны сначала разделить строку:

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