[把文字写进像素里] 基于像素微调实现的文字隐写术

2017-01-27 13:25:40 +08:00
 Aaron99

引言

先看下面这张图像:

这张看似“纯黑色”的图像中其实隐藏了一份完整版的 GPL V3 协议的中文译文,而且文字信息就隐藏在像素之间。想要获得这幅图像的密文信息,我们只需要打开( https://hide.aoaoao.me),选择这张图像,即可解密出完整内容:

如果想要生成这种带有密文的图像,只需要选择已有的图像,填写密文,即可生成。这样的隐写术不是直接讲内容写入文件数据,而是通过微调像素的色值来达到存放数据的目的,由于只是微调,因此正常人很难察觉其中的变化。

原理

  1. 将待处理文本转换为二进制格式,并补足 16 位连接起来
  2. 遍历图像的每个像素的每个色彩通道值,与之前的二进制数据相对应,如果为 1 ,则微调当前色彩值至最近的偶数,反之为奇数
  3. 在图像开始和文本写入结束时分别加入特殊标记以便后期读取识别

理论上一张图像可以存放的字数(中英文都算为1个字)=(图像长像素数X图像宽像素数-34)/16。比如:一张500像素X500像素的图像可以存放约15万字。

我用一些图像测试了一下,大家可以对比对比:

原图:

下图为写入《独立宣言》中文译文后的图像:

源代码

GitHub:https://github.com/HFO4/HideByPixel

Demo:https://hide.aoaoao.me/

(代码匆忙写成,有许多 Bug ,时不时会抽风,请多多包涵)

8021 次点击
所在节点    分享创造
64 条回复
kid740246048
2017-01-27 13:30:09 +08:00
以后开车更方便更隐蔽了(大雾
Aaron99
2017-01-27 13:31:02 +08:00
@kid740246048 为什么你们第一反应全是开车用。。←_←
bdbai
2017-01-27 13:31:32 +08:00
压缩一下图片就没用了吧,一定要原图才可以
Aaron99
2017-01-27 13:33:06 +08:00
@bdbai 是这样 但是有些压缩技术是无损压缩的,可以大大减小图像体积
starvedcat
2017-01-27 13:43:46 +08:00
某知名企业内网论坛的背景是不是就用了类似的技术。。?这样就可以查出是哪个账号截的图
wujunze
2017-01-27 13:50:33 +08:00
不错 感谢分享
xenme
2017-01-27 13:54:57 +08:00
应该具有鲁棒性,抗污损、裁剪。
然后世界上的所有图片里面全部是种子,以后拿手机拍张照就能开车是多么壮观
Baymaxbowen
2017-01-27 13:59:56 +08:00
真正意义上的图种
loading
2017-01-27 14:01:18 +08:00
比 copy 大法高明不少。
a87150
2017-01-27 14:11:54 +08:00
随便选了几张 jpg 图片读取发现会出现 badii 这个词。
Aaron99
2017-01-27 14:12:15 +08:00
@a87150 手抖,已修复
Aaron99
2017-01-27 14:17:26 +08:00
Laynooor
2017-01-27 14:24:59 +08:00
把账号密码什么的写进图片然后做桌面壁纸..
distant1219
2017-01-27 14:27:40 +08:00
厉害了我的哥
RqPS6rhmP3Nyn3Tm
2017-01-27 14:37:43 +08:00
压缩是大头啊,在互联网上传播的图片少有不压缩的
Aaron99
2017-01-27 14:39:23 +08:00
@BXIA 的确是这样
netpart1
2017-01-27 14:46:13 +08:00
有什么意义,对比度,亮度,随便处理一下,就没了,只有作为暗号有意义,
Quaintjade
2017-01-27 14:49:13 +08:00
是不是可以理解成 RGBA 32-bit 中每个通道拿出 1 个 bit 来存放信息?那样的话理论上能放 4 倍信息量。
如果不用校验的话,我觉得没必要每个通道都拿出一个 bit 。从 alpha 通道或 blue 通道拿一个就行了。
Aaron99
2017-01-27 14:49:52 +08:00
@Quaintjade 嗯 的确是这样 可以降低图像品质损耗
XiaoXiaoNiWa
2017-01-27 14:56:00 +08:00
CTF 中用的隐写?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/337138

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX