1

Hotmail にログインするためのスクリプトを作成しています。ユーザーにパスワードの入力を求め、パスワードが正しい場合はすべて問題ありません。

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

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

import poplib

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

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@hotmail.com'
*put* 'USER email@hotmail.com'
*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@hotmail.com'
*put* 'USER email@hotmail.com'
*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@hotmail.com'
*put* 'USER email@hotmail.com'
*get* '+OK password required\r\n'
*resp* '+OK password required'
*cmd* "PASS password"
*put* "PASS password"
Invalid credentials

ここで何が欠けていますか?私はPythonに非常に慣れていないことに注意してください。

4

2 に答える 2

1

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

于 2011-10-12T18:29:52.370 に答える
0

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

于 2011-08-07T08:21:09.767 に答える