Files

用於深度檢查的更複雜的文件命令?

  • June 21, 2014

有時似乎標準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 文件的範例- 我猜到了一些存檔格式並嘗試了相應的 unpack-commands 並嘗試了一種嘗試錯誤的方法 - 最終奏效了 - 但我寧願更喜歡自動檢查面向工作流。

我想不出一個多合一的工具,但是有些程序可以處理給定類別的大量文件。

例如,p7zip可以辨識大量的存檔格式,因此如果您懷疑某個文件是存檔,請嘗試7z l在其上執行。

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

如果您懷疑文件是圖像,請嘗試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

對於音頻或影片文件,請嘗試mplayer -identify -frames 0.

如果您發現file無法辨識的文件,您可能會向您的魔法庫的作者提出功能請求。

沒有錯file。它正在做它應該做的事情:根據文件中的規則檢查magic(5)文件。如果您想提出一種通用的方法來辨識這些類型的文件,那麼您可以送出新的魔術規則。閱讀手冊頁以magic獲取更多資訊。

我懷疑file永遠不會做的一件事是“檢測連接”。如果不掃描文件中的每個字節,就無法確定下一段何時開始——有些事情file不做,或者想做。

順便說一句,要區分 epub 文件,您需要檢測它與使用相同基本結構的 ear 文件之間的差異。

引用自:https://unix.stackexchange.com/questions/20223