zip伪加密原理及操作


zip伪加密原理及操作

实例

这里写图片描述
压缩源文件数据区:
50 4B 03 04:这是头文件标记(0x04034b50)
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密) 头文件标记后2bytes
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
00 00:扩展记录长度
6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500
压缩源文件目录区:

50 4B 01 02:目录中文件文件头标记(0x02014b50)

3F 00:压缩使用的 pkware 版本

14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,伪加密的关键) 目录文件标记后4bytes
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
16 B5 80 14:CRC-32校验(1480B516)
19 00 00 00:压缩后尺寸(25)
17 00 00 00:未压缩尺寸(23)
07 00:文件名长度
24 00:扩展字段长度
00 00:文件注释长度
00 00:磁盘开始号
00 00:内部文件属性
20 00 00 00:外部文件属性

00 00 00 00:局部头部偏移量

6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001
压缩源文件目录结束标志:
50 4B 05 06:目录结束标记
00 00:当前磁盘编号
00 00:目录区开始磁盘编号
01 00:本磁盘上纪录总数
01 00:目录区中纪录总数
59 00 00 00:目录区尺寸大小

3E 00 00 00:目录区对第一张磁盘的偏移量

00 00:ZIP 文件注释长度

这个详细的介绍了各部分的含义,修改其压缩源文件目录区的全布局方式标记比特值之后即可对文件加密或解密。

具体操作如下:

压缩源文件数据区:50 4B 03 04:这是头文件标记

压缩源文件目录区:

50 4B 01 02:目录中文件文件头标记

3F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)

压缩源文件目录结束标志 :50 4B 05 06:目录结束标记

我们用winhex打开压缩包,搜索504B,点击第二个504B(压缩源文件目录区)

img

-———————————————————————————————————–

img

将全局方式位标记中的09改为00后,打开压缩包

img

全局方式位标记的四个数字中只有第二个数字对其有影响,其它的不管为何值,都不影响它的加密属性!
第二个数字为奇数时 –>加密
第二个数字为偶数时 –>未加密

那么,如何辨别当前的zip是真的加密还是伪加密?

无加密

压缩源文件数据区的全局加密应当为00 00 (504B0304两个bytes之后)
且压缩源文件目录区的全局方式位标记应当为00 00(504B0304四个bytes之后)

假加密

压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00

真加密

压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00
这里写图片描述

使用工具【ZipCenOp.jar】自动修复zip伪加密文件

1.用010检查zip压缩包,发现压缩包文件是伪加密,但是找不到要修改伪加密的地方
在这里插入图片描述
2.查了很多资料,最后用大佬给的工具【ZipCenOp.jar】修复了压缩包

步骤
把ZipCenOp.jar和需要解压的压缩包文件放到同一目录下,然后 cmd 进入进入当前目录下

输入下面的命令:
java -jar ZipCenOp.jar r lm.zip在这里插入图片描述


文章作者: Daniel
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Daniel !
  目录