用于深度检查的更复杂的文件命令?

用于深度检查的更复杂的文件命令?

有时看起来标准file命令(我的 Ubuntu 系统上的 5.04)不够复杂(或者我只是使用错误,这很可能是)。

例如,当我在一个.exe文件上运行它时,并且我非常肯定它包含一些存档,我希望输出如下所示:

$ improved-file foo.exe
foo.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
         .zip archive included (just use unzip to extract)

其他事宜:

  • 它不检测不同格式的串联
  • 它不检测常见的文件格式,例如 .epub,它只是一个 .zip 容器,内部有一些标准化的 .xml 文件等(file显示“数据”)

一个此类 .exe 文件的示例包含存档 - 我猜测了一些存档格式,并使用反复试验方法尝试了相应的解包命令 - 最终奏效了 - 但我更喜欢更面向自动检查的工作流程。

答案1

我想不出一种一体化的工具,但有些程序可以处理给定类别的大量文件。

例如,p7zip可以识别大量存档格式,因此如果您怀疑某个文件是存档,请尝试7z l对其进行运行。

$ 7z l ta12b563enu.exe
Type = Cab
Method = MSZip

如果您怀疑文件是图像,请尝试图像魔术师

$ identify keyboard.jpg.gz
keyboard.jpg.gz=>/tmp/magick-XXV8aR5R JPEG 639x426 639x426+0+0 8-bit DirectClass 37.5KB 0.000u 0:00.000

对于音频或视频文件,请尝试mplayer -identify -frames 0.

如果您发现无法识别的文件file,您可以向你的魔法库的作者

答案2

没有什么问题file。它正在做它应该做的事情:根据文件中的规则检查文件magic(5)。如果您希望提出一种通用方法来识别这些类型的文件,那么您可以提交新的魔术规则。阅读联机帮助页以magic获取更多信息。

file我怀疑永远不会做的一件事是“检测串联”。如果不扫描文件中的每个字节,就无法确定下一个段何时开始 - 有些事情file不做,或者不想做。

顺便说一句,要区分 epub 文件,您需要检测它与 Ear 文件之间的差异,后者使用相同的基本结构。

相关内容