V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

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

  •  1
     
  •   miaobug · 264 天前 · 3417 次点击
    这是一个创建于 264 天前的主题,其中的信息可能已经有所发展或是发生改变。

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


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


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

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

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

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

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

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

    可以看看开源的隐写工具 OpenPuff : http://embeddedsw.net/OpenPuff_Steganography_Home_zh.html
        32
    chocotan   263 天前
    前一阵子还在微博看到了, ps 就可以弄,大约是楼上谁说的什么通道
        33
    chocotan   263 天前
        34
    krizex   263 天前
    雷锋图。。。
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   1050 人在线   最高记录 2477   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.7.5 · 75ms · UTC 01:32 · PVG 09:32 · LAX 18:32 · JFK 21:32
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1