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
压缩源文件数据区修改:

压缩源文件目录区修改:


630

被折叠的 条评论
为什么被折叠?



