2016-07-04 133 views
-3
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: 
     hs = hashlib.md5(new.encode()).hexdigest() 
     if hs == md: 
      print("MD5 HASH CRACKED : ", new) 

    print("Sorry :(Don't Cracked.") 

執行不工作。 單詞表:MD5餅乾不工作python3

sadasda 
asdasda 
sdasd 
as 
da 
sdasd 
asd 
ahmet 
asdasf 
knknkjnbhb 
klasda 

輸出:

MD5 Hash: cdb5efc9c72196c1bd8b7a594b46b44f 
Wordlist: md.txt 
Sorry :(Don't Cracked. 

哪兒來的錯誤呢?我看不到。但如果只有單詞表:

ahmet 

輸出:

MD5 Hash: cdb5efc9c72196c1bd8b7a594b46b44f 
Wordlist: md.txt 
MD5 HASH CRACKED : ahmet 
Sorry :(Don't Cracked. 

回答

2

從您的文件中的線包括一個換行符。那換行顯著:

>>> from hashlib import md5 
>>> md5(b'ahmet').hexdigest() 
'cdb5efc9c72196c1bd8b7a594b46b44f' 
>>> md5(b'ahmet\n').hexdigest() 
'ac5bd810592f14278b5e06fc20d88c23' 

先取下換行:

hs = hashlib.md5(new.rstrip('\n').encode()).hexdigest() 

而不是讓Python的解碼文件的線條,然後再編碼,只需以二進制方式打開該文件。您可以通過文件直接循環,沒必要在這裏呼籲fileobj.readlines():該行的

with open(liste, 'rb') as ac: 
    for line in ac: 
     line = line.rstrip(b'\n') 
     hs = hashlib.md5(line).hexdigest() 
     if hs == md: 
      print("MD5 HASH CRACKED : ", line.decode('utf8')) 

我加解碼也爲印刷。

+0

無法正常工作。 [http://i.imgur.com/DXiMnBN.jpg],[http://i.imgur.com/n96oqQe.jpg] – Ahmet

+0

@Ahmet:你還在編碼。刪除'.encode()'調用。 –

+0

@Ahmet:我的代碼中實際上也有一個錯誤;我忘了將'bytes'對象傳遞給'bytes.rstrip()'。現在更正。 –