之前只是粗略的了解了一下伪加密,会做点题目,今天是全面深刻的理解什么是伪加密。
本文为个人学习笔记,上面借鉴了其他大佬的文章。
原文链接:https://blog.csdn.net/xiaozhaidada/article/details/124538768
? ? ? ? ? ? ? ? ?https://blog.csdn.net/weixin_52620919/article/details/120378131
? ? ? ? ? ? ? ? ?压缩包伪加密相关知识-CSDN博客
在做CTF的misc题目时经常会碰到需要密码的zip文件,打开这种需要密码的方法无非就这三种:
? ? ? ?(1)根据提示或其他文件解出密码
? ? ? ?(2)暴力破解
? ? ? ?(3)伪加密修改
文件头:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?50 4B 03 04
解压文件所需 pkware 版本:? ? ? ?14 00
全局方式位标记(判断有无加密):00 00
压缩方式:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 08 00
最后修改文件时间:? ? ? ? ? ? ? ? ? ? ?5A 7E
最后修改文件日期:? ? ? ? ? ? ? ? ? ? ? ??F7 46
1、无加密:无加密的zip压缩包压缩源文件数据区的全局加密应当为00 00,且压缩源文件目录区的全局方式位标记也为 00 00。
2、有加密:真加密的zip压缩包压缩源文件数据区的全局加密应当为01 00,且压缩源文件目录区的全局方式位标记应当为 01 00。
3、伪加密:伪加密的zip压缩包压缩源文件数据区的全局加密为 00 00,且压缩源文件目录区的全局方式位标记为09 00或者01 00。 即数据区全局标识符首位为偶数,但是文件区全局标识符首位为奇数。
全局方式位标记的四个数字中只有第二个数字对其有影响,其它的不管为何值,都不影响它的加密属性,即:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?第二个数字为奇数时 –>加密?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?第二个数字为偶数时 –>未加密
?
文件头:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 50 4B 01 02
压缩使用的 pkware 版本:? ? ? ? ? ? ? ? ? ??1F 00
解压文件所需 pkware 版本:?? ? ? ? ? ? ? ? 14 00
全局方式位标记(判断是否为伪加密):?00 00
压缩方式:?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 08 00
最后修改文件时间:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5A 7E
最后修改文件日期:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?F7 46
目录结束标记:? ? ? ? ? ? ? ? ? ? ? 50 4B 05 06
当前磁盘编号:? ? ? ? ? ? ? ? ? ? ? ? ? ?00 00
目录区开始磁盘编号:? ? ? ? ? ? ? ? ?00 00
本磁盘上纪录总数:? ? ? ? ? ? ? ? ?? ?01 00
目录区中纪录总数:? ? ? ? ? ? ? ? ? ? ? ?01 00
目录区尺寸大小:? ? ? ? ? ? ? ? ? ? ?59 00 00 00
目录区对第一张磁盘的偏移量 :?3E 00 00 00
ZIP 文件注释长度:? ? ? ? ? ? ? ? ? ? ? ? 00 00
? ? ? ? 确定是伪加密后就需要将其修改为无加密,方法很简单,就是将压缩源文件目录区的全局方式位标记从09 00改为00 00。
?
仅靠这种方法不能100%准确判断。
(1)用binwalk-e 无视伪加密
(2)在macOS和kali系统中,可以直接打开伪加密zip文件
(3)检测伪加密的工具ZipCenOp.jar
(4)有时用WinRAR的修复功能
? ? ? ? (来自书本《CTF安全竞赛入门》)
步骤:
把ZipCenOp.jar和需要解压的压缩包文件放到同一目录下,然后 cmd 进入进入当前目录下
输入下面的命令:
java -jar ZipCenOp.jar r (文件名)
然后回车
再回到目录解压压缩文件
就没有密码了