ZIP 明文爆破笔记
ZIP 明文爆破笔记
一、核心原理
1. 加密逻辑(ZipCrypto 算法)
- 加密:明文 XOR 密码流 = 密文
- 解密:密文 XOR 密码流 = 明文
- 反推密码流:明文 XOR 密文 = 密码流
2. XOR(异或)规则
二进制运算:相同为 0,不同为 1
例:a(01100001)XOR 5(00000101)= d(01100100);d XOR 5 又变回 a
3. 明文爆破本质
已知明文 + 对应密文→算密码流→反推 ZIP 的 3 个核心密钥(key0/key1/key2)→用密钥解密整个 ZIP
前提:仅对 ZIP 传统加密有效,AES256 加密无效!
二、bkcrack 使用条件
三、题目
bkcrack 无法直接破解 ZIP 密码,必须靠 “已知明文”和“你已有密文” 反推加密密钥,再用密钥解密
不管是字符明文还是文件头明文,核心是:
准备明文文件 → 得密钥 → 用密钥解密
区别只在 “明文来源”—— 字符明文来自题目暗示,文件头明文来自格式固定规则。
题目 1:字符明文爆破(已知部分字符内容)
场景
题目给了加密 ZIP 包flag_360.zip,里面有flag.txt,且已知flag.txt里包含 “lag {16e374f6…” 这样的字符片段。
步骤 1:准备已知明文
1 | # 把8个连续明文“lag{16e3”存成文件(bkcrack需要文件形式的明文) |
执行后得到 “74f6” 对应的十六进制37346636,记下来。
步骤 2:解密钥
偏移量=你的明文第一个字符的位置
1 | bkcrack -C flag_360.zip # 指定要破解的ZIP包 |
运行后得到 3 个密钥,比如b21e5df4 ab9a9430 8c336475。
步骤 3:解密文件
1 | bkcrack -C flag_360.zip # 原加密ZIP包 |
打开解密后的flag.txt就能拿到 flag。
题目 2:文件头固定明文爆破(PNG 文件)
场景
题目给了加密 ZIP 包png4.zip,里面有2.png,无其他明文信息,但知道 PNG 文件头是固定的。
步骤 1:准备 PNG 固定文件头明文
1 | # PNG文件头的固定十六进制转成二进制文件(bkcrack需要二进制明文) |
(
这个png_header文件里存的就是 PNG 文件开头的二进制数据。
步骤 2:爆破密钥
1 | bkcrack -C png4.zip # 指定加密ZIP包 |
运行后得到密钥,比如c9ce002a 9749123a 1d9079b9。
步骤 3:解密 PNG 文件
1 | bkcrack -C png4.zip # 原加密ZIP包 |
打开2_dec.png,里面可能藏着 flag(比如图片里的文字、隐写内容)。
题目 3:JPG 文件头固定明文爆破(举一反三)
场景
题目给了加密 ZIP 包jpg5.zip,里面有3.jpg,无其他明文信息。
步骤 1:准备 JPG 固定文件头明文
(把字符ASCII二进制转成十六进制对应二进制)
1 | # JPG文件头固定十六进制:FFD8FFE000104A4649460001 |
步骤 2:爆破密钥
1 | bkcrack -C jpg5.zip # 加密ZIP包 |
步骤 3:解密文件
1 | bkcrack -C jpg5.zip -c 3.jpg -k [爆破出的密钥] -d 3_dec.jpg |
打开解密后的 JPG 文件获取 flag。
bf6题解:
1.压缩包,放kali,有png,用bk
2.准备png开头 明文文件
echo 开头码 | xxd -r ps > 明文文件
3.得到密钥
bkcrack -C -c -p -o
4.解密压缩文件
bkcrack -C -c -k -d
5.发现图片有隐藏的10编码,steg打开得到乱码,图片comment里面有密钥,解码后flag
二维码
1
一个完整的 JPG 文件由 FF D8 开头,FF D9结尾
在使用图片浏览器时,图片浏览器会忽略 FF D9 以后的内容,因此可以在 JPG 文件中加入其他文件。其他文件隐藏如png.gif文件隐藏也是这个道理。
1 | # ========== 前期定位工具 & 切换工作目录 ========== |
cs

