web-dev-qa-db-ja.com

Python MD5クラッカー「TypeError:必要なバッファAPIをサポートするオブジェクト」

私のコードは次のようになります:

md = input("MD5 Hash: ")
if len(md) != 32:
    print("Don't MD5 Hash.")
else:
    liste = input("Wordlist: ")
    ac = open(liste).readlines()
    for new in ac:
        new = new.split()
        hs = hashlib.md5(new).hexdigest()
        if hs == md:
            print("MD5 HASH CRACKED : ",new)
        else:
            print("Sorry :( Don't Cracked.")

しかし、実行するとこのエラーが発生します。

    hs = hashlib.md5(new).hexdigest()
TypeError: object supporting the buffer API required

どうすればこれを解決できますか? 「b」バイト?

7
Ahmet

どちらの場合でも、newsplit() を呼び出すことにより、listではなくstrオブジェクトを作成します。リストは The Buffer API をサポートしていません。たぶん strip() を探して、末尾/先頭の空白を削除しましたか?

どちらの方法でも、new.strip()から得られるstr(結果のリストの要素を選択した場合はsplit())はencodedになるはずですオブジェクトは ハッシュアルゴリズムの初期化子に渡す前にエンコードする である必要があります。

new = new.strip() # or new.split()[index]
hs = hashlib.md5(new.encode()).hexdigest()