zip文件的已知明文攻击
这两天在看一本《网络空间安全技术-CTF那些事儿》,作者李舟军,机械工业出版社的书。
用的工具是bkcrack
看到zip文件已知明文攻击这里,就顺手试了下。下面是测试过程:
- 创建两个txt文件,一个叫test.txt,一个叫demo.txt
- 在test.txt中写入数字和字符,不要少于12个字节,最好20个字节以上
- demo.txt可以不用管,这里为了演示,假设这个文件中存在的内容才是我们感兴趣的。或者你让demo.txt作为已知明文文件也行,那就在这个文件中写入超过20个字节的字符
- 将这两个文件压缩到一个文件,输入解压密码,加密方法必须是ZipCrypto的方式,AES256是不能通过这样的方式攻击的。这里我压缩为tttt.zip
- 现在我有了已知明文,test.txt,还有一个不知道密码的zip文件tttt.zip
- 开始使用bkcrack来进行密钥流的爆破
- 原理就是密文=明文 XOR 密钥流,那么密钥流=明文 XOR 密文
- 过程如下,bkcrack有windows下的可执行文件
-C: 是加密zip压缩包的位置 (必须的)-c: 是加密zip压缩包文件的位置 (必须的)-p: 是明文文件的位置 (必须的)
如果没有-P则直接填入明文文件的位置
如果有-P则填入明文压缩包中的路径 ```cmd bkcrack.exe -C tttt.zip -c test.txt -p test.txt bkcrack 1.8.1 - 2025-10-25 [10:17:01] Z reduction using 7 bytes of known plaintext 100.0 % (7 / 7) [10:17:01] Attack on 850571 Z values at index 6 Keys: 78be59ed 077b1316 a39ccf04 39.1 % (332485 / 850571) Found a solution. Stopping. You may resume the attack with the option: –continue-attack 332485 [10:20:35] Keys 78be59ed 077b1316 a39ccf04
//用获得的密钥流来创建一个新的压缩文件,密码我们自己设定为123456.
bkcrack -C tttt.zip -k 78be59ed 077b1316 a39ccf04 -U d_tttt.zip 123456 bkcrack 1.8.1 - 2025-10-25 [10:24:04] Writing unlocked archive d_tttt.zip with password “123456” 100.0 % (2 / 2) Wrote unlocked archive. ```
下来就可以用123456作为解压缩密码解压出来test.txt和demo.txt了,也能打开看到我们期望的demo.txt中的信息了。
书中提到,黑客在做类似的事情的时候,一般都看压缩包中很少变化的许可文件,因为这些文件大部分在和以前版本的一样。可以尝试破解。