bkcrack 使用指南¶
概述¶
bkcrack 是一个强大的ZIP文件明文攻击工具,基于Biham和Kocher的已知明文攻击算法。它可以利用已知的明文内容来破解传统ZIP加密,恢复内部密钥并解密整个ZIP文件。
安装¶
macOS (Homebrew)¶
验证安装¶
核心概念¶
明文攻击原理¶
- 要求: 需要至少12字节的已知明文内容
- 目标: 恢复ZIP加密的三个32位内部密钥
- 适用: ZIP 2.0传统加密 (不适用于AES加密)
关键参数¶
- 密文ZIP (
-C): 包含加密文件的ZIP档案 - 明文内容 (
-p): 已知的明文文件或内容 - 目标文件 (
-c): 要攻击的加密文件名
基本用法¶
1. 明文攻击基础命令¶
参数说明: - -C encrypted.zip: 加密的ZIP文件 - -c target_file.txt: ZIP中要攻击的目标文件 - -p plaintext_file.txt: 本地的已知明文文件
2. 使用ZIP中的明文¶
参数说明: - -P plaintext.zip: 包含明文的ZIP文件 - -p known.txt: ZIP中对应的明文文件
3. 指定偏移量¶
参数说明: - -o 10: 明文相对于密文的偏移量(字节)
高级用法¶
1. 使用十六进制数据¶
参数说明: - -x 0 504b0304: 在偏移0处指定十六进制明文数据
2. 截断明文¶
参数说明: - -t 100: 只使用前100字节的明文
3. 继续之前的攻击¶
密钥恢复后的操作¶
1. 创建新的可解密ZIP¶
参数说明: - -k: 三个恢复的内部密钥 - -U decrypted.zip: 输出的新ZIP文件 - newpassword: 为新ZIP设置的密码
2. 直接解密文件¶
参数说明: - -d output.txt: 直接解密输出到文件
3. 恢复原始密码¶
参数说明: - -r 8: 密码长度 - ?a: 字符集(a=所有ASCII可打印字符)
实战案例:破解download.zip¶
背景¶
我们有两个文件: - download.zip: 加密的ZIP文件,包含secret1.txt和secret2.txt - download.txt.zip: 未加密的ZIP文件,包含已知明文download.txt
步骤1: 分析目标文件¶
输出:Archive: /Users/ss/Downloads/download.zip
Length Date Time Name
--------- ---------- ----- ----
42 04-23-2024 14:43 secret1.txt
44 04-23-2024 14:47 secret2.txt
--------- -------
86 2 files
Archive: /Users/ss/Downloads/download.txt.zip
Length Date Time Name
--------- ---------- ----- ----
44 09-28-2025 14:20 download.txt
427 09-28-2025 14:20 __MACOSX/._download.txt
--------- -------
471 2 files
步骤2: 提取已知明文¶
# 提取明文内容
mkdir -p /tmp/plaintext_attack
unzip /Users/ss/Downloads/download.txt.zip -d /tmp/plaintext_attack/
# 查看明文内容
cat /tmp/plaintext_attack/download.txt
步骤3: 关键发现¶
注意到两个文件的大小: - secret2.txt: 44字节 - download.txt: 44字节
大小相同!这意味着secret2.txt很可能包含相同的内容。
步骤4: 准备明文文件¶
# 创建与目标文件同名的明文文件
mkdir -p /tmp/plaintext_files
echo -n "Hello, but what you're looking for isn't me." > /tmp/plaintext_files/secret2.txt
# 验证文件大小
wc -c /tmp/plaintext_files/secret2.txt
步骤5: 执行明文攻击¶
攻击过程输出:
bkcrack 1.8.0 - 2025-08-18
[14:24:39] Z reduction using 37 bytes of known plaintext
100.0 % (37 / 37)
[14:24:39] Attack on 207115 Z values at index 6
...
Keys: e0c271a4 cbd76d08 8d707128
Found a solution. Stopping.
[14:25:11] Keys
e0c271a4 cbd76d08 8d707128
成功! 恢复的密钥:e0c271a4 cbd76d08 8d707128
步骤6: 解密文件¶
# 使用恢复的密钥创建新的可解密ZIP
bkcrack -C /Users/ss/Downloads/download.zip -k e0c271a4 cbd76d08 8d707128 -U /tmp/decrypted_files.zip newpassword
[14:25:29] Writing unlocked archive /tmp/decrypted_files.zip with password "newpassword"
100.0 % (2 / 2)
Wrote unlocked archive.
步骤7: 查看破解结果¶
输出: 输出:破解总结¶
🎉 攻击成功! - 攻击时间: 约32秒 - 使用明文: 37字节有效明文 - 恢复密钥: e0c271a4 cbd76d08 8d707128 - 真正目标: secret1.txt中的flag值 - 攻击效率: 10.0%完成时就找到解决方案
其他实战案例¶
案例1: 利用ZIP文件头信息¶
ZIP文件通常以固定的字节序列开始,可以利用这个信息:
案例2: 使用部分已知内容¶
如果你知道文件的部分内容(比如文件格式、常见开头等):
# 文本文件常见开头
echo -n "This is a " > partial_plain.txt
bkcrack -C encrypted.zip -c document.txt -p partial_plain.txt -o 0
性能优化¶
1. 使用更多明文¶
- 明文越多,攻击越快
- 建议至少37字节明文以获得最佳性能
2. 并行处理¶
bkcrack自动使用多核处理器进行并行计算
3. 内存使用¶
大型ZIP文件可能需要更多内存,确保系统有足够的RAM
常见问题与解决方案¶
1. "could not find end of central directory signature"¶
2. "Attack failed"¶
可能的原因: - 明文内容不匹配 - 文件使用AES加密而非传统加密 - 明文长度不足
3. 攻击时间过长¶
- 增加明文长度
- 确保明文正确对齐
- 使用更快的硬件
安全注意事项¶
合法使用¶
- 仅在合法授权的情况下使用
- 用于安全研究和教育目的
- 不得用于非法破解他人文件
防护措施¶
- 使用现代AES加密代替传统ZIP加密
- 使用强密码
- 避免在ZIP中包含可预测的内容
相关工具¶
其他ZIP破解工具¶
- pkcrack: 传统的明文攻击工具
- fcrackzip: 字典和暴力破解
- john: 通用密码破解工具
配合使用¶
# 使用john生成密码字典
john --wordlist=rockyou.txt --rules --stdout | head -1000 > custom.txt
# 使用fcrackzip进行字典攻击
fcrackzip -D -p custom.txt -u encrypted.zip
命令参考¶
主要参数¶
| 参数 | 长参数 | 描述 |
|---|---|---|
-C | --cipher-zip | 加密的ZIP文件 |
-c | --cipher-file | 目标加密文件 |
-P | --plain-zip | 明文ZIP文件 |
-p | --plain-file | 明文文件 |
-k | --keys | 内部密钥 |
-U | --unlock | 创建解锁的ZIP |
-d | --decipher | 解密文件 |
-o | --offset | 偏移量 |
-x | --extra | 十六进制明文 |
-t | --truncate | 截断大小 |
-r | --recover-password | 恢复原始密码 |
字符集选项 (用于密码恢复)¶
?l: 小写字母 (a-z)?u: 大写字母 (A-Z)?d: 数字 (0-9)?s: 特殊字符?a: 所有ASCII可打印字符
总结¶
bkcrack是一个功能强大的ZIP明文攻击工具,在有已知明文的情况下可以高效地破解传统ZIP加密。我们的实际案例展示了:
- 文件分析的重要性 - 通过对比文件大小找到关键线索
- 明文准备的技巧 - 正确创建匹配的明文文件
- 攻击的高效性 - 在短时间内成功恢复密钥
- 实际应用价值 - 成功获取目标flag内容
正确使用该工具需要:
- 充分的明文内容 (≥12字节,推荐≥37字节)
- 正确的文件对应关系
- 适当的参数配置
- 合法的使用授权
通过本指南和实际案例,你应该能够有效地使用bkcrack进行安全研究和教育目的的ZIP文件分析。记住始终在合法授权的前提下使用这些技术!