加密标识位:
在Zip文件的加密标识位中,奇数和偶数的区别在于最低位(least significant bit)的值。这个位决定了文件是否被加密。
如果加密标识位的最低位是奇数(值为1),表示文件被标记为加密。
如果加密标识位的最低位是偶数(值为0),表示文件未被标记为加密。
这个最低位的值是用来模拟Zip文件的伪加密。实际上,伪加密并不提供真正的数据保护,只是通过修改标志位来表示文件已经加密。
ZIP压缩源文件数据区:
50 4B 03 04:这是头文件标记(0x04034b50)
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密)
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:扩展记录长度
伪加密修复原理
程序通过检测zip文件的加密标志位,并对标识位进行适当修改,最后测试修改后的压缩包软件是否可以正常解压即可。
修复前的伪加密文件:test01.zip
修复后的正常无加密的文件:test01.zip