如何在图像文件中查找隐藏文件(Jpg/Gif/Png)

2024-04-19 02:09:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到一个链接,它显示了如何隐藏图像文件中的文件数:http://lifehacker.com/282119/hide-files-inside-of-jpeg-images有关检测的更多讨论,请参见:http://ask.metafilter.com/119943/How-to-detect-RARsEXEs-hidden-in-JPGs

我试图找出什么是一个好方法,以编程方式检测一个图像文件中是否隐藏了其他文件?我是否应该尝试解压缩文件,看看是否有其他文件从中出来?

我不是以编程方式绑定的,但是在JVM上运行良好的东西会很好。

更新

一种方法:

像这样的工作吗(由metafilter上的人建议)

$ cat orig.jpg test.zip > stacked.jpg
$ file stacked.jpg 
stacked.jpg: JPEG image data, JFIF standard 1.01
$ convert stacked.jpg stripped.jpg  # this is an ImageMagick command
$ ls -l
 11483 orig.jpg
322399 stacked.jpg
 11484 stripped.jpg
310916 test.zip

我可以用JMagick来解决这个问题。


Tags: 文件方法testcomhttp链接编程图像文件
3条回答

您可以搜索文件签名。 http://en.wikipedia.org/wiki/List_of_file_signatures e、 g.对于7z文件,签名为37 7A BC AF 27 1C rar档案是52 61 72 21 1A 07 00 邮编是504b0304 在hex编辑器中查看压缩文件,例如HxD

要查看文件中是否附加了任何元数据或其他信息,可以对图像进行解码并重新编码,以查看大小是否急剧减小。对于JPEG文件,您可能需要进行无损旋转,以保留原始DCT数据,否则文件大小可能会因编码差异而改变。

较小的结果并不能证明隐藏的数据,但它将是一个指标,表明您需要仔细查看。

你从来没有分享过你问这个问题的动机,但我想这是关于下载图片到公共网站。在这种情况下,您真的不应该关心提交的图像是否包含无关数据,而应该只清理输入。解码/重新编码过程将是完美的。

好问题!

如果您只想检查一个附加到 映像文件,然后通过unrarunzip命令运行它 最简单的方法。

如果您想要更快但更不精确的检查,您可以检查 表示特定类型文件的特殊文件格式签名。这个 识别文件格式的常用UNIX工具是^{}。它使用 binary file signatures的数据库,其格式为 在magic(5)手册页中定义。找不到RAR文件 您在JPEG的结尾,因为它只在文件的开头查看 尝试快速识别它们,但您可以修改其源代码 做你想做的事。您还可以重用它的文件签名数据库。如果您查看Rar文件部分中的the archive file part of its database,它将显示:

# RAR archiver (Greg Roelofs, newt@uchicago.edu)
0   string      Rar!        RAR archive data,

这表示如果JPEG文件包含4个字节Rar! 会很可疑。但是您必须详细检查Rar file format spec文件结构,以检查是否有更多的Rar文件结构 为避免误报,此网页还包含四个字节 Rar!但没有附加隐藏文件:P

但是如果有人知道你的自动支票的细节,他们可以 很容易就解决了。最简单的解决方法是反转所有字节 在将文件附加到JPEG之前。那么你的 签名将捕获文件的反转版本。


如果有人真的想在图像中隐藏文件,有各种各样的 你无法轻易察觉的方法。将军 这个术语是“隐写术”。这个Wikipedia page,用于 例如,显示了一张树的图片,其中隐藏了一只猫的图片 它。对于更简单的隐写方法,有一些统计测试 可以表示图片上做了一些有趣的事情,但是如果有人 花很多时间想出自己的方法来隐藏其他文件 在图像内部,你将无法检测到它。

相关问题 更多 >