「魔法測試」對於 file 指令意味著什麼?

「魔法測試」對於 file 指令意味著什麼?

我在閱讀有關該file命令的內容時發現了一些我不太明白的內容:

file 旨在確定正在查詢的文件類型.... file 透過執行來完成此操作對相關文件進行一組測試:

  • 檔案系統測試,
  • 魔法測試,
  • 語言測試

什麼是魔法測試?

答案1

這裡的「魔法」指的是「神奇的數字「:位於檔案中已知位置的特殊值,用於標識其類型。該file命令有一個包含這些數字以及它們對應的類型的資料庫。與該資料庫一起使用的庫稱為libmagic,您可以從您自己的程式中存取它。

它們不一定是我們想像的「數字」。例如,PNG 映像檔始終以“\x89PNG\r\n\x1a\n”開頭,Java 類別以四個位元組(十六進位)CA FE BA BE 開頭,HTML 檔案在某處有“< html”臨近開始。它只是該類型檔案中已知的一些小資料序列,通常非常接近開頭。

當人們定義文件格式時,他們通常會故意包含其中一種文件格式,或者只是作為使格式適合在一起的一部分。file之後可以使用它們。它還具有其他方法來實際查看文件的內容以猜測它是什麼(“語言測試”)。

答案2

這指的是許多檔案格式在檔案開頭的“魔術位元組”,它顯示了檔案的類型。

例如,如果一個檔案以 then 開頭#!,則它被視為腳本。

相關內容