2011-08-07 8 views
1

私はHotmailにログインするためのスクリプトを書いています。ユーザーにパスワードの入力を求め、パスワードが正しい場合はすべて正常です。poplibを使用してPOPサーバーに無効な資格情報を与えると、なぜ正しいもので再試行できないのですか?

ただし、最初にパスワードを間違えた場合、その後の試行では有効なパスワードは機能しません。

これは私が自分のパスワードを入力するユーザーのために使用しているものです。ここで

import poplib 

M = poplib.POP3_SSL('pop3.live.com', 995) #Connect to hotmail pop3 server 
M.set_debuglevel(2) 
success = False; 
user = "[email protected]" 

while success == False: 
    try: 
     password = raw_input("password: ") 
     M.user(user) 
     M.pass_(password) 
    except: 
     print "Invalid credentials" 
    else: 
     print "Successful login" 
     success = True 

は上のデバッグレベル2で出力されます。

$ python my_program.py 
password: password 
*cmd* 'USER [email protected]' 
*put* 'USER [email protected]' 
*get* '+OK password required\r\n' 
*resp* '+OK password required' 
*cmd* "PASS password" 
*put* "PASS password" 
*get* '+OK mailbox has 1 messages\r\n' 
*resp* '+OK mailbox has 1 messages' 
Successful login 

$ python my_program.py 
password: 1234 
*cmd* 'USER [email protected]' 
*put* 'USER [email protected]' 
*get* '+OK password required\r\n' 
*resp* '+OK password required' 
*cmd* 'PASS 1234' 
*put* 'PASS 1234' 
*get* '-ERR authentication failed\r\n' 
*resp* '-ERR authentication failed' 
Invalid credentials 
password: password 
*cmd* 'USER [email protected]' 
*put* 'USER [email protected]' 
*get* '+OK password required\r\n' 
*resp* '+OK password required' 
*cmd* "PASS password" 
*put* "PASS password" 
Invalid credentials 

私はここで何をしないのですか?私はPythonにはとても新しいことに注意してください。

答えて

1

さて、あなたはpoplibからのオブジェクトで1回のログイン試行しかできないと思います。解決策は「M」の宣言をwhileループに移動することでした(投稿する前に試したことを誓っていますが、何とかそれを詰め込む必要があります)。

0

私がISPのメールサーバを管理していた限り、ブルートフォース攻撃は大きな問題でした。 私はHotmailの大きさを想像しています! 私は失敗後のタイムアウトは、彼らが見つけた愚かな回避策だと思います。

関連する問題