1

我对 python 和密码学非常感兴趣,我想知道在 python 中破解哈希的最简单方法是什么。

我想构建一个可以破解这个哈希的小python脚本:21232f297a57a5a743894a0e4a801fc3 这只是“管理员”。

我需要经过什么过程来猜测这个哈希代表什么?

我已经阅读了有关 md5 的信息,此时我才刚刚开始学习密码学背后的方法,但它们也涉及到了我目前还不了解的深度计算机科学。

我在这里做了一些研究:http: //nsfsecurity.pr.erau.edu/crypto/md5.html

4

2 回答 2

6

您可以像这样输出一个十六进制 md5:

>>> from hashlib import md5
>>> md5('admin').hexdigest()
'21232f297a57a5a743894a0e4a801fc3'

如果您有一个单词列表,您可以一个一个地尝试它们,如果它们的 md5 与您想要的匹配,则输出。(这被称为字典攻击)

>>> words = 'test', 'alex', 'steve', 'admin'
>>> for word in words:
...     if md5(word).hexdigest() == '21232f297a57a5a743894a0e4a801fc3':
...         print word
...         break
... 
admin

如果你真的想破解 MD5,你会在 GPU 上得到更好的结果——试试像OCLHashCat这样的工具

于 2013-06-17T06:59:29.090 回答
2

http://www.google.com/search?q=md5+lookup

>>> import requests
>>> import lxml.html
>>> 
>>> def reverse_md5(digest):
...     r = requests.get('http://www.md5-lookup.com/index.php?q={}'.format(digest))
...     root = lxml.html.fromstring(r.content)
...     for x in root.cssselect('#LSResult table tr')[4:-3]:
...         return x.find('td').text_content() 
...     # fallback to brute force.
...     # ...
... 
>>> reverse_md5('21232f297a57a5a743894a0e4a801fc3')
'admin'
>>> reverse_md5('21232f297a57a5a743894a0e4a801fc4') # lookup fail
>>>
于 2013-06-17T07:11:53.550 回答