什么是伪加密?

伪加密就是指通过修改压缩包的特定字节,然后让解压软件误以为压缩包使用了密码,其实压缩包并未使用密码!

题目和工具的下载地址在评论区置顶

伪加密的题目一般zip格式的压缩包

怎么做这类题目?

做这种题目的话需要一个十六进制编辑器!我推荐新手使用010Editor,我个人常用的是WinHex。

接下来我们来简单分析一下

打开16进制编辑器,将题目拖入16进制编辑器。

ctf压缩包伪加密(CTF杂项题目中常见的zip压缩包伪加密)(1)

打开之后是这样的!

我们可以看到下方有3个结构体

ctf压缩包伪加密(CTF杂项题目中常见的zip压缩包伪加密)(2)

010 Editor界面

这三个结构体的名字分别是:压缩源文件数据区、压缩源文件目录区、压缩源文件目录结束标志,这三个结构体分别对应压缩包中的一段数据。(计算机中的所有文件都是以二进制的形式存在的,010 Editor打开的题目是以十六进制显示的。)

压缩源文件数据区

顾名思义,这是用来存放压缩包中文件数据的地方。可以通过点击下方第一个结构体来定位到这一块数据。这块数据的开头是50 4B 03 04这四个字节叫做文件头标记;往后的两个字节14 00标识了解压文件所需 pkware 版本;在往后的两个字节00 00叫做全局方式位标记(这里可以判断这个压缩包有无加密;这里是00 00所以理论上来说,这个压缩包应该是没有加密的!但是实际上当你解压的时候,解压缩软件会提示你输入解压密码,这是为什么呢?别急,往下看!

ctf压缩包伪加密(CTF杂项题目中常见的zip压缩包伪加密)(3)

压缩源文件数据区

压缩源文件目录区

顾名思义,这里是用来存放压缩包中文目录的地方,压缩包中的所有文件名都可以在这找到,可以看这个软件右侧显示的ASCII码,有一个图片叫做905.jpg。

ctf压缩包伪加密(CTF杂项题目中常见的zip压缩包伪加密)(4)

压缩源文件目录区

这个结构体的前四个字节50 4B 01 02叫做目录中文件文件头标记;3F 00是压缩使用的 pkware 版本; 14 00是解压文件所需 pkware 版本;09 00是全局方式位标记(这里是判断第二个有无加密的地点,00 00为没有加密,09 00 为有加密;这里本来应该是00 00 被我手工改为09 00,所有使用解压软件的时候会显示需要输入压缩密码!)

伪加密的题目只需要将上面的两个全局方式位标记位改为00 00即可无密码解密!

ctf压缩包伪加密(CTF杂项题目中常见的zip压缩包伪加密)(5)

将光标移动到09上,按下0,修改标准位为00 00,然后ctrl s保存。

ctf压缩包伪加密(CTF杂项题目中常见的zip压缩包伪加密)(6)

再次尝试即可提取出压缩包中的文件!

ctf压缩包伪加密(CTF杂项题目中常见的zip压缩包伪加密)(7)

每个结构体每个字节的详细意思:

ctf压缩包伪加密(CTF杂项题目中常见的zip压缩包伪加密)(8)

压缩源文件的数据区

ctf压缩包伪加密(CTF杂项题目中常见的zip压缩包伪加密)(9)

压缩源文件目录区

ctf压缩包伪加密(CTF杂项题目中常见的zip压缩包伪加密)(10)

压缩源文件目录结束标志

,