2011-04-12 5 views
0

저는이 웹 사이트를 아주 좋아해 다른 사람들의 질문을 통해 많은 도움을 얻었습니다. 이제는 합류하여 가능한 한 서로 도와 줄 수 있습니다.meterpreter를 실행하는 동안 ruby ​​스크립트에 오류가 발생했습니다.

여기에 문제가 있습니다. VM에서 metasploit 제품군의 meterpreter를 실행하는 동안 손상된 시스템의 모든 포트를 중계하고 로컬 시스템에 가상 인터페이스를 만드는 스크립트를 시도했습니다. 하지만 오류가 발생합니다.

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

감사합니다!

답변

0
$stdout.string 

이 줄은 포함 된 \ n 문자가 포함 된 출력의 모든 줄을 포함하는 단일 String 개체를 반환합니다. String 개체에는 각 메서드가 없습니다.

아마도 출력 목록의 라인을 나타내는 문자열 목록을 얻고 싶었을 것입니다. 이 경우 먼저 문자열을 분할해야합니다.

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

감사합니다. muriel! 그게 효과가 있었어. – user1283604