Featured image of post misc-压缩包明文爆破

misc-压缩包明文爆破

压缩包明文爆破

前置知识

明文攻击核心条件

  • 加密方式:仅支持ZipCrypto加密(AES 加密不支持)
  • 压缩模式:Store(仅存储)模式成功率 100%,Deflate(压缩)模式需匹配压缩算法
  • 已知明文:至少 12 字节(其中 8 字节连续),可通过已知片段 + 特征字符凑整

工具准备

使用工具bkcrack

下载链接https://github.com/kimci86/bkcrack/releases

下载完之后解压缩,将.exe文件的目录添加到环境变量中即可

例题

给了一个.txt和.zip文件

zip

flag.txt内容是txt

  • 先查看压缩包基础信息
1
2
3
4
5
6
7
bkcrack -L flag.zip

bkcrack 1.8.1 - 2025-10-25
Archive: flag.zip
Index Encryption Compression CRC32    Uncompressed  Packed size Name
----- ---------- ----------- -------- ------------ ------------ ----------------
    0 ZipCrypto  Store       1c277376           29           41 flag.txt
  • 分析: 加密方式:ZipCrypto(支持明文攻击) 压缩模式:Store(仅存储,无压缩,攻击成功率 100%) 文件信息:flag.txt原始大小 29 字节,CRC32 校验值1c277376 结论:完全满足明文攻击条件,是最优破解场景

  • 整理已知明文与十六进制转换 根据题目给出的flag.txt格式,提取已知字符并转换为十六进制(ASCII 编码),用于攻击:

    • 已知明文合计 12 字节(8+4),满足bkcrack最低要求(至少 12 字节,含 8 字节连续)

    • 字节偏移为flag.txt文件内相对偏移(非压缩包全局偏移)

    • 构建指令

    • 1
      2
      
      # 核心攻击命令:拼接开头+末尾已知明文
      bkcrack -C flag.zip -c flag.txt -x 0 "666C61677B593075" -x 25 "2121217D"
      

      a8bed6c1-2e65-47cb-8cb4-2a124efc7cbe

  • 爆破成功打开解压缩后的文件

    2

bkcrack常用指令

一、前置信息查询(必做!确认攻击可行性)

指令 作用 示例
bkcrack -L 加密包.zip 列出压缩包内文件的加密算法、压缩模式、CRC32、大小等,判断是否支持明文攻击(仅 ZipCrypto 有效) bkcrack -L flag.zip
bkcrack -h 查看所有参数说明(查用法) bkcrack -h

关键输出判断:

  • 支持攻击:Encryption: ZipCrypto (Zip 2.0) + Compression: Store/Deflate
  • 不支持:Encryption: AES-xxx (WinZip)

二、核心:明文攻击(获取密钥)

1. 完整明文攻击(已知完整明文文件,成功率 100%)

适用于有压缩包内某文件的完整明文版本(如 readme.txt)。

1
bkcrack -C 加密包.zip -c 包内文件名 -p 本地明文文件

参数解释

  • -C:指定加密压缩包路径(大写 C)
  • -c:压缩包内目标文件名(精确匹配,区分大小写,小写 c)
  • -p:本地完整明文文件路
1
bkcrack -C flag.zip -c readme.txt -p readme_plain.txt

2. 部分明文攻击(CTF 最常用,已知片段)

适用于仅知道文件部分内容(如开头 / 结尾),需凑足 ≥12 字节(含 ≥8 字节连续)

1
2
3
4
# 单段明文(偏移+十六进制)
bkcrack -C 加密包.zip -c 包内文件名 -x 偏移量 明文十六进制
# 多段明文(拼接已知片段,凑12字节)
bkcrack -C 加密包.zip -c 包内文件名 -x 偏移1 明文1十六进制 -x 偏移2 明文2十六进制

参数解释-x(eXtend)指定「文件内相对偏移」+ 明文十六进制(无空格)。

示例 1(已知开头 8 字符 + 结尾 4 字符)

1
bkcrack -C flag.zip -c flag.txt -x 0 "666C61677B593075" -x 25 "2121217D"

三、密钥操作(攻击成功后)

1
bkcrack -C 加密包.zip -c 包内文件名 -k 密钥1 密钥2 密钥3 -d 输出文件

参数解释

  • -k:填入攻击得到的 3 组密钥(如 33b19021 93c4a78d 9ceed931)
  • -d:解密后输出文件路径
1
bkcrack -C flag.zip -c flag.txt -k 33b19021 93c4a78d 9ceed931 -d flag_decrypted.txt

2. 生成无密码 / 新密码压缩

1
2
3
4
# 生成无密码压缩包
bkcrack -C 加密包.zip -k 密钥1 密钥2 密钥3 -U 新压缩包.zip
# 生成带新密码的压缩包
bkcrack -C 加密包.zip -k 密钥1 密钥2 密钥3 -U 新压缩包.zip 新密码

参数解释-U(Update)生成新包,可选指定新密码。

1
2
3
4
# 无密码
bkcrack -C flag.zip -k 33b19021 93c4a78d 9ceed931 -U new_flag.zip
# 带新密码123456
bkcrack -C flag.zip -k 33b19021 93c4a78d 9ceed931 -U new_flag.zip 123456