我正在做一个 CTF 样本,他们给了我的文件哈希,我通过JtR运行它,我得到了我的密码。事情是,哈希给了我,有没有办法找到该文件的散列,如果没有给出? 有2分需要解决才能打破密码,HASH 和加密算法。
我一直在使用密码保护的 zip 文件练习,所以我认为是使用 zip 2.0 或某种或某种 AES,我可以借助谷歌的帮助。
不过,我不知道如何访问该 hashed 数据的 zip 文件的元数据。由于它是一个标准,因为压缩某些东西在存储密码时不需要使用算法。然而,需要一些排序的哈希。
有谁知道如何使用这个密码保护的 zip 文件的例子,知道这是如何做的?
我现在使用一个 macbook pro。(成才按:像是外文翻译过来的,很多句子不通顺。)
文件中没有提取密码哈希值,约翰开膛手(JtR)并没有这样做。您可以下载 JtR 的代码,以了解它是如何完成的。这里是一个关于如何获得所谓的“非哈希”信息的一个小文章。.zip 和 .rar 文件使用 zip2john 和 rar2john: http://www.cybercrimetech.com/2014/07/how-to-cracking-zip-and-rar-protected.html 为了纠正这个不当行为,JtR 实际上并没有从文件中“检索出哈希”。它从文件中提取某些信息。例如,如 rar2john 代码中所述:
Output Line Format:
*
* For type = 0 for files encrypted with "rar -hp ..." option
* archive_name:$RAR3$\*type\*hex(salt)\*hex(partial-file-contents):type::
::archive_name
*
* For type = 1 for files encrypted with "rar -p ..." option
* archive_name:$RAR3$\*type\*hex(salt)\*hex(crc)\*PACK_SIZE\*UNP_SIZE\*0\*
archive_name\*offset-for-ciphertext\*method:type::file_name
*
* or
*
* archive_name:$RAR3$\*type\*hex(salt)\*hex(crc)\*PACK_SIZE\*UNP_SIZE\*1\*
hex(full encrypted file)\*method:type::file_name
因此,如上所示,不提取“密码哈希”。此外,完全不相信该文件是“完全”加密的(如其他人回答类似问题所提出的)。相反,检索关键的未加密和加密的文件项(如盐)以生成“非散列”。这些项目由 JtR 使用各种密码猜测来测试解密。它使用 zip 或 rar 密码哈希生成函数从猜测中创建一个哈希值,这反过来用于生成 crypt 键值。然后,生成的密码密钥值用于针对加密文件的小型,抽取和定义良好的部分进行测试。
所以,虽然 JtR 不是“提取密码哈希”,可以发送到任何 ol’ 密码哈希检查器 – 彩虹表查找 – 东西,它是做最好的事情 – 提取关键的破解信息。破解的步骤基本上是:
- 从密码猜测生成一个散列;
- 添加一些额外的步骤来检查解密是成功还是失败(很多失败);以及
- 重复,使 rar 破解如此困难的是每个 rar 文件的不同盐(salt),更重要的是,在执行解密测试之前需要的大量可变数量的哈希迭代。较新的 zip 过程是类似的,但迭代不是可变的 – 最后我检查 – 使它更容易一些。
这是“如何完成”的问题,答案是“你不”得到 zip 文件的真正密码哈希,直到文件被破解为止。
问题的 CTF 练习的例子是误导性的。给定的“哈希”可能是一个简单的密码哈希准备的练习,以简化任何 ol’cracker 的学生的破解过程或它可能是一个特定的 zip2john “非哈希”,导致一个相当容易的密码 JtR 猜测 – 短,常见或两者。提问者没有提供“哈希”或“哈希文件”来验证任一种方式。