【问题标题】:ways to hide secret in png image (steganography)在 png 图像中隐藏秘密的方法(隐写术)
【发布时间】:2014-10-31 08:59:55
【问题描述】:

我正在尝试在 256x256 png 图像中找到一条秘密消息,一个字符串。它应该是“使用了一种老派的技巧来隐藏数据”,而且显然在隐写术维基百科文章中提到了这种方法。

我首先尝试了在我看来最老派的东西:LSB 隐写术。但没有运气。我知道字符串的第一个和最后一个字符(“F”和“}”),我认为它们可能混合了常见的 lsb 方法,所以我检查了图片的第一个像素和最后一个像素我。但是,没有明显的组合(例如每个像素的只有红色值)会允许正确的字符。因此我很肯定它没有使用 lsb。

在相当绝望的尝试中,我看到 Wikipedia 谈到剥离最重要的六位,只留下最不重要的两位,然后对图片进行规范化。我写了一个小脚本来做到这一点,但这里也没有运气。

我还使用identify -verbose image.png 查看了元数据。没有。该文件应在 IEND 块之后结束,因此除此之外没有任何隐藏。

我的想法不多了,所以我的问题是:

任何可能归类为老派技巧的提示,我还没有尝试过?我确定我错过了一些明显的东西。这个练习是和其他一些练习一起完成的,乍一看,它们都比实际更难。

非常感谢。 :)

【问题讨论】:

  • 有无数种方法可以在 PNG 中隐藏数据——另外还有一组无数种变体。例如,您的 LSB 尝试:您是否假设这些位是从左到右、从上到下、最高有效位在前存储的?
  • 我知道有无数种方法,但它应该是“老派”的事实应该会缩小很多。我希望。我确实先尝试了最高位和最低位。最重要的是首先与其他实现一起工作。我没有尝试从上到下。无论哪种方式,前三位(第一个像素)已经不适合第一个预期字符(即假设数据当然从开头开始)。
  • 试试这个:按照您现在阅读的确切顺序打印出最低有效位。这应该会给你一个 3*256x256 0s 和 1s 的矩阵。如果您检测到某种模式(从左到右、自上而下或任何其他顺序),请用肉眼扫描。
  • 这个问题是题外话,因为这里所谓的“老派”是主观的,因为存在不止一种可能性,即使选项池很小。这也与编码问题不完全相关。 Crypto Stack Exchange site 可能与此更相关。关于您的问题,我不会这么快就排除 LSB 嵌入,因为即使该方法是标准的,您也可以通过多种方式将其混合起来,唯一的解决方法是对原始数据进行真正的处理数据并找到一些模式。
  • @Jongware 我试图避免这种情况。我真的不希望有人为我解决它。只是一些讨论和一些提示,其他方法可能意味着什么。不过今晚我会尝试打印出来,听起来很有趣^_^。

标签: png steganography


【解决方案1】:

原来,图片中间有一块长文本,其中包含想要的字符串,仅隐藏在蓝色值的最低位中,至少位一阶。不知何故,我在初步测试中错过了这种组合。所以你去。 :)

对于遇到类似问题的任何人:我发现最好编写一个脚本来在一次大运行中测试所有更常见的变化(如仅单色、垂直、最小位或最大位优先等)。否则很容易错过一个简单的理论,并绝望地陷入疯狂的复杂理论中。

【讨论】:

  • 嗨@foaly,我正在尝试从 png 文件中提取标志,但不是 lenna。提示也是“使用老派的技巧来隐藏数据”。 (也许我们在同一所学校学习)。我尝试找到原始图片并使用工具对其进行比较。图片中间也有块。但我没有运气弄清楚比特是如何存储的。你有什么建议吗?
  • 我解决了,它是使用多个通道来存储长文本。
  • OP 或@Tim Hsu 你能详细解释一下你是如何解决的吗? diego.serra.brigante@gmail.com!谢谢,我对 .png 文件也有同样的问题。
  • 你能给我发一份样本文件吗,可能不是同一张图片
  • 请把你的邮箱发给我或者给我发一封给我:)
猜你喜欢
  • 2014-02-18
  • 2018-07-02
  • 2021-03-03
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
相关资源
最近更新 更多