【问题标题】:Stepic JPEG circumventing FailStepic JPEG规避失败
【发布时间】:2015-03-01 19:09:20
【问题描述】:

我正在尝试在 Mac 终端中使用 stepic 来解码隐写术:

stepic --decode --image-in=goldfish.bmp --out=goldfish.txt

在线文件是 JPEG,但为了避免我尝试将其下载为 .psd 和 .bmp 文件,但它仍然知道它是 JPEG。

他们有什么方法可以完成这项工作,还是我需要一个不同的 python 模块?在后一种情况下是什么模块。谢谢。

【问题讨论】:

  • Stepic 修改像素并保留信息,您需要将该图像保存为 bmp、png 或其他此类无损格式。如果将图像保存为 jpeg,则会丢失隐藏信息。如果您将图像保存为无损格式,但在将其上传到网站后会转换为 jpeg,您也会丢失该信息。将图像重新保存为 bmp 不会恢复有损格式造成的损害。您能否添加更多详细信息,为什么要为此下载 jpeg 文件以及您要实现的目标? Stepic 可能不是前进的方向。
  • 我自己和一个住在国外的朋友真的很喜欢密码学,所以我们开始了双向加密寻宝,我们来回发布。我确定该图像是一个隐写器,但它所在的网站将它作为 JPG 保存在那里。是他搞砸了还是我错过了一个把戏?

标签: python terminal steganography stepic


【解决方案1】:

在 OP 进一步澄清后,我主要将我的评论转换为答案。

Stepic 将信息直接嵌入到图像的像素中。有损格式(例如 jpeg)会改变其中一些像素,从而破坏您的秘密。仅 bmp 和 png 等无损格式适用于此应用程序。

由于您的朋友对您的消息进行了编码,并且您是隐写图像的接收者,因此此过程有两个地方出错。要么您的朋友将图像保存为 jpeg(从文档中不清楚该程序是否允许这样做),或者他是一个好孩子,但在将其上传到网站后,网站重新编码为 jpeg。

您应该询问他和/或将非 jpeg 图像上传到网站并下载回来并检查两者之间的文件差异。如果两个文件相同,则以下 python 脚本将逐字节打印 true。

a = open('filename before upload', 'rb').read()
b = open('filename after download', 'rb').read()
print a == b

如果图像保存为 jpeg,只需建议您的朋友使用合适的格式。如果图像在上传过程中被修改,您要么必须使用不同的上传服务,该服务不会以破坏图像的方式重新编码图像,例如保存为不同的格式、裁剪或调整大小,或者您必须使用隐写算法,您的秘密可以通过这种算法在此类修改中幸存下来。这被称为健壮的隐写术,有很多文献描述了这种算法,尽管您可能不容易找到它们的源代码。

如果您对在 jpeg 图像中嵌入秘密特别感兴趣,则必须寻找 jpeg 隐写术。

但是,根据常见问题解答,推荐此类工具或软件被视为off-topic

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2016-06-19
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多