压缩包信息

zip

组成

ZIP文件由压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志三部分组成

压缩源文件数据区#

该数据区中每一个压缩的源文件/目录都是一条记录

包含:本地文件头、文件数据、数据描述符

Offset Bytes Description 翻译
0 4 local file header signature 文件头标识,值固定(0x04034b50)
4 2 version needed to extract 解压文件所需pkware最低版本
6 2 general purpose bit flag 通用比特标志位(置比特0位=加密)
8 2 compression method 压缩方式
10 2 last mod file time 文件最后修改时间
12 2 last mod file date 文件最后修改日期
14 4 crc-32 CRC-32校验码
18 4 compressed size 压缩后的大小
22 4 uncompressed size 未压缩的大小
26 2 file name length 文件名长度
28 2 extra field length 扩展区长度
30 n file name 文件名
30+n m extra field 扩展区

本地文件头#

表示文件的开始,记录压缩文件的信息

文件数据#

记录了相应压缩文件的数据,紧跟在本地文件头之后

数据描述符#

用于在不能对输出的 ZIP 文件进行检索(如磁带机)时使用。只有在相应的local file header中通用标记字段的第3bit设为1时才会出现,跟在每一个文件头模块的后面。【crc-32、压缩、未压缩】

压缩源文件目录区#

记录了压缩文件的目录信息,在这个数据区中每一条纪录对应在压缩源文件数据区中的一条数据。

Offset Bytes Description 翻译
0 4 Central directory file header signature 核心目录文件header标识=(0x02014b50)
4 2 Version made by 压缩所用的pkware版本
6 2 Version needed to extract (minimum) 解压所需pkware的最低版本
8 2 General purpose bit flag 通用位标记
10 2 Compression method 压缩方法
12 2 File last modification time 文件最后修改时间
14 2 File last modification date 文件最后修改日期
16 4 CRC-32 CRC-32校验码
20 4 Compressed size 压缩后的大小
24 4 Uncompressed size 未压缩的大小
28 2 File name length (n) 文件名长度
30 2 Extra field length (m) 扩展域长度
32 2 File comment length (k) 文件注释长度
34 2 Disk number where file starts 文件开始位置的磁盘编号
36 4 Internal file attributes 内部文件属性
38 4 External file attributes 外部文件属性
42 4 relative offset of local header 本地文件头的相对位移
46 n File name 目录文件名
46+n m Extra field 扩展域
46+n+m k File comment 文件注释内容

压缩源文件目录结束标志#

Offset Bytes Description 翻译
0 4 End of central directory signature = 0x06054b50 核心目录结束标记(0x06054b50)
4 2 Number of this disk 当前磁盘编号
6 2 number of the disk with the start of the central directory 核心目录开始位置的磁盘编号
8 2 total number of entries in the central directory on this disk 该磁盘上所记录的核心目录数量
10 2 total number of entries in the central directory 核心目录结构总数
12 2 Size of central directory (bytes) 核心目录的大小
16 4 offset of start of central directory with respect to the starting disk number 核心目录开始位置相对于archive开始的位移
20 2 .ZIP file comment length(n) 注释长度
22 n .ZIP Comment 注释内容

例子:(010editor)#

压缩源文件数据区:

压缩源文件目录区:

压缩源文件目录结束标志:

ZIP加密的特征#

无加密的ZIP#

压缩源文件数据区的通用比特标志位应当为00 00

压缩源文件目录区的通用比特标志位应当为00 00

真加密的ZIP#

压缩源文件数据区的通用比特标志位应当为09 00

压缩源文件目录区的通用比特标志位应当为09 00

伪加密的ZIP#

压缩源文件数据区的通用比特标志位应当为00 00

压缩文件目录区的通用比特标志位应当为09 00

破解ZIP的伪加密#

直接修改压缩源文件目录区的通用比特标志位为偶数,即可解压

ZIP官方文档

RAR

RAR的伪加密与ZIP的伪加密原理接近,造成伪加密的关键都是在一个指定的标志位上。

在010editor中修改ubyte PASSWORD_ENCRYPTED字段为1即可实现RAR伪加密(第24字节)

修改ubyte BLOCK_HEADERS_ENCRYPTED字段为1也可以实现(第10字节)

后续遇到其他的再进行更新

作者:NTrack

出处:https://www.cnblogs.com/ntrack/p/17712997.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ntrack  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示