-4

我收到了一个MD5哈希值和一个Regular Expression具有相同明文的哈希值。如何使用Regular Expression破解MD5哈希值并找到后面的文本MD5

b89e49cab317f2681be60fb3d1c0f8f8
[(a|c|d)n-t\|]{8}
4

3 回答 3

2

这个想法是使用正则表达式作为模板并生成满足它的输入。

您可以搜索一个正则表达式可视化器来查看这一点,但它所说的是任何字符()acd|或介于nt(包括)之间的任何字符,以任何顺序重复八次。我在 hashcat 中对此进行了测试,尽管它看起来意味着别的东西,但正则表达式是正确的。更短的写法是[acd|()n-t]{8}.

因此,您开始使用这些值生成 8 个字符串并获取其中的 md5。您几乎可以使用任何编程语言来执行此操作,但 Python 是一个不错的选择。查找 hashlib 库,它有一个函数 md5。您将在其上调用函数 hexdigest 并将其与提供的哈希值进行比较。

>>> import hashlib
>>> hashlib.md5(b'cybering').hexdigest()
'61e4feebe66ad22349e292d1462afd3a'

此外,如果您想使用破解软件,请查找 JohnTheRipper 或 hashcat。您应该能够为他们提供字典并让它尝试破坏散列。我能够在大约 5 秒内在我的 980ti 上使用 hashcat 解决这个问题。本教程帮助我设置了自定义字符集和掩码来执行攻击。

玩得开心!

于 2020-02-27T22:41:00.403 回答
1

一种方法是生成正则表达式允许的 19 个字符的所有可能的 8 个字符组合(重复)。通过计算 md5 散列并将其与给定的散列进行比较来测试每个组合。

那将是 13^8 = 815,730,721 种可能的组合来检查。在检查所有这些之前可能会找到答案。

我能够在我的笔记本电脑上编写一个小 Node.js 程序,它在大约 4 分钟内找到了解决方案(我使用工作人员将问题分解以利用多个 CPU 内核)。

编辑:我认为正则表达式有n-z而不是n-t所以搜索空间实际上要小得多。

于 2020-02-28T06:17:19.790 回答
0

您无法破解它使用单向散列算法的 md5 散列值。

于 2012-11-04T17:25:44.110 回答