ZIP伪加密
ZIP 伪加密原理
zip 伪加密是在文件头的加密标志位做修改,进而再打开文件时被识别为加密压缩包
自动化识别工具
ZipCenOp
ZipCenOp 是一个 jar 包,用于操作 zip 格式的压缩文件,还支持对 zip 文件进行密码保护,也可以用于识别 zip 文件是否是伪加密
使用:
java -jar ZipCenOp.jar r zip文件名
成功后会输出:“success 1 flag(s) found”
然后直接解压伪加密的压缩包即可
WinRAR
一个解压软件,随缘吧,不一定行
进入 “工具”,修复压缩文件
ZIP 文件的结构
一个 ZIP 文件由三个部分组成:数据区、目录区、目录结束标志
注意:在使用 010 Editor 修改十六进制数据时,直接将光标移动到要修改的位置,然后直接输入十六进制数据就会自动覆盖当前数据
如果先使用删除键再输入数据,务必检查十六进制数据的数量是否正确,以免误删
数据区
判断是否加密的数据为 50 4B 03 04 之后的第 3 字节和第 4 字节
数据 | 解释 |
---|---|
50 4B 03 04 | 文件头标记 |
14 00 | 解压文件所需 pkware 版本 |
09 00 | 全局方式位标记(表示有无加密,奇数加密,偶数未加密) |
08 00 | 压缩方式 |
50 A3 | 最后修改文件时间 |
A5 4A | 最后修改文件日期 |
21 38 76 64 | CRC32 校验 |
19 00 00 00 | 压缩后尺寸(25) |
17 00 00 00 | 未压缩尺寸(23) |
08 00 | 文件名长度 |
00 00 | 扩展记录长度 |
目录区
判断是否加密的数据为 50 4B 01 02 之后的第 5 字节和第 6 字节
数据 | 解释 |
---|---|
50 4B 01 02 | 目录区文件头标记 |
1F 00 | 压缩使用的 pkware 版本 |
14 00 | 解压文件所需 pkware 版本 |
09 00 | 全局方式位标记(表示有无加密,同数据区,伪加密修改这里) |
08 00 | 压缩方式 |
50 A3 | 最后修改文件时间 |
A5 4A | 最后修改文件日期 |
21 38 76 65 | CRC32 校验 |
19 00 00 00 | 压缩后尺寸(25) |
17 00 00 00 | 未压缩尺寸(23) |
08 00 | 文件名长度 |
24 00 | 扩展字段长度 |
00 00 | 文件注释长度 |
00 00 | 磁盘开始号 |
00 00 | 内部文件属性 |
20 00 00 00 | 外部文件属性 |
00 00 00 00 | 局部头部偏移量 |
目录结束标志
数据 | 解释 |
---|---|
50 4B 05 06 | 目录结束标记 |
00 00 | 当前磁盘编号 |
00 00 | 目录区开始磁盘编号 |
01 00 | 本磁盘上记录总数 |
01 00 | 目录区中记录总数 |
5A 00 00 00 | 目录区尺寸大小 |
3F 00 00 00 | 目录区对第一张磁盘的偏移量 |
00 00 00 | ZIP 文件注释长度 |
无加密
区域 | 参数 |
---|---|
数据区的全局加密 | 00 00 |
目录区的全局方式位标记 | 00 00 |
伪加密
区域 | 参数 |
---|---|
数据区的全局加密 | 00 00 |
目录区的全局方式位标记 | 09 00 |
真加密
区域 | 参数 |
---|---|
数据区的全局加密 | 09 00 |
目录区的全局方式位标记 | 09 00 |
加密与解密
加解密 | 方法 |
---|---|
去除密码 | 目录区 的 全局方式位标记 的 01 00 或 09 00 改为 00 00 |
添加密码提示 | 目录区 的 全局方式位标记 的 00 00 改为 01 00 或 09 00 |
评论