Stepic JPEG规避失败

Stepic JPEG circumventing Fail

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

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

在线文件是 JPEG,但为了规避这一事实,我尝试将其下载为 .psd,然后是 .bmp 文件,但它仍然知道它是 JPEG。

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

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

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

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

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

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

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

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

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