“魔法测试”对于 file 命令意味着什么?

“魔法测试”对于 file 命令意味着什么?

我在阅读有关该file命令的内容时发现了一些我不太明白的内容:

file 旨在确定正在查询的文件类型.... file 通过执行来完成此操作对相关文件进行一组测试:

  • 文件系统测试,
  • 魔法测试,
  • 语言测试

什么是魔法测试?

答案1

这里的“魔法”指的是“神奇的数字“:位于文件中已知位置的特殊值,用于标识其类型。该file命令具有这些数字以及它们对应的类型的数据库。与该数据库一起使用的库称为libmagic,您可以从您自己的程序中访问它。

它们不一定是我们想象的“数字”。例如,PNG 图像文件始终以“\x89PNG\r\n\x1a\n”开头,Java 类以四个字节(十六进制)CA FE BA BE 开头,HTML 文件在某处有“< html”临近开始。它只是该类型文件中已知的一些小数据序列,通常非常接近开头。

当人们定义文件格式时,他们通常会故意包含其中一种文件格式,或者只是作为使格式适合在一起的一部分。file之后可以使用它们。它还具有其他方法来实际查看文件的内容以猜测它是什么(“语言测试”)。

答案2

这指的是许多文件格式在文件开头的“魔术字节”,它显示了文件的类型。

例如,如果一个文件以 then 开头#!,则它被视为脚本。

相关内容