ZIP文件放入010 editor
一个 ZIP 文件由三个部分组成:
压缩源文件数据区 + 压缩源文件目录区(核心目录记录区) + 压缩源文件目录结束标志(目录记录尾部区)
1.压缩源文件数据区:
Offset | Bytes | Description |
---|---|---|
0 | 4 | 文件头标识:50 4B 03 04(0x04034b50) |
4 | 2 | 解压文件所需版本 |
6 | 2 | 全局方式位标记(判断有无加密) |
8 | 2 | 压缩方式 |
10 | 2 | 最后修改文件时间 |
12 | 2 | 最后修改文件日期 |
14 | 4 | CRC-32校验码 |
18 | 4 | 压缩后大小 |
22 | 4 | 未压缩的大小 |
26 | 2 | 文件名长度 |
28 | 2 | 拓展区长度 |
30 | n | 文件名 |
30+n | m | 拓展区 |
2.压缩源文件目录区(也称核心目录记录区 ):
一条核心目录记录对应数据区中的一个 压缩文件记录
Offset | Bytes | Description |
---|---|---|
0 | 4 | 文件头标识:50 4B 01 02(0x02014b50) |
4 | 2 | 压缩所用版本 |
6 | 2 | 解压所用版本 |
8 | 2 | 全局方式位标记(判断有无加密) |
10 | 2 | 压缩方法 |
12 | 2 | 最后修改文件时间 |
14 | 2 | 最后修改文件日期 |
16 | 4 | CRC-32校验码 |
20 | 4 | 压缩后的大小 |
24 | 4 | 未压缩的大小 |
28 | 2 | 文件名长度 |
30 | 2 | 拓展区长度 |
32 | 2 | 文件注释长度 |
34 | 2 | 文件开始位置的磁盘编号 |
36 | 2 | 内部文件属性 |
38 | 4 | 外部文件属性 |
42 | 4 | 本地文件头的相对位移 |
46 | n | 文件名 |
46+n | m | 拓展区 |
46+n+m | k | 文件注释 |
3.压缩源文件目录结束标志(目录记录尾部区):
Offset | Bytes | Description |
---|---|---|
0 | 4 | 文件头标识:50 4B 05 06(0x06054b50) |
4 | 2 | 当前磁盘编号 |
6 | 2 | 核心目录区开始磁盘编号 |
8 | 2 | 该磁盘上纪录的核心目录总数 |
10 | 2 | 核心目录结构总数 |
12 | 4 | 核心目录的大小 |
16 | 4 | 核心目录开始位置相对位移(对磁盘偏移量) |
20 | 2 | 注释长度 |
22 | n | 注释内容 |
全局方式位标记的四个数字中只有第二个数字对其有影响,其它的不管为何值,都不影响它的加密属性,即:
- 第二个数字为奇数时 –>加密
- 第二个数字为偶数时 –>未加密
在010 editor中搜索16进制 50 4B 可以快速找到各区域,将压缩源文件数据区和压缩源文件目录区的全局方式位标记 01 00 改为 00 00 此时再解压无密码且可得到flag
压缩源文件数据区修改:
压缩源文件目录区修改: