Zip伪加密方式

时间:2024-03-27 19:18:32

伪加密通过修改zip文件中的编码实现,通过修改zip文件中的通用标记位在解压时判断为已加密。 
先看看zip文件的编码格式吧: 
放上格式参考来源:http://blog.sina.com.cn/s/blog_4c3591bd0100zzm6.html 
zip文件由三部分组成:1、 压缩的文件内容源数据 2、压缩的目录源数据 3、目录结束标识结构 
放上要用到的两个部分: 
Zip伪加密方式 
这里的文件头标识在winhex里显示为504B0304,不清楚为什么和图中的值位置颠倒

Zip伪加密方式 
目录源数据文件头标识在winhex里显示为504B0102

用winhex软件打开一个未加密的zip压缩包: 
Zip伪加密方式 
分析开头部分的数据: 
文件头标识:504B0304 
解压文件所需版本:0A00 
通用位标记:0000 (这里是全局通用位标记,作用就是标记是否加密,如果压缩时设置了密码这里会标记为0900,伪加密改不改这里没什么影响)

然后用16进制搜索目录源数据的开头标记504B0102 
Zip伪加密方式 
分析标记的数据: 
目录文件标识:504B0102 
压缩采用版本:3F00 
解压所需版本:0A00 
通用位标记:0000 (把这里的通用位标记改为0900即可实现伪加密)

压缩包里用几个文件就会有几个目录文件标识,改动一个目录文件标识下的通用位标记只会令那一个文件加密,如下图: 
Zip伪加密方式 
改动多个通用位标记则可以实现对多个文件加密。