miaobug
V2EX  ›  程序员

今天突然思考了下在图片中藏信息的办法,没想出来。求大神们指导。

By miaobug at 2016 年 9 月 7 日 · 9703 次点击

大概类似于隐写术,图片看起来完全正常,但是在像素中藏有一些信息。
主要的冲突在于如何不影响图片大致的显示的内容把想要的信息写进去。
感觉如果是左右对称的图,能够好做一点,微调其中一部分,接受者做做减法就能出来了,但是如果是随便一张图片呢?


不是要贴吧那种图种,或者什么 txt 打开图片后面附一句的那种方法...
不知道表达清楚自己的意思没有。


我就是上班实习太闲了。。。

34 条回复  •  2016-09-08 17:08:37 +08:00
tokoy
   1
tokoy  
   2016 年 9 月 7 日
为啥我想到了图种...tag 里也有啊 要不试试在图片里隐藏个二维码试试
chiv2
   2
chiv2  
   2016 年 9 月 7 日
不在意有损的话我记得有好多办法,课上听完就忘了。
breeswish
   3
breeswish  
   2016 年 9 月 7 日
例如每个像素每个颜色分量的最低一个二进制位用来存储一个信息的二进制比特,那么对图片每个像素每个颜色分量的影响最多只有 1/256 人眼是看不出来的
mdluo
   4
mdluo  
   2016 年 9 月 7 日
数字水印,网上一大堆论文
xenme
   5
xenme  
   2016 年 9 月 7 日
同上,数字水印,还会有很多人吐槽的鲁棒性的翻译。
牛逼的还可以抗裁剪,抗污损等。
luban
   6
luban  
   2016 年 9 月 7 日
我还记得以前图片里面还能存种子
zzNucker
   7
zzNucker  
   2016 年 9 月 7 日
对人眼来说像素挺冗余的,细微的改变看不出,信息隐写论文都一大堆了
Mithril
   8
Mithril  
   2016 年 9 月 7 日
就是加水印而已
简单的你可以针对图像格式本身做,像 PNG 一类的后面追加个自定义数据段就行了。反正最后也都不会显示出来。
针对像素的话,比如你先做个傅里叶,然后改掉一部分高频区,把你的数据写进去,再变换回来其实图像看起来差不了多少。
imn1
   9
imn1  
   2016 年 9 月 7 日
sudo apt install steghide stegosuite stegsnow
zhanglintc
   10
zhanglintc  
   2016 年 9 月 7 日
我第一反应就是图中, 结果发现楼主的意思要高级一点...
zhanglintc
   11
zhanglintc  
   2016 年 9 月 7 日
图种, 写错了
latyas
   12
latyas  
   2016 年 9 月 7 日
RGBA 通道都可以写东西,比如可以在 alpha 通道写东西,但是屏蔽掉 A 通道
ylsc633
   13
ylsc633  
   2016 年 9 月 7 日   ❤️ 1
说个故事,大学上课无聊,有人发了个帖子,说内涵图! 什么少女背影啥的,这些我们都知道了!!!
直到有个图
是个草地上有个 足球 , 我们几个老司机 把这张图看了无数遍,地面草用 远视 近视 斗鸡眼看法都看了,还是没看出来
只要有个人说
你们把图 右键下来
修改扩展名 为 rar
然后解压。。。。。
全是种子。。。。。。。。。。。。
helloworld2010
   14
helloworld2010  
   2016 年 9 月 7 日
类似网络协议栈咯,图片文件也是有格式协议的吧,在空闲的头部实现一个新的协议(规定),用来隐藏信息(顺便还可以搞个加密啥的)……
现在手机拍完照后,会在照片里保留拍摄地的经纬度,就是这个理吧
rosu
   15
rosu  
   2016 年 9 月 7 日 via Android
@ylsc633 这难道不是在 rar 包的二进制码后面加上图片的二进制码然后改为图片格式的招数吗?
9hills
   16
9hills  
   2016 年 9 月 7 日
提高一下难度,怎么存储信息让图片打印出来依然不丢失信息
murmur
   17
murmur  
   2016 年 9 月 7 日
@9hills 当然是增加冗余和信息部位的大小 极端了想不就是二维码
xinnix
   18
xinnix  
   2016 年 9 月 7 日
dct 变换
Phariel
   20
Phariel  
   2016 年 9 月 7 日 via Android
@ylsc633 以前我也有过一个 图片是风景图 改成.torrent 后是樱井莉亚全集。。。
RIcter
   21
RIcter  
   2016 年 9 月 7 日   ❤️ 1
你们这些不打 CTF 的(逃
http://appleu0.sinaapp.com/?p=501
ebony0319
   22
ebony0319  
   2016 年 9 月 7 日 via Android
你说的是图种吧。老司机都懂得技术。
paw
   23
paw  
   2016 年 9 月 7 日
wow 截图。,。
popok
   24
popok  
   2016 年 9 月 7 日 via iPhone
@9hills 我知道,那个叫二维码,可以打印出来,不丢失信息。机智如我
DarryO
   25
DarryO  
   2016 年 9 月 7 日
提供一个以前看到过一个很 Naive 方法,也属于正式的隐写术,不过鲁棒性什么的比较差,主要是实现很简单。

大致就是把图片里所有的像素值(RGB 的某个通道或者某些通道异或之类的,或者灰度图片的灰度值)全部置为偶数(或奇数),然后把自己想要嵌入的内容当作点阵数据,把对应的像素点的像素值改为奇数....

因为是一个像素值的差别,所以对图像的影响不大。当然,能够嵌入的信息也比较少,传输时可能造成的信息损失也比较大。
codehz
   26
codehz  
   2016 年 9 月 7 日
@helloworld2010 你想说的是 Exif 信息,但是由于各种原因,不少网站在存储的时候会把 exif 消除。。。
mingyun
   27
mingyun  
   2016 年 9 月 7 日
@ebony0319 哈哈
Bobbyli
   28
Bobbyli  
   2016 年 9 月 8 日 via Android
二进制
lee015
   29
lee015  
   2016 年 9 月 8 日 via Android
二进制拷贝可以,把压缩包拷到图片文件后面,图片正常显示,改成 rar 后缀能正常解压。
aprikyblue
   30
aprikyblue  
   2016 年 9 月 8 日 via Android
下意识看了一眼发帖时间,总感觉你这个帖子内容在 v2 看过。。
BGLL
   31
BGLL  
   2016 年 9 月 8 日
图片隐写嘛
简单的直接在像素位写数据, 8 个比特,从低位写起,写 3 、 4 位对画质影响都不会很大
比如这张有马赛克的 200 KB 的 PNG 图:
里面就在像素位写入了一张无码的图片 56 KB 的 JPG 图片:

(图里的工具是以前自己写来玩的: http://nullice.com/imagein)

复杂点可以把数据写到频域,就可以抗扰了,再用些别的抗干扰算法,剪裁、打印、拍照都可以识别,不过能存储的数据量就小得多了,通常就用作数字水印了

可以看看开源的隐写工具 OpenPuff : http://embeddedsw.net/OpenPuff_Steganography_Home_zh.html
chocotan
   32
chocotan  
   2016 年 9 月 8 日
前一阵子还在微博看到了, ps 就可以弄,大约是楼上谁说的什么通道
chocotan
   33
chocotan  
   2016 年 9 月 8 日
krizex
   34
krizex  
   2016 年 9 月 8 日
雷锋图。。。
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
© 2026 V2EX · 94ms · 3.9.8.5