压缩包破解
手上有个rar的压缩包,已经有10多年了一直没有解开,我记得还是2层加密的,而且密码好像是40位以上的,最近空下来了想着看看是否可以解开,不过最后还是一样无法解开。
原生密码破解
网上有很多这样的工具,比如 https://hzgzs.lanzoui.com/s/yasuopj
不过这些第三方的都非常可疑,至少下载下来发现很多都要主动去连外部一些 域名和ip, 具体传什么也不知道,所以大家小心使用,我一般都放入到虚拟机里搞。
数据字典
因为大概知道密码的一些关键字,于是想着先生成一个字典再去搞。Kali下常见的是Crunch,简单试用了一下,发现不是很符合自己需求。因为它是默认把后面字符串里的每个字符都拉出来进行拼接的。 如果你通过-q 进行导入的话,那就没法生成固定长度的字符串,而是所有字符串全部随机拼接起来,长度都是相同的。这个后面可以看看源码修改一下。
1 | crunch <min> <max> [options] |
查了半天发现没有合适的,这个就用python自己实现生成一下也行。
1 | from itertools import permutations |
Examples | Results |
---|---|
product('ABCD', repeat=2) |
AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD |
permutations('ABCD', 2) |
AB AC AD BA BC BD CA CB CD DA DB DC |
combinations('ABCD', 2) |
AB AC AD BC BD CD |
combinations_with_replacement('ABCD', 2) |
AA AB AC AD BB BC BD CC CD DD |
破解工具
生成出来后就找个工具遍历破解就行了。有一个rarcrack,这个工具它默认字典就是代码里写了的,默认就是数字字符什么的。
https://github.com/ziman/rarcrack/blob/master/rarcrack.c
所以想调用字典就直接用unrar就行,或者改一下raracrack的代码,让它读入字典文件就行。
不过有个fcrackzip是可以自己指定字典的,但是又只能解压zip和7z格式。
hash破解
后来查了一下,现在又都开始搞hash破解,这个其实就是获取加密文件的密码的hash值然后撞hash值进行破解。
获取文件hash值
这里首先是用到JohnTheRipper
https://github.com/openwall/john/tags
使用zip2john就是为了获取zip包的hash值。 当然其实JohnTheRipper本身也可以破解,只是跟hashcat这种使用GPU计算的要差一点。
1 | wget https://github.com/openwall/john/archive/refs/tags/1.9.0-Jumbo-1.tar.gz |
针对hash值破解
后面就是hashcat出马了
1 | wget https://hashcat.net/files/hashcat-6.2.5.7z |
hashcat还是比较复杂的,参数这些特别多。 还有涉及到opencl, cuda, amd的rocm等等。 需要好好玩一下。
特别注意是一定要指定对对应的hash模式,这个非常重要的。 这里的-m 就是指定对应的模式
https://hashcat.net/wiki/doku.php?id=example_hashes
-a 就是指定破解方式
Mode | ||
---|---|---|
0 | Straight | 单个字典破解 |
1 | Combination | 使用多个字典进行破解 |
3 | Brute-force | 这里其实就是Mask Attack,也就是掩码破解 |
6 | Hybrid Wordlist + Mask | 字典+掩码破解 |
7 | Hybrid Mask + Wordlist | 掩码+字典破解 |
9 | Association | 联合方式 |
这里发现自己在虚拟机里,还搞不了这个,只能先退出来直接在ubuntu上搞.
我自己安装的cuda版本是12.3
下面这个是就是正式执行的结果,总共就花了几秒就完成了。
仅仅4秒就完成了。不过这个是知道长度和字符串类型的情况下。
虽然测试通过了,但是我的那个rar文件应该还是没救了,那个是40位以上,包含数字大小写字母和符号的。就等以后量子计算机吧。