标签:标志位 本地 tab efs 数据区 pre ali 文件的 dff
经过对zip文件的长时间研究,对zip文件进行相关知识进行梳理,虽然网上很多牛人对其做了相关基础解析,但是对于特殊情况没有进行说明,比如超过4G的zip文件该以什么格式进行编译,现本人对其进行详细讲解。如有不足,欢迎各位大神指点!
zip文件格式:
[本地文件头1]
[档案数据1]
[数据描述符1]
.
.
.
[本地文件头n]
[档案数据n]
[数据描述符n]
[存档解密标题](EFS)
[存档额外数据记录](EFS)
[中央目录]
[zip64中心目录记录结束]
[中央目录定位器的zip64端]
[中央目录记录结束]
因此压缩源文件数据区包括三个部分:[本地文件头] + [档案数据] + [数据描述符]
用于标识该文件的开始,记录了该压缩文件的信息。
Offset | Bytes | description |
0 | 4 | 文件头标识,固定值(0x04034b50 |
4 | 2 | 解压文件所需的pkware最低版本 |
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 | 扩展区 |
其中通用标志位具体参数获取如下:
Bytes | description |
0 | 如果设置,表示文件已加密 |
2 1 |
0 0 正常压缩方式 0 1 最大压缩方式 1 0 快速压缩方式 1 1 最快压缩方式 |
3 | 如果设置此位,CRC-32与未压缩大小在头文件中设为0,正常值放到数据描述符中 |
4 | 位方法8保留,为了增强压缩 |
5 | 如果置位,表示该文件为压缩的补充数据 |
6 | 如果置位,则提取值所需的版本设置为至少 50,并需要结合位0,提取值所需的版本必须 至少为51 |
7 | 目前未使用 |
8 | 目前未使用 |
9 | 目前未使用 |
10 | 目前未使用 |
11 | 目前未使用 |
12 | 由PKWARE保留以增强压缩 |
13 | 在加密中央目录时使用,以指示本地标题中的选定数据值被屏蔽以隐藏其实际值 |
14 | 由PKWARE保留 |
15 | 由PKWARE保留 |
标签:标志位 本地 tab efs 数据区 pre ali 文件的 dff
原文地址:https://www.cnblogs.com/yuanchenghao/p/10090228.html