何为隐写?有什么用?

隐写旨在不加密源数据的情况下,增强文件的隐私性。网盘被在线解压炸链接?拿到资源一头雾水无从下手?学会隐写解君愁。以下介绍两种最常见常用的隐写方式。

图种

你可能没听过这个名字,但你一定见过动辄几 G 的图片,将其简单修改扩展名后,图片摇身一变成为了压缩包,这便是图种。

如何制作

直接在cmd中输入:

copy /b photo.jpg + test.zip IamZip.jpg

最终获得图种IamZip.jpg,修改扩展名为zip后正常解压。
以上仅作例子,图种并不局限于图片,使用视频,gif 等均可。

原理

其实就是直接将两个文件粘在一起,注意压缩包必须放在后面。

简单来说,媒体文件由文件头,数据
文件尾组成。由于图片在压缩包之前,多媒体软件读取到文件头后正常作为图片处理,读取到文件尾时标志结束,于是将后续的压缩包数据全部丢弃。
而解压软件由于要解压所有文件,因此会遍历文件,读取到图片文件头尾时不会丢弃,一直读取到压缩包的文件头后,标志有效压缩文件由此开始,于是丢弃了前面的媒体文件数据。

伪加密

你可能见过一些压缩包,明明作者说没有加密,解压时却要求输入解压密码,并且无论如何都不正确。这便是伪加密。
普遍来说,伪加密只适用于 zip 格式的压缩包。
首先解释一下,很多人对压缩包加密存在根本性的误解。
压缩包加密并不是把文件完整放进抽屉里锁好这么简单。实际上,压缩包加密是对所有数据进行移位,其实文件已经满身疮痍了。
这就是为什么现在破解压缩包的方法几乎只有字典暴力穷举。

原理

使用任意 16 进制编辑器打开 zip 压缩包,其中有三个重要组成部分

源文件目录区:
50 4b 01 02 标记此为源文件目录区
14 00 压缩文件所用软件版本
14 00 解压文件所需软件版本
00 00 通用标志位(标记是否加密,此为否)
08 00 压缩方式

目录区是伪加密的主要修改区域

源文件数据区:
50 4b 03 04 标记此为源文件数据区
14 00 解压所需软件版本
00 00 通用标志位(标记是否加密,此为否)
08 00 压缩方式

需要注意的是,压缩包中有几项文件,就有几项源文件数据区

源文件目录结束标志:
50 4b 05 06 标记此为源文件目录结束标志
剩下的不重要故略

如何制作

由于伪加密不真正对源数据加密,因此有:
伪加密: 源文件目录区 09 00 源文件数据区 00 00
真加密: 源文件目录区 09 00 源文件数据区 09 00
不加密: 源文件目录区 00 00 源文件数据区 00 00

使用16进制编辑器,修改为需要的样式即可

若压缩包内有多个文件,则需要对每个需要伪加密的文件的源文件数据区进行操作。
显然,对于伪加密的压缩包,只需要将源文件目录区后的 09 00 还原为 00 00 即可破解。

没啥用的碎碎念

相信你也想到了,可以将图种和伪加密结合在一起,并且由于压缩包的特殊性,可以衍生出一系列玩法。

还记得我说的压缩包中有几项文件,就有几项源文件数据区吗?没错可以只对压缩包中的指定文件放行。我们都知道压缩包是可以嵌套的。于是可以把加密过的压缩包套娃进一个压缩包,但是不进行伪加密,把解压密码放进同一个压缩包里,但是进行伪加密。
又水一篇, 已经成为没有梦想的咸鱼了