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

这取决于 - 您的桌面可能会通过使用file.或者它可能只是查看文件后缀并相信(例如参见文件扩展名和 MIME 类型快速参考 )。

无论如何,视频播放器都会发挥其作用自己的检查,以确保文件正确加载,并且只有幼稚的实现才会只查看前几个字节。

file程序使用混合信息(包括所采取措施的权重)。 mpeg4 文件有很多file可能不使用(或不需要)的信息。参见示例MPEG-4 Part 14 音频(M4A、M4B、M4P)格式和恢复示例, 和MP4 签名格式:文档和恢复示例

相关内容