1

「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()
4

1 に答える 1

5

あなたのcrypPass値にはまだ改行が付けられています。最初にそれを取り除きます:

user, cryptPass = line.split(':')
cryptPass = cryptPass.strip()
于 2013-02-02T18:30:48.290 に答える