「crypt」モジュールを使用できるかどうかをいじっていたところ、一生理解できない問題に遭遇したようです。これを実行した後の出力は次のとおりです。
Password Not Found. secret HXXxJi0n6Huro HXXxJi0n6Huro
つまり、cryptWord と cryptPass は同じであるのに、なぜプログラムは ( if cryptWord == cryptPass:
) を実行しないのでしょうか?print 'Found Password:
私はまったくそれを理解していません。
Dictionary.txt ファイルには、secret という単語が複数回含まれているだけで、すべてが別々の行にあります。そして、evil.txt ファイルには次の行があります。
test_user:HXXxJi0n6Huro
私が言えることから、すべてが正しく機能していますか? しかし、何かがこれを正しく機能させるのを妨げており、私はそれを理解することができません. どんな助けでも大歓迎です。
import crypt
def testPass(cryptPass):
salt = cryptPass[0:2]
dictFile = open('dictionary.txt', 'r')
for word in dictFile.readlines():
word = word.strip('\n')
cryptWord = crypt.crypt(word, salt)
if cryptWord == cryptPass:
print "[+] Found Password: "+word+"\n"
return
print "[-] Password Not Found. " +word, cryptWord, cryptPass+ "\n"
return
def main():
passFile= open('evil.txt')
for line in passFile.readlines():
if ":" in line:
user = line.split(':')[0]
cryptPass = line.split(':')[1]
print "[*] Cracking Password For: "+user
testPass(cryptPass)
if __name__ == '__main__':
main()