我收到了一个MD5
哈希和一个Regular Expression
,它们具有相同的明文。
如何使用Regular Expression
破解MD5
哈希并查找MD5
背后的文字?
b89e49cab317f2681be60fb3d1c0f8f8
[(a|c|d)n-t\|]{8}
答案 0 :(得分:2)
这个想法是使用正则表达式作为模板并生成满足它的输入。
您可以搜索regex visualizer来查看此内容,但是该用户说的是任何字符()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解决此问题。 This tutorial帮助我设置了自定义字符集和掩码以执行攻击。
玩得开心!
答案 1 :(得分:1)
你不能破解它使用单向散列算法的md5哈希值。
答案 2 :(得分:1)
一种方法是生成正则表达式允许的19个字符的所有可能的八字符组合(重复)。通过计算md5哈希值并将其与您给出的哈希值进行比较来测试每种组合。
要检查的可能组合为13 ^ 8 = 815,730,721。在检查所有答案之前,很可能会找到答案。
我能够在笔记本电脑上鞭打一个小的Node.js程序,该程序在大约4分钟内找到了解决方案(我通过使用多个CPU内核来利用工人来分解问题)。
编辑:我认为正则表达式使用n-z
而不是n-t
,因此搜索空间实际上要小得多。