伪加密通过修改zip文件中的编码实现,通过修改zip文件中的通用标记位在解压时判断为已加密。
先看看zip文件的编码格式吧:
放上格式参考来源:http://blog.sina.com.cn/s/blog_4c3591bd0100zzm6.html
zip文件由三部分组成:1、 压缩的文件内容源数据 2、压缩的目录源数据 3、目录结束标识结构
放上要用到的两个部分:
这里的文件头标识在winhex里显示为504B0304,不清楚为什么和图中的值位置颠倒
目录源数据文件头标识在winhex里显示为504B0102
用winhex软件打开一个未加密的zip压缩包:
分析开头部分的数据:
文件头标识:504B0304
解压文件所需版本:0A00
通用位标记:0000 (这里是全局通用位标记,作用就是标记是否加密,如果压缩时设置了密码这里会标记为0900,伪加密改不改这里没什么影响)
然后用16进制搜索目录源数据的开头标记504B0102
分析标记的数据:
目录文件标识:504B0102
压缩采用版本:3F00
解压所需版本:0A00
通用位标记:0000 (把这里的通用位标记改为0900即可实现伪加密)
压缩包里用几个文件就会有几个目录文件标识,改动一个目录文件标识下的通用位标记只会令那一个文件加密,如下图:
改动多个通用位标记则可以实现对多个文件加密。