ZIP压缩包伪加密¶
前置知识¶
a
aa
aaa
ZIP文件的16进制文件可以分为**压缩源文件数据区**、压缩源文件目录区、压缩源文件目录结束标志。
每个区都有对应的文件头标记,结合实际16进制文件来解释各区的文件头信息。
压缩源文件数据区¶
16进制文件数据 | 描述 |
---|---|
50 4B 03 04 | zip类型头文件标识 |
14 00 | 解压文件所需要pkware版本 |
00 00 | 全局方式位标记(有无加密) |
08 00 | 压缩方式 |
70 02 | 最后修改文件时间 |
01 4B | 最后修改文件日期 |
B7 EF DC 83 | CRC-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 83 | CRC-32校验(1480B516) |
压缩源文件目录结束标志¶
16进制文件数据 | 描述 |
---|---|
50 4B 05 06 | 目录结束标志 |
00 00 | 当前磁盘变薄 |
00 00 | 目录区开始磁盘编号 |
01 00 | 本磁盘上记录总数 |
01 00 | 目录区中记录总数 |
81 00 00 00 | 目录区尺寸大小 |
50 00 00 00 | 目录区对第一张磁盘的偏移量 |
00 00 | ZIP文件注释长度 |
伪加密原理¶
zip伪加密是在文件头的加密标志位做修改,进而再打开文件时识被别为加密压缩包。
无加密¶
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为00 00
伪加密¶
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00
真加密¶
压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00
示例¶
新建一个文件,压缩为一个无密码的后缀名为zip的包。
用winhex打开找到**压缩源文件目录区**,找到全局方式位修改为09 00
。尝试解压文件会提示输入秘密。