【问题标题】:Steganography in image图像中的隐写术
【发布时间】:2015-06-02 01:30:22
【问题描述】:

到目前为止,我已经在十六进制编辑器中打开了图像并查看了字节。但是,对于我的生活,我无法识别声音。我为此花了几天时间。我什至尝试在 Audacity 中打开文件(作为“原始数据”)并播放它。无非是“噪音”。尝试创建直方图/频率分析,但没有。

任何帮助将不胜感激。

【问题讨论】:

  • 除非您知道使用什么方法对数据进行编码,否则您会发现这非常困难。这对于Stack Overflow来说太宽泛了
  • 确实没有,但期待有人解释回答您的问题所需的所有密码分析远远超出了Stack Overflow 的职权范围
  • 使用图片搜索工具在网络上找到原图,从steg图像中减去原图(像素值),然后分析得到的差异。
  • 不适合这个网站。您正在寻找一个论坛来汇集建议,但这是一个问答网站,其答案可以客观地判断其有用性。您只是在寻找建议,而我们会在黑暗中拍摄哪一个可以解决您的问题。具体来说,对于隐写术,几乎有无数种嵌入方法,只要与正确过程稍有不同,就不会产生任何结果。
  • 请阅读FAQ,了解哪些问题被认为是appropriatehow to ask 他们。意识到这不是一个解决难题的服务,而是一个关于特定和明确问题的程序相关问题的问答网站。这意味着您已经知道要做什么,即如何提取秘密,但是在将其编码为实现时遇到了问题。 Crypto StackExchange 可能更适合您的需求。

标签: image audio steganography hex-editors


【解决方案1】:

隐写术通常通过将第二张图像或一些数据隐藏在另一张图像的低位中来工作。这些值总体上变得非常微不足道,对图像的视觉外观几乎没有影响。

要显示第二个数据,您需要屏蔽最高位,然后通常按比例放大剩余值。

但是,你需要提前知道:

  • 使用了多少低位(两个在次要图像中很常见)
  • 剩余数据是如何组织的(如果不是图像):
    • 是否(位)缩放,多少
    • 什么顺序(扫描线水平、垂直...)。
    • 是否所有颜色组件都在使用中?哪一个以及如何在组件中拆分数据...
    • 是音频文件还是音频数据
    • 生成的数据是否已压缩、加密……
    • 音频需要带符号的值,数据中的值是带符号的,它们是否已移位...(这会窃取一位,这意味着字节可能必须打包以产生可听的内容)

等等

如果没有这些信息,它就毫无用处(你可以尝试可能的猜测,但它们将是猜测,你可以这样做很长时间)。

无论如何,我在下面提供了一个基础来展示这个过程,但是如果不知道原始数据是如何组织的,那么剩下的,如果它被正确提取,实际上是“不可能”确定的:

这是使用预先知道的图像在低 2 位中隐藏另一个图像(猫)的过程的结果:

var img = new Image;
img.onload = unstegano;
img.crossOrigin = "";
img.src = "//i.imgur.com/DkCZMJN.png";  // contains a hidden image

document.body.appendChild(img);

function unstegano() {
  var canvas = document.createElement("canvas"),
      ctx = canvas.getContext("2d");
  
  canvas.width = this.naturalWidth;
  canvas.height = this.naturalHeight;
  ctx.drawImage(this, 0, 0);
  
  // get pixels
  var idata = ctx.getImageData(0, 0, canvas.width, canvas.height),
      data = idata.data, i = 0, len = data.length;
  
  while(i < len) {
      data[i] = (data[i++] & 3)<<6;  // masks two first bits, shifts it to scale it
      data[i] = (data[i++] & 3)<<6;
      data[i] = (data[i++] & 3)<<6;
      i++
  }
  ctx.putImageData(idata, 0 ,0);
  document.body.appendChild(canvas);
}

使用提供的图像,您会得到一些看起来像噪音的东西,但这并不重要,因为音频数据在任何情况下都会产生噪音图像 - 您现在的挑战是从这种噪音中做出任何东西(或“噪音”):

var img = new Image;
img.onload = unstegano;
img.crossOrigin = "";
img.src = "//i.imgur.com/IpaDzB4.png";
document.body.appendChild(img);

function unstegano() {
  var canvas = document.createElement("canvas"),
      ctx = canvas.getContext("2d");
  
  canvas.width = this.naturalWidth;
  canvas.height = this.naturalHeight;
  ctx.drawImage(this, 0, 0);
  
  // get pixels
  var idata = ctx.getImageData(0, 0, canvas.width, canvas.height),
      data = idata.data, i = 0, len = data.length;
  
  while(i < len) {
      data[i] = (data[i++] & 1)<<7;  // masks first bit, shifts it to scale it
      data[i] = (data[i++] & 1)<<7;
      data[i] = (data[i++] & 1)<<7;
      i++
  }
  ctx.putImageData(idata, 0 ,0);
  document.body.appendChild(canvas);
}

【讨论】:

    猜你喜欢
    • 2011-02-17
    • 2014-01-24
    • 2014-02-18
    • 2018-07-02
    • 2011-01-01
    • 1970-01-01
    • 2016-05-25
    • 2011-05-10
    • 1970-01-01
    相关资源
    最近更新 更多