转发:ZIP文件格式详解(一)——文件数据格式

ZIP文件格式详解(一)——文件数据格式

----------------------------------------------------------------------------------

文档说明

ZIP 格式的压缩文件是我们常用的压缩格式之一,他以其通用性、压缩比高而在全球范围内有很多的用户,本文简单介绍 ZIP 文件格式和算法。本文主要参照 http://www.pkware.com 提供的 appnote.txt 文件,你可以从http://www.pkware.com/download.html 下载 appnote.zip 得到这个文件。

作者:昏睡终日([email protected])

2002-10-28 16:32:25

本文仅作为技术参考资料,我尽力的保证文档的内容同原始技术文档在结构和描述上的一致,若有不当的地方请见谅。

本文档的作者不为使用本文档信息所造成的任何损失负责。

----------------------------------------------------------------------------------

一个 ZIP 文件的普通格式

----------------------

一个 ZIP 文件由三个部分组成:

压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志

1、压缩源文件数据区

在这个数据区中每一个压缩的源文件/目录都是一条记录,记录的格式如下:

[文件头+ 文件数据 + 数据描述符]
 
       a、文件头结构

组成                     长度
      文件头标记                  4 bytes  (0x04034b50)
      解压文件所需 pkware 版本    2 bytes
      全局方式位标记              2 bytes
    压缩方式                    2 bytes
    最后修改文件时间             2 bytes
    最后修改文件日期             2 bytes
    CRC-32校验                  4 bytes
    压缩后尺寸                  4 bytes
    未压缩尺寸                  4 bytes
    文件名长度                  2 bytes

扩展记录长度                2 bytes
    文件名                     (不定长度)
    扩展字段                   (不定长度)

b、文件数据

c、数据描述符

   组成     长度
    CRC-32校验                  4 bytes
    压缩后尺寸                   4 bytes
    未压缩尺寸                   4 bytes

这个数据描述符只在全局方式位标记的第3位设为1时才存在(见后详解),紧接在压缩数据的最后一个字节后。这个数据描述符只用在不能对输出的 ZIP 文件进行检索时使用。例如:在一个不能检索的驱动器(如:磁带机上)上的 ZIP 文件中。如果是磁盘上的ZIP文件一般没有这个数据描述符。

2、压缩源文件目录区

在这个数据区中每一条纪录对应在压缩源文件数据区中的一条数据

   组成                            长度

  目录中文件文件头标记             4 bytes  (0x02014b50)

  压缩使用的 pkware 版本          2 bytes

  解压文件所需 pkware 版本         2 bytes

  全局方式位标记                   2 bytes

  压缩方式                        2 bytes

  最后修改文件时间                 2 bytes

  最后修改文件日期                 2 bytes

  CRC-32校验                 4 bytes

  压缩后尺寸                      4 bytes

  未压缩尺寸                      4 bytes

  文件名长度                      2 bytes

  扩展字段长度                    2 bytes

  文件注释长度                    2 bytes

  磁盘开始号                      2 bytes

  内部文件属性                    2 bytes

  外部文件属性                    4 bytes

局部头部偏移量                  4 bytes

  文件名                       (不定长度)

  扩展字段                     (不定长度)

文件注释                     (不定长度)

    3、压缩源文件目录结束标志

   组成                          长度

目录结束标记                    4 bytes  (0x02014b50)

当前磁盘编号                    2 bytes

目录区开始磁盘编号              2 bytes

  本磁盘上纪录总数                 2 bytes

  目录区中纪录总数                 2 bytes

  目录区尺寸大小                   4 bytes

  目录区对第一张磁盘的偏移量        4 bytes

  ZIP 文件注释长度                 2 bytes

  ZIP 文件注释                   (不定长度)

时间: 2024-08-25 05:22:23

转发:ZIP文件格式详解(一)——文件数据格式的相关文章

Carbondata源码系列(二)文件格式详解

在上一章当中,写了文件的生成过程.这一章主要讲解文件格式(V3版本)的具体细节. 1.字典文件格式详解 字典文件的作用是在存储的时候将字符串等类型转换为int类型,好处主要有两点: 1.减少存储占用空间 2.用在需要group by的字段上比较合适,可以减少计算时的shuffle的数据量. 每一个字典列都有对应的三种文件.dict, .sortindex, .dictmeta文件,输出格式都是thrift格式 1.1 .dict文件 字典的值每满1000就作为一个chunk输出一次,具体的类是C

Android逆向之旅---SO(ELF)文件格式详解

第一.前言 从今天开始我们正式开始Android的逆向之旅,关于逆向的相关知识,想必大家都不陌生了,逆向领域是一个充满挑战和神秘的领域.作为一名Android开发者,每个人都想去探索这个领域,因为一旦你破解了别人的内容,成就感肯定爆棚,不过相反的是,我们不仅要研究破解之道,也要研究加密之道,因为加密和破解是相生相克的.但是我们在破解的过程中可能最头疼的是native层,也就是so文件的破解.所以我们先来详细了解一下so文件的内容下面就来看看我们今天所要介绍的内容.今天我们先来介绍一下elf文件的

LinuxELF文件格式详解--Linux进程的管理与调度(十二)

日期 内核版本 架构 作者 GitHub CSDN 2016-06-04 Linux-4.5 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度-之-进程的描述 对象文件格式 对象文件 首先,你需要知道的是所谓对象文件(Object files)有三个种类: 可重定位的对象文件(Relocatable file) 可执行的对象文件(Executable file) 可被共享的对象文件(Shared object file) 可重定位的对象文件(Re

PE文件格式详解(四)

PE文件格式详解(四) 0x00 前言 上一篇介绍了区块表的信息,以及如何在hexwrokshop找到区块表.接下来,我们继续深入了解区块,并且学会文件偏移和虚拟地址转换的知识. 0x01 区块对齐值 首先我们要知道啥事区块对齐?为啥要区块对齐?这个问题其实困扰了我很久,只能怪我操作系统没学好...我现在的理解是由于内存和磁盘存在分页的问题所以使得不同区块一般要放到不同的分页中,当然也可以多个区块合并以节省空间,但是对于不能合并的区块如代码和数据块就不得不放在不同分页上了.学过操作系统的都知道不

【数字图像】BMP文件格式详解

BMP文件格式详解 ------------------------------------------------------------------------------------------------------- Lena 摘录百科:BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持. BMP文件存储的是原始的BGR数据,格式非常简单,研究数字图入门必备.因为数据没有经过任何压缩,所以BMP文件都比较大.

MFC中文件对话框类CFileDialog详解及文件过滤器说明

当前位置?:?首页???文章分类?:? 开发 ??? MFC中文件对话框类CFileDialog详解及文件过滤器说明 上一篇 利用OpenCV从摄像头获得图像的坐标原点是在左下角 下一篇 Word中为图表生成目录 域名迁移公告 2017年12月20日起,本博客迁移到新域名madaimeng.com,旧域名masikkk.com不再更新内容,但将永久保持可访问! 阅读 大专栏  MFC中文件对话框类CFileDialog详解及文件过滤器说明busuanzi_value_page_pv"> 评

【转】jpeg文件格式详解

JPEG(Joint Photographic Experts Group)是联合图像专家小组的英文缩写.它由国际电话与电报咨询委员会CCITT(The International Telegraph and Telephone Consultative Committee)与国际标准化组织ISO于1986年联合成立的一个小组,负责制定静态数字图像的编码标准. 小组一直致力于标准化工作,开发研制出连续色调.多级灰度.静止图像的数字图像压缩编码方法,即JPEG算法.JPEG算法被确定为国际通用标准

linux zip 命令详解

功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>] 补充说明:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件. 参 数: -A 调整可执行的自动解压缩文件. -b&

详解“FTP文件传输服务”安装配置实例

"FTP文件传输服务"安装配置实例 家住海边喜欢浪:zhang789.blog.51cto.com 目录 简介 ftp工作原理 常见的FTP服务 Vsftpd服务器的安装 Vsftpd.conf配置文件详解 配置FTP服务器实例 实例:配置匿名用户 实例:配置本地用户登录 实例:配置虚拟用户登录(MySQL认证) 实例:控制用户登录 实例:设置欢迎信息 分析vsftpd日志管理 FTP服务器配置与管理 简介 FTP 是File Transfer Protocol(文件传输协议)的英文简