如果我使用poplib为POP服务器提供无效凭据,为什么我不能再使用正确的凭据重试?

时间:2011-08-07 08:01:33

标签: python poplib

我正在写一个脚本来登录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很新。

2 个答案:

答案 0 :(得分:1)

好的,我猜你只能使用poplib中的对象进行一次登录尝试。解决方案是将“M”的声明移到while循环中(我发誓我在发布前尝试过,但我必须以某种方式将其填满)。

答案 1 :(得分:0)

就我管理ISP邮件服务器而言,暴力攻击对我们来说是个大问题。 我想想Hotmail有多大! 我认为失败后超时是他们发现的一个糟糕的解决方法。

相关问题