V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
miaobug
V2EX  ›  程序员

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

  •  1
     
  •   miaobug · 2016-09-07 15:16:36 +08:00 · 8492 次点击
    这是一个创建于 3028 天前的主题,其中的信息可能已经有所发展或是发生改变。

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


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


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

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

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

    因为是一个像素值的差别,所以对图像的影响不大。当然,能够嵌入的信息也比较少,传输时可能造成的信息损失也比较大。
    codehz
        26
    codehz  
       2016-09-07 22:30:46 +08:00
    @helloworld2010 你想说的是 Exif 信息,但是由于各种原因,不少网站在存储的时候会把 exif 消除。。。
    mingyun
        27
    mingyun  
       2016-09-07 22:50:47 +08:00
    @ebony0319 哈哈
    Bobbyli
        28
    Bobbyli  
       2016-09-08 00:04:15 +08:00 via Android
    二进制
    lee015
        29
    lee015  
       2016-09-08 00:11:36 +08:00 via Android
    二进制拷贝可以,把压缩包拷到图片文件后面,图片正常显示,改成 rar 后缀能正常解压。
    aprikyblue
        30
    aprikyblue  
       2016-09-08 00:48:43 +08:00 via Android
    下意识看了一眼发帖时间,总感觉你这个帖子内容在 v2 看过。。
    BGLL
        31
    BGLL  
       2016-09-08 01:24:09 +08:00
    图片隐写嘛
    简单的直接在像素位写数据, 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-09-08 12:09:26 +08:00
    前一阵子还在微博看到了, ps 就可以弄,大约是楼上谁说的什么通道
    chocotan
        33
    chocotan  
       2016-09-08 12:16:56 +08:00
    krizex
        34
    krizex  
       2016-09-08 17:08:37 +08:00
    雷锋图。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4291 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 04:09 · PVG 12:09 · LAX 20:09 · JFK 23:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.