zip伪加密

例题

http://www.shiyanbar.com/ctf/716

说明

   由于zip文件中是用全局方式位标记来标识有无加密的,所以更改此项就能伪造此zip文件有无加密。
   一般情况下,如果文件有加密,压缩源文件数据区和压缩源文件目录去的全局方式位标记都显示有加密(一般是09 00,对于zip具体格式将在下面列出)
如果发现压缩文件数据区显示无加密,而压缩文件目录区显示有加密,则很有可能是伪加密。

解法

1、将图片下载下来,将图片后缀名改为zip,发现是一个压缩文件,右键点击解压,发现有密码。

2、用winhex打开此压缩文件,找到zip的压缩源文件数据区的头文件标记
50 4B 03 04 然后查看全局方式位标记 00 00
表示无加密(第二位奇数表示加密,偶数无加密)

zip伪加密_第1张图片

再往后找到压缩源文件目录区的文件头标志50 4B 01 02 再找到之后的全局方式位标记09 00 即加密状态。和前面的加密状态不符,所以此时很可能是伪加密,可以用ziperello和azpr等跑一下,看看是不是真加密。

zip伪加密_第2张图片

对于伪加密的情况,我们可以把09 00 改为00 00 然后即可打开文件。


zip格式

在此附上这一部分的原出处:

http://blog.csdn.net/wclxyn/article/details/7288994
1、压缩源文件数据区(部分)

在这个数据区中每一个压缩的源文件/目录都是一条记录,记录的格式如下:
文件头+文件数据+数据描述符
a、文件头结构

组成 长度
文件头标记 4bytes(0x504B0304)
解压文件所需的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、数据描述符(不一定有,需要请自行搜索)

2、压缩源文件目录区
组成 长度
目录中文件文件头标记 4bytes(0x504B0102)
压缩文件所需的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、压缩源文件目录结束标志
组成 长度
目录结束标记 4bytes(0x504B0506)
当前磁盘编号 2 bytes
目录区开始磁盘编号 2 bytes
本磁盘上纪录总数 2 bytes
目录区中纪录总数 2 bytes
目录区尺寸大小 4 bytes
目录区对第一张磁盘的偏移量 4 bytes
ZIP 文件注释长度 2 bytes
文件注释长度 (不定长度)

伪加密貌似只对zip文件有效,对于rar文件楼主没有实验成功。在此附上rar文件格式说明:

https://wenku.baidu.com/view/b7889b64783e0912a2162aa4.html

若有朋友对rar文件试验成功,欢迎一起探讨,谢谢。

你可能感兴趣的:(zip伪加密)