2014-03-03 41 views
0

這是我的代碼片段。出於某種原因,它根本不會打印出第二行說「破解需要10秒鐘」或其他任何東西,但是這第一位說密碼找到:確實有效......爲什麼?錯誤異常導致打印失敗 - python2

def connect(host, user, password, release): 
    global Found 
    global Fails 
    global startTime 

    try: 
     s = pxssh.pxssh() 
     s.login(host, user, password) 
     print '[+] Password Found: ' + password 
     print 'Cracking the password took' + datetime.now()-startTime + 'seconds.' 
    Found = True 

    except Exception, e: 
     if 'read_nonblocking' in str(e): 
     Fails += 1 
      time.sleep(5) 
      connect(host, user, password, False) 
    elif 'synchronize with original prompt' in str(e): 
     time.sleep(1) 
     connect(host, user, password, False) 
+0

小心分享異常? – Tempux

+0

沒有,那是我的問題。我猜測這個異常會導致它出錯。我不確定。 – Coder77

+0

這可能是因爲'datetime.now() - startTime'不是一個字符串,請嘗試'str(datetime.now() - startTime)'。同樣'Found = True'沒有正確的標識 –

回答

1

您正在試圖連接兩個不同的東西(datetimestr),嘗試轉換datetime爲str的:

def connect(host, user, password, release): 
    global Found 
    global Fails 
    global startTime 

    try: 
     s = pxssh.pxssh() 
     s.login(host, user, password) 
     print '[+] Password Found: ' + password 
     print 'Cracking the password took' + str(datetime.now()-startTime) + 'seconds.' 
     Found = True 

    except Exception, e: 
     if 'read_nonblocking' in str(e): 
      Fails += 1 
      time.sleep(5) 
      connect(host, user, password, False) 
     elif 'synchronize with original prompt' in str(e): 
      time.sleep(1) 
      connect(host, user, password, False) 

而且,你不應該捕獲所有類型的Exception,只是那些你需要的。

+0

啊...我明白了,謝謝。 – Coder77

1

的問題是可能是你沒有設置startTime,但你卻過於寬泛的異常處理掩蓋它。刪除try/except,選擇一些其他異常進行陷阱,或者只是在異常處理程序中包含裸露的raise命令,由於缺少初始化,您應該看到NameError。修復這個問題,你的代碼有更多的機會。

+0

我收到此錯誤 '無法連接'str'和'datetime.datetime'objects' – Coder77

+0

正如Ruben上面所指出的那樣,你的真實錯誤被揭示出來。必須謹慎管理異常處理,以確保您不會陷入和忽略虛假錯誤。 – holdenweb

相關問題