工具简介
ZipCracker是一款由Hx0战队开发的高性能多并发破解工具,专为破解密码保护的Zip文件而设计。它采用CRC32碰撞和字典攻击方式猜测Zip文件的明文或密码,并能成功提取其中的内容。这款工具具备识别"伪加密"Zip文件的能力,并能自动进行修复。因此,它非常适合在CTF比赛中使用。
PS:
1.程序会自动检查加密压缩包中的文件大小,若小于6字节,会主动询问用户是否使用CRC32进行Hash碰撞。
2.程序自带6000个常用的爆破字典,同时还会生成0-6位的纯数字字典。
下载工具
使用方法
1.伪加密识别及修复
python3 ZipCracker.py test01.zip
伪加密原理
zip伪加密是在文件头的加密标志位做修改,进而再打开文件时识被别为加密压缩包。
加密标识位:
在Zip文件的加密标识位中,奇数和偶数的区别在于最低位(least significant bit)的值。这个位决定了文件是否被加密。
如果加密标识位的最低位是奇数(值为1),表示文件被标记为加密。
如果加密标识位的最低位是偶数(值为0),表示文件未被标记为加密。
这个最低位的值是用来模拟Zip文件的伪加密。实际上,伪加密并不提供真正的数据保护,只是通过修改标志位来表示文件已经加密。
ZIP压缩源文件数据区:
50 4B 03 04:这是头文件标记(0x04034b50)
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
00 00:扩展记录长度
伪加密修复原理
程序通过检测zip文件的加密标志位,并对标识位进行适当修改,最后测试修改后的压缩包软件是否可以正常解压即可。
修复前的伪加密文件:test01.zip
修复后的正常无加密的文件:test01.zip
2.暴力破解-内置字典
python3 ZipCracker.py test02.zip
3.暴力破解-用户自定义字典
python3 ZipCracker.py test02.zip MyDict.txt
4.暴力破解-CRC32碰撞
python3 ZipCracker.py test03.zip
CRC32碰撞原理
CRC32是一种冗余校验码,它可以生成一个32位的校验值,用于验证数据的完整性。在文件中,比如PNG图像或ZIP压缩包中,CRC32被用作校验文件的完整性。
由于CRC32计算校验值时会考虑数据块中的每一位,即使只有一位发生变化,CRC32值也会完全不同。这导致了基于CRC32的攻击方法。
在攻击中,我们利用以下条件进行操作:
目标文件的内容很小,通常只有几个字节。 加密密码很长。
我们不是直接尝试破解压缩包的密码,而是尝试破解原始文件的内容,通常是可见的字符串。通过猜测和尝试不同的字符串,我们可以生成不同的CRC32值,然后与目标文件的CRC32值进行比较,以获取所需的信息。这样,我们可以绕过对加密密码的破解,直接攻击文件内容,从而达到获取目标信息的目的。这种攻击方法利用了CRC32的特性,即使只修改了文件内容的一小部分,CRC32值也会完全改变,从而使我们能够尝试不同的字符串来获取所需的信息。
本工具仅提供给安全测试人员进行安全自查使用,用户滥用造成的一切后果与作者无关,使用者请务必遵守当地法律 本程序不得用于商业用途,仅限学习交流。