我收到了一个MD5
哈希值和一个Regular Expression
具有相同明文的哈希值。如何使用Regular Expression
破解MD5
哈希值并找到后面的文本MD5
?
b89e49cab317f2681be60fb3d1c0f8f8
[(a|c|d)n-t\|]{8}
我收到了一个MD5
哈希值和一个Regular Expression
具有相同明文的哈希值。如何使用Regular Expression
破解MD5
哈希值并找到后面的文本MD5
?
b89e49cab317f2681be60fb3d1c0f8f8
[(a|c|d)n-t\|]{8}
这个想法是使用正则表达式作为模板并生成满足它的输入。
您可以搜索一个正则表达式可视化器来查看这一点,但它所说的是任何字符()acd|
或介于n
和t
(包括)之间的任何字符,以任何顺序重复八次。我在 hashcat 中对此进行了测试,尽管它看起来意味着别的东西,但正则表达式是正确的。更短的写法是[acd|()n-t]{8}
.
因此,您开始使用这些值生成 8 个字符串并获取其中的 md5。您几乎可以使用任何编程语言来执行此操作,但 Python 是一个不错的选择。查找 hashlib 库,它有一个函数 md5。您将在其上调用函数 hexdigest 并将其与提供的哈希值进行比较。
>>> import hashlib
>>> hashlib.md5(b'cybering').hexdigest()
'61e4feebe66ad22349e292d1462afd3a'
此外,如果您想使用破解软件,请查找 JohnTheRipper 或 hashcat。您应该能够为他们提供字典并让它尝试破坏散列。我能够在大约 5 秒内在我的 980ti 上使用 hashcat 解决这个问题。本教程帮助我设置了自定义字符集和掩码来执行攻击。
玩得开心!
一种方法是生成正则表达式允许的 19 个字符的所有可能的 8 个字符组合(重复)。通过计算 md5 散列并将其与给定的散列进行比较来测试每个组合。
那将是 13^8 = 815,730,721 种可能的组合来检查。在检查所有这些之前可能会找到答案。
我能够在我的笔记本电脑上编写一个小 Node.js 程序,它在大约 4 分钟内找到了解决方案(我使用工作人员将问题分解以利用多个 CPU 内核)。
编辑:我认为正则表达式有n-z
而不是n-t
所以搜索空间实际上要小得多。
您无法破解它使用单向散列算法的 md5 散列值。