前言
先阅读这两篇文章:
ZIP已知明文攻击深入利用
加密Zip包(Deflate + ZipCrypto)攻击小结
总的来说:
1、使用明文攻击;
2、只能破解ZipCrypto算法压缩的zip;
3、你必须有一个与加密压缩包里一样内容的文件(crc相等,即为一样),且文件大于12个字节;
解密
下载解密工具bkcrack,Ubuntu、Windows、Mac这三个系统有已编译好的文件,下载对应的系统就好了。这里我选择Windows的,我的系统是win10。
win系统需要安装vcruntime140.dll(官方)
- x86: vc_redist.x86.exe
- x64: vc_redist.x64.exe
- ARM64: vc_redist.arm64.exe
运行命令破解:
1 2 |
//.\bkcrack.exe -C 加密压缩包名 -c "(以加密压缩包为起点)加密文件路径" -P 明文压缩包名 -p "(以明文压缩包为起点)明文文件路径" .\bkcrack.exe -C jiami.zip -c "my/file.txt" -P ming.zip -p "file.txt" |
得到keys
注意:keys不是解压密码,只是加密压缩的密钥,本教程是不能破解出压缩密码的。
1 2 3 4 5 6 7 8 9 10 |
bkcrack 1.0.0 - 2020-11-11 Generated 4194304 Z values. [15:01:23] Z reduction using 180728252 bytes of known plaintext 0.0 % (38555 / 180728252) 186 values remaining. [15:01:39] Attack on 186 Z values at index 180690447 Keys: c959b9a0 323118d f017a6d4 100.0 % (186 / 186) [15:01:40] Keys c959b9a0 323118d f017a6d4 |
使用keys解压出文件
1 2 |
//bkcrack -C 加密压缩包 -c "(加密压缩包里)需要解压的文件路径" -k 跑出来的keys -d 输出的文件路径 bkcrack -C jiami.zip -c "my/file.txt" -k 348e6771 cecf3c76 51a09805 -d middlefile |
注意:middlefile文件是乱码的,需要使用工具把它转换一下。
转换乱码文件
1 2 |
// python (bkcrack文件夹下)/tools/inflate.py < 乱码文件>输出文件路径 python ./tools/inflate.py < middlefile >file.txt |
到此,已完成。
其它问题
1、提示压缩包路径不存在
这种情况一般是有路径或文件名含有中文,如果路径没错,那是因为压缩包里的中文已经乱码,bkcrack是不会自动为中文转码的,解决方法是使用没有中文的路径或文件,如果不能避开乱码的中文,就只能放弃了。
2、提示加密文件比明文文件大或小
这是因为明文压缩后的大小比加密压缩文件相差太大。以安卓的ZArchiver为例,zip压缩方式有无压缩、最快、快速、标准、较好、最佳,不同的压缩方式压缩后明文文件的大小都不一样,试一遍,找一个压缩后明文文件的大小与加密文件大小相近就可以了。