ZIP 伪加密原理

zip 伪加密是在文件头的加密标志位做修改,进而再打开文件时被识别为加密压缩包


自动化识别工具

ZipCenOp

ZipCenOp 是一个 jar 包,用于操作 zip 格式的压缩文件,还支持对 zip 文件进行密码保护,也可以用于识别 zip 文件是否是伪加密

下载安装:Release 1.0 · 442048209as/ZipCenOp

使用:

java -jar ZipCenOp.jar r zip文件名

成功后会输出:“success 1 flag(s) found”

然后直接解压伪加密的压缩包即可


WinRAR

一个解压软件,随缘吧,不一定行

进入 “工具”,修复压缩文件


ZIP 文件的结构

一个 ZIP 文件由三个部分组成:数据区、目录区、目录结束标志

注意:在使用 010 Editor 修改十六进制数据时,直接将光标移动到要修改的位置,然后直接输入十六进制数据就会自动覆盖当前数据

如果先使用删除键再输入数据,务必检查十六进制数据的数量是否正确,以免误删


数据区

判断是否加密的数据为 50 4B 03 04 之后的第 3 字节和第 4 字节

数据解释
50 4B 03 04文件头标记
14 00解压文件所需 pkware 版本
09 00全局方式位标记(表示有无加密,奇数加密,偶数未加密
08 00压缩方式
50 A3最后修改文件时间
A5 4A最后修改文件日期
21 38 76 64CRC32 校验
19 00 00 00压缩后尺寸(25)
17 00 00 00未压缩尺寸(23)
08 00文件名长度
00 00扩展记录长度

目录区

判断是否加密的数据为 50 4B 01 02 之后的第 5 字节和第 6 字节

数据解释
50 4B 01 02目录区文件头标记
1F 00压缩使用的 pkware 版本
14 00解压文件所需 pkware 版本
09 00全局方式位标记(表示有无加密,同数据区,伪加密修改这里
08 00压缩方式  
50 A3最后修改文件时间
A5 4A最后修改文件日期
21 38 76 65CRC32 校验
19 00 00 00压缩后尺寸(25)
17 00 00 00未压缩尺寸(23)
08 00文件名长度
24 00扩展字段长度
00 00文件注释长度
00 00磁盘开始号
00 00内部文件属性
20 00 00 00外部文件属性
00 00 00 00局部头部偏移量

目录结束标志

数据解释
50 4B 05 06目录结束标记
00 00当前磁盘编号
00 00目录区开始磁盘编号
01 00本磁盘上记录总数
01 00目录区中记录总数
5A 00 00 00目录区尺寸大小
3F 00 00 00目录区对第一张磁盘的偏移量
00 00 00ZIP 文件注释长度

无加密

区域参数
数据区的全局加密00 00
目录区的全局方式位标记00 00

伪加密

区域参数
数据区的全局加密00 00
目录区的全局方式位标记09 00

真加密

区域参数
数据区的全局加密09 00
目录区的全局方式位标记09 00

加密与解密

加解密方法
去除密码目录区 的 全局方式位标记01 00 或 09 00 改为 00 00
添加密码提示目录区 的 全局方式位标记00 00 改为 01 00 或 09 00