[ misc 知识点 ] ZIP 伪加密原理
2026-08-22 20:05:38

一、zip文件三大件

要了解关于zip文件伪加密原理。首先要知道zip文件三大件。

二、关键字段:通用位标志

①本地文件头②中央目录文件头中都各有一个2字节的字段叫做通用位标志

这个字段的第0位就是加密标志:

Bit 0 的值 含义
0 文件未加密
1 文件已加密

在十六进制中的体现:

1
2
3
4
5
6
7
8
偏移量(相对于各自头部起始位置):
Local File Header: 偏移 +06h ~ +07h(第7-8字节)
Central Directory: 偏移 +08h ~ +09h(第9-10字节)

值的对应关系:
00 00 → bit 0 = 0 → 未加密
01 00 → bit 0 = 1 → 已加密 (小端序)
09 00 → bit 0 = 1 → 已加密(同时还设置了其他位)

三、伪加密实质

只改标志,不做真正加密

伪加密相对于在门上贴了个”已上锁”的牌子,但门根本没锁。只是虚张声势。

解压软件(比如 WinRAR)看到牌子就问你要钥匙(密码),但实际上门是开着的。

真正的zip加密:

  1. 标志位 bit 0 设为 1 ✅
  2. 文件数据经过加密算法处理,变成密文 ✅
  3. 解压时需要密码来解密 ✅

zip伪加密:

  1. 标志位 bit 0 被手动改为 1 ✅(骗解压软件”我加密了”)
  2. 文件数据根本没有经过任何加密,还是原始数据 ❌
  3. 解压软件看到标志位=1,就弹出密码输入框,但实际上没有正确的密码 ❌

四、修复操作

修复操作本质是:把被篡改的标志位改回 00 00

两个位置可能被篡改:

位置 修复方法
中央目录区的通用位标志 01 00(或 09 00等奇数)改回 00 00(或 08 00等偶数)
本地文件头的通用位标志 同上

常见的伪加密有三种情况:

五、区分真加密 vs 伪加密

判断方法 操作
用7-Zip打开 7-Zip 有时能直接解压伪加密文件

(因为它实际尝试解压数据而不完全依赖标志位)
binwalk提取 binwalk -e file.zip可能直接提取出数据
用010编辑器查看 对比Local File HeaderCentral Directory的标志位是否一致。若不一致,大概率是伪加密
ZipCenOp.jar 专门检测和修复 ZIP 伪加密的工具:

java -jar ZipCenOp.jar r file.zip
上一页
2026-08-22 20:05:38
下一页