【问题标题】:MD5 hashes and Regular ExpressionsMD5 哈希和正则表达式
【发布时间】:2012-11-04 17:23:40
【问题描述】:

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

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

【问题讨论】:

  • 本网站不适合您的目的(明确用于上述问题)
  • 为你制作这个谜题的人难道不打算让你自己解决吗?
  • 可以让人们大致了解如何在不为他们解决问题的情况下解决问题。请努力使 stackoverflow 成为一个更受欢迎的环境。

标签: md5


【解决方案1】:

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

您可以搜索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 帮助我设置了自定义字符集和掩码来执行攻击。

玩得开心!

【讨论】:

  • 是的。它是有效的正则表达式,但它看起来不像作者想要的那样。但谁知道呢。
  • 13 个选项,8 个字符; 13^8 = 815,730,721 种可能的组合。不应该花太多时间。很好奇需要多长时间。呵呵
  • @IMTheNachoMan 在 980ti 上使用 hashcat 5 秒。
【解决方案2】:

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

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

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

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

【讨论】:

  • 是的,也许他应该使用正则表达式来找出原始字符串的域,然后对其进行暴力破解。但是,在 2012 年,我怀疑蛮力可能比今天花费的时间更长。
  • 你从哪里得到的 19 个字符?我得到了 13 个允许的字符:()acd|nopqrst
【解决方案3】:

你无法破解它使用单向哈希算法的 md5 哈希值。

【讨论】:

  • 他告诉我使用正则表达式来“反转”或“破解”md5 哈希并找到文本..
猜你喜欢
  • 2010-09-27
  • 1970-01-01
  • 2013-05-04
  • 2018-01-12
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 2011-07-15
相关资源
最近更新 更多