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

max*_*zig 5 file-command file-format files

有时似乎标准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)
Run Code Online (Sandbox Code Playgroud)

其他事宜:

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

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

Arc*_*ege 6

没有任何问题file。它正在做它应该做的事情:根据文件中的规则检查magic(5)文件。如果您想提出一种通用方法来识别这些类型的文件,那么您可以提交新的魔术规则。阅读手册页magic了解更多信息。

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

顺便说一下,要区分 epub 文件,您需要检测它与使用相同基本结构的 ear 文件之间的区别。


Gil*_*il' 5

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

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

$ 7z l ta12b563enu.exe
…
Type = Cab
Method = MSZip
…
Run Code Online (Sandbox Code Playgroud)

如果您怀疑文件是图像,请尝试ImageMagick

$ 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
Run Code Online (Sandbox Code Playgroud)

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

如果您发现file无法识别的文件,您可以向您的魔法库作者提出功能请求。