在做misc题目时会经常碰到需要密码的zip文件,打开这种需要密码的方法有三种:
(1)题目中提示密码
(2)伪加密
(3)暴力破解
小编想法:正常做题可以暴力点,没有提示,先用ZipCenOp.jar检查是否为伪加密,若不是便暴力破解。
原理(压缩文件分为三部分,将文件拉入winhex即可查看编码)
1.压缩源文件数据区:
50 4B 03 04:这是头文件标记 (0x04034b50)
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(判断有无加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
2.压缩源文件目录区:
50 4B 01 02:目录中文件文件头标记 (0x02014b50)
1F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(判断是否为伪加密)
08 00:压缩方式
5A 7E:最后修改文件时间
F7 46:最后修改文件日期
3.压缩源文件目录结束标志:
50 4B 05 06:目录结束标记
00 00:当前磁盘编号
00 00:目录区开始磁盘编号
01 00:本磁盘上纪录总数
01 00:目录区中纪录总数
59 00 00 00:目录区尺寸大小
3E 00 00 00:目录区对第一张磁盘的偏移量
00 00:ZIP 文件注释长度
判断文件是否加密
这里我们只需要看前面两部分到全局方式位标记,且全局方式位标记为核心。全局方式位标记的四个数字中只有第二个数字对其有影响,其它的不管为何值都不影响它的加密属性,即:
第二个数字为奇数时 –>加密
第二个数字为偶数时 –>未加密
例:
无加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为00 00
伪加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00
真加密
压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00
以上伪加密和真加密中压缩文件目录区的全局方式位标记的09 00只是常见例子,也可能为其他奇数。