Próbuję zbudować cracker md5 do ćwiczeń. Zanim przejdziemy dalej tu jest mój kodu:Jak mogę kodować binarnie ciąg znaków w python?
def offline_wordlist_attack(list_path):
with fileinput.input(files=(list_path)) as wordlist:
for word in wordlist:
md5_hash_object = hashlib.md5() # constructing an md5 hash object
md5_hash_object.update(binascii.a2b_uu(word))
word_digest = md5_hash_object.digest() # performing the md5 digestion of the word
print(word_digest) # Debug
Mój problem jest z md5_hash_object.update(binascii.a2b_uu(word))
. Dokumentacja Python 3 hashlib stwierdza, że ciąg przekazany do update()
powinien być w reprezentacji binarnej. Dokumentacja używa m.update(b"Nobody inspects")
jako przykładu. W moim kodzie nie mogę po prostu dołączyć b
przed zmienną word
. Więc starałem się korzystać z biblioteki binascii, ale biblioteka też ma zanotować w dokumentacji treści:
Uwaga
kodowania i dekodowania funkcje nie akceptuje ciągi Unicode. Tylko bytestring i bytearray obiekty mogą być przetwarzane.
Czy ktoś może mi w tym pomóc? Robi się lepiej ode mnie.
uwaga: 'fileinput.input()' może być zbyt wolne w twoim przypadku. Możesz użyć 'md5 (word) .digest()' bez jawnego 'update()'. – jfs