Unix 決定檔案的類型,在固定偏移處尋找魔法檔案。它怎麼能做到如此可靠呢?

Unix 決定檔案的類型,在固定偏移處尋找魔法檔案。它怎麼能做到如此可靠呢?

https://linux.die.net/man/1/file

魔術測試用於檢查具有特定固定格式資料的檔案。典型的例子是二進位可執行(編譯程式)a.out文件,其格式在標準包含目錄中定義,#include <a.out.h> 也可能#include <exec.h>在標準包含目錄中定義。這些文件在文件開頭附近的特定位置儲存了一個“幻數”,它告訴 UNIX 作業系統該文件是二進位可執行文件,以及其中的幾種類型。 「魔法」的概念已擴展到資料檔案。任何在文件中具有較小固定偏移量的不變標識符的文件通常都可以用這種方式進行描述。標識這些檔案的資訊是從編譯後的 magic 檔案中讀取的,如果編譯後的檔案不存在,/usr/share/misc/magic.mgc則從目錄中的檔案讀取。/usr/share/misc/magic另外,如果$HOME/.magic.mgc$HOME/.magic存在,它將優先於系統魔法檔案使用。如果/etc/magic存在,它將與其他魔法檔案一起使用。

很公平。因此,如果碰巧一個文字檔案恰好包含特定於mp4適當偏移處的影片的「幻數」…雙擊這樣的文字檔案會導致啟動影片播放器而不是文字編輯器?

答案1

這取決於 - 您的桌面可能會透過使用 . 檢視檔案的 MIME 類型來索引檔案file。或者它可能只是查看文件後綴並相信(例如參見檔案副檔名和 MIME 類型快速參考 )。

無論如何,視訊播放器都會發揮其作用自己的檢查,以確保文件正確加載,並且只有幼稚的實現才會只查看前幾個位元組。

file程序使用混合資訊(包括所採取措施的權重)。 mpeg4 檔案有很多file可能不使用(或不需要)的資訊。請參閱範例MPEG-4 Part 14 音訊(M4A、M4B、M4P)格式與復原範例, 和MP4 簽名格式:文件和復原範例

相關內容