MD5哈希和正则表达式

时间:2012-11-04 17:23:41

标签: md5

我收到了一个MD5哈希和一个Regular Expression,它们具有相同的明文。 如何使用Regular Expression破解MD5哈希并查找MD5背后的文字?

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

3 个答案:

答案 0 :(得分:2)

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

您可以搜索regex visualizer来查看此内容,但是该用户说的是任何字符()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解决此问题。 This tutorial帮助我设置了自定义字符集和掩码以执行攻击。

玩得开心!

答案 1 :(得分:1)

你不能破解它使用单向散列算法的md5哈希值。

答案 2 :(得分:1)

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

要检查的可能组合为13 ^ 8 = 815,730,721。在检查所有答案之前,很可能会找到答案。

我能够在笔记本电脑上鞭打一个小的Node.js程序,该程序在大约4分钟内找到了解决方案(我通过使用多个CPU内核来利用工人来分解问题)。

编辑:我认为正则表达式使用n-z而不是n-t,因此搜索空间实际上要小得多。