我遇到了一个链接,其中显示了如何隐藏图片文件中的文件数量: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来实现这种方法。
答案 0 :(得分:2)
很棒的问题!
如果你要检查的是一个RAR或ZIP文件附加到一个结尾
图像文件,然后通过unrar
或unzip
命令运行它
最简单的方法。
如果您想要更快但不太精确的检查,您可以检查一些
特殊文件格式签名,指示某些类型的文件。该
通常用于识别文件格式的UNIX工具是file
。它使用了
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文件包含四个字节Rar!
会怀疑的。但是您必须详细检查Rar file format
spec以检查是否有更多的Rar文件结构
存在以避免误报 - 此网页还包含四个字节
Rar!
但没有附加隐藏文件:P
但如果有人知道您的自动检查的详细信息,他们可以 轻松解决他们。最简单的解决方法是反转所有字节 在将它们附加到JPEG之前的文件。那你没有 签名将捕获文件的反转版本。
如果有人真的想隐藏图片中的文件,那就有各种各样的 如何做到这一点,你将无法轻易检测到。一般 这个术语是“隐写术”。Wikipedia page,for 例如,显示一张树木的图片,里面藏有猫的图片 它。对于更简单的隐写方法,有统计测试 可以表明对图片做了一些有趣的事情,但如果有人 花了很多时间想出自己的方法来隐藏其他文件 在图像内部,您将无法检测到它。
答案 1 :(得分:0)
要查看文件中是否附加了任何元数据或其他信息,您可以对图像进行解码并重新编码,以查看尺寸是否显着减小。对于JPEG文件,您可能希望执行类似保留原始DCT数据的无损旋转,否则文件大小可能仅通过编码差异而改变。
较小的结果不会证明隐藏数据,但它可能是您需要仔细查看的指标。
你从不分享你提出这个问题的动机,但我猜它是关于将图像下载到公共网站的。在这种情况下,您真的不应该关心提交的图像是否包含无关数据,您应该只是清理输入。解码/重新编码过程对此非常适合。
答案 2 :(得分:0)
您可以搜索文件签名。 http://en.wikipedia.org/wiki/List_of_file_signatures 例如对于7z文件,sigature是37 7A BC AF 27 1C 对于rar文件,它是52 61 72 21 1A 07 00 而对于拉链来说,它是50 4B 03 04 在十六进制编辑器中查看压缩文件,例如HXD