【问题标题】:Android steganography detection LSBAndroid隐写检测LSB
【发布时间】:2017-08-16 18:58:27
【问题描述】:

我正在尝试使用手机上的实时摄像头检测 LSB 隐写术。到目前为止,无论是在印刷材料上还是在 PC 屏幕上,我都没有很好地检测 LSB 隐写术。

我尝试使用 OpenCV 并将每一帧转换为 RBG,然后从每个像素读取位,但从未检测到隐写术。

我还尝试使用相机功能,并检查 onFrame 是否逐个像素地识别起始字符串,以便我可以读取剩余像素中的实际隐藏数据。

这提供了几次阳性结果,但随后无法读取数据。

有什么建议可以解决这个问题吗?

关于隐藏数据的更多信息: 1.它遍布图像,我知道算法有效,因为如果我只是通过应用程序中的位图读取确切的图像,隐写术会被检测和解码,但是当我尝试使用相机时没有这样的运气。 2.它是一个网格,8x5像素遍布整个图像,所以它并不是只在图像的1个特定区域,在相机视图中无法检测到。

如果需要,我也可以发布一些代码。

谢谢。

【问题讨论】:

  • 只是为了清楚。您将数据嵌入到数字图像中,然后通过相机查看它,希望从像素中检测到秘密?起始字符串是什么(如果只是一堆 1 和 0,有多少个)以及您获得阳性结果的频率如何?
  • 它是连续 8 个像素内的一堆 1 和 0。那就是检测里面是否嵌入了代码。我经常从检测中得到肯定的结果,但实际数据是jibrish

标签: android opencv android-camera steganography


【解决方案1】:

你还没有说明你是如何做的,但我假设你做了以下一些事情:

  • 在数字图像中嵌入秘密,
  • 打印此隐秘图像或将其显示在电脑上,然后
  • 拍一张照片并检测嵌入的秘密。

出于所有实际目的,这是行不通的。 LSB 像素嵌入隐写术是一种非常脆弱的技术。您需要一个完美的隐秘像素图像副本才能进行提取。即使是简单的数字操作也足以摧毁你的秘密。缩放、裁剪和旋转仅举几例。然后你必须担心你拍摄照片的角度和环境光。而且我们甚至没有触及电脑显示器或打印照片上显示的颜色。

您在起始序列中获得肯定的唯一原因是因为您使用了较短的序列,而且您一定会很幸运。假设拍摄的隐秘图像导致每个像素与其真实值的随机偏差,有时你仍然会很幸运。想象一下第一个像素的值是 250,拍照后是 248。嗯,这两种情况下的 LSB 仍然是 0。

最重要的是,一些序列更有可能出现。在大多数照片中,相邻像素是相关的,因为颜色渐变是平滑的。这意味着如果照片的左上角是暗的而右上角是亮的,颜色会慢慢变化。例如,前 4 个像素的值为 10,接下来的几个像素值为 11,依此类推。就 LSB 而言,您有 00001111 模式,正如我刚刚解释的那样,无论您在那里拍摄什么图像,这种模式都可能相当频繁地出现。

【讨论】:

  • 好吧,我也有同样的想法,但我说让我试一试。你建议使用什么? DCT算法?用于编码和检测/解码的DWT算法
  • 不知道有没有可能。请记住,拍摄隐秘图像的照片对照片拍摄条件非常敏感。您与照片的距离、相机的分辨率等。
  • @BorceIvanovski 在一些非常严格的条件下,实际上需要您拍摄快照以尽可能忠实重新创建原始隐秘图像,这几乎是可能的。 Here's an idea 在图像缩放中生存是多么艰难。
  • 但我不会遇到这样的问题,即 stego 图像必须在调整大小后幸免于难。基本上,无论隐写图像的确切大小是多少,都会尝试在移动端识别它。基本上,他们必须调整移动设备离图像更近/更远才能获得准确的像素。
  • @BorceIvanovski 在这种情况下,您可能对“强大的隐写术”算法感兴趣,看看是否能找到适合您要求的东西。
猜你喜欢
  • 2018-04-05
  • 2018-08-01
  • 2013-08-18
  • 2016-05-25
  • 2016-08-18
  • 2018-07-29
  • 2012-11-19
  • 2018-10-02
相关资源
最近更新 更多