前置知识

ZIP文件的16进制文件可以分为压缩源文件数据区压缩源文件目录区压缩源文件目录结束标志

每个区都有对应的文件头标记,结合实际16进制文件来解释各区的文件头信息。

压缩源文件数据区

压缩源文件数据区

16进制文件数据描述
50 4B 03 04zip类型头文件标识
14 00解压文件所需要pkware版本
00 00全局方式位标记(有无加密)
08 00压缩方式
70 02最后修改文件时间
01 4B最后修改文件日期
B7 EF DC 83CRC-32校验(1480B516)
03 00 00 00压缩后尺寸(3B)
01 00 00 00未压缩尺寸(23)
05 00文件名长度
00 00扩展记录长度

压缩源文件目录区

压缩源文件目录区

16进制文件数据描述
50 4B 01 02目录中文件文件头标记
1F 00压缩使用的 pkware 版本
14 00解压文件所需 pkware 版本
00 00全局方式位标记(有无加密)
08 00压缩方式
70 02最后修改文件时间
01 4B最后修改文件日期
B7 EF DC 83CRC-32校验(1480B516)

压缩源文件目录结束标志

压缩源文件目录结束标志

16进制文件数据描述
50 4B 05 06目录结束标志
00 00当前磁盘变薄
00 00目录区开始磁盘编号
01 00本磁盘上记录总数
01 00目录区中记录总数
81 00 00 00目录区尺寸大小
50 00 00 00目录区对第一张磁盘的偏移量
00 00ZIP文件注释长度

伪加密原理

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

无加密

压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为00 00

伪加密

压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00

真加密

压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00

示例

新建一个文件,压缩为一个无密码的后缀名为zip的包。

用winhex打开找到压缩源文件目录区,找到全局方式位修改为09 00。尝试解压文件会提示输入秘密。

参考

Last modification:April 16th, 2020 at 02:23 pm