破解Hash之Python範例程式
這篇文章主要用一個小程式示範如何用 Python輕易的破解 Hash
以MD5為例子, 透過這個例子介紹相關資源
準備工作
我們知道 MD5 單向的 Hash 破解的方式倒不是將 Hash 重新計算為明文
破解的方式主要為準備一個字典檔案, 針對字典檔案加以 MD5 Hash
將字典檔案 MD5 Hash 的值與原始 MD5 Hash 值相互比較
要完成這個小程式, 我們主要透過這個 hashlib來完成
https://docs.python.org/2/library/hashlib.html
另外可以在下列資源取得相關的字典檔案
- https://packetstormsecurity.com/Crackers/wordlists/dictionaries/
- https://raw.githubusercontent.com/xpn/CUDA-MD5-Crack/master/wordlist.txt
- http://md5decrypt.net/en/Password-cracking-wordlist-download/
範例程式
[pastacode lang=”python” manual=”%23!%2Fusr%2Fbin%2Fpython%0Aimport%20hashlib%0A%0Atarget%20%3D%20raw_input(%22Enter%20the%20MD5%20hash%20value%3A%20%22)%0Adictionary%20%3D%20raw_input(%22Enter%20the%20dictionary%20file%20name%3A%20%22)%0A%0A%0Adef%20main()%3A%0A%20%20%20%20with%20open(dictionary)%20as%20fileobj%3A%0A%20%20%20%20%20%20%20%20for%20line%20in%20fileobj%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20line%20%3D%20line.strip()%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20hashlib.md5(line).hexdigest()%20%3D%3D%20target%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20print%20%22MD5%20Hash%20value%20cracked%20%25s%3A%20The%20value%20is%20%25s%22%20%25%20(target%2C%20line)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22%0A%20%20%20%20print%20%22Failed%20to%20crack%20the%20MD5%20value.%20Try%20other%20dictionary.%22%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20main()” message=”” highlight=”” provider=”manual”/]