好问题!
如果您要检查的只是在图像文件末尾附加的RAR或ZIP文件,则通过unrar
或unzip
命令运行它是最简单的方法。
如果您想要更快但不太准确的检查,则可以检查一些表示某些类型文件的特殊文件格式签名。识别文件格式的常用UNIX工具是file
。它使用二进制文件签名的数据库,其格式在magic(5)手册页中定义。它不会在JPEG的末尾为您找到RAR文件,因为它仅查看文件的开头以尝试快速识别它们,但是您可以修改其源代码以执行您想要的操作。您还可以重用其文件签名数据库。如果您在“ Rar文件”部分中查看其数据库的归档文件部分 ,则会显示以下内容:
# RAR archiver (Greg Roelofs, newt@uchicago.edu)
0 string Rar! RAR archive data,
这表示如果您的JPEG文件包含四个字节Rar!
那将是可疑的。但是您必须详细检查Rar文件格式规范 ,以检查是否存在更多的Rar文件结构以避免误报-该网页还包含四个字节的Rar!
但没有附加隐藏文件:P
但是,如果有人知道您的自动检查的详细信息,他们可以轻松地解决它们。最简单的解决方法是在将文件的所有字节附加到JPEG之前反转它们的所有字节。这样,您的签名都不会捕获该文件的反向版本。
如果某人真的想在图像中隐藏文件,则有各种各样的方法无法轻易检测到。通用术语是“隐写术”。例如, 维基百科页面显示了树木的图片,其中隐藏了猫的图片。对于更简单的隐写方法,有一些统计测试可以表明对图片做了一些有趣的事情,但是如果某人花费大量时间想出自己的方法来隐藏图像中的其他文件,您将无法发现它。
0
我碰到了一个链接,该链接显示了如何隐藏图像文件中的文件数量: http : //lifehacker.com/282119/hide-files-inside-of-jpeg-images有关检测的更多讨论,请参见: http:// ask .metafilter.com / 119943 / How-to-detect-RARsEXEs-hidden-in-JPGs
我试图找出一种以编程方式检测图像文件是否内部隐藏其他文件的好方法是什么?我应该尝试解压缩该文件以查看是否还有其他文件吗?
我不是以编程方式绑定的,但是在JVM上运行良好的东西会很棒。
更新资料
一种方法:
像这样的事情会工作(由metafilter上的某人建议)
我可以将JMagick用于这种方法。