Unix принимает решение о типе файла, ища магические файлы по фиксированным смещениям. Как это может быть надежно?

Unix принимает решение о типе файла, ища магические файлы по фиксированным смещениям. Как это может быть надежно?

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

Тесты «магии» используются для проверки файлов с данными в определенных фиксированных форматах. Каноническим примером этого является исполняемый двоичный a.outфайл (скомпилированная программа), формат которого определен в #include <a.out.h> и, возможно, #include <exec.h>в стандартном каталоге include. Эти файлы имеют «магическое число», хранящееся в определенном месте около начала файла, которое сообщает операционной системе UNIX, что файл является исполняемым двоичным файлом, и какой из нескольких его типов. Концепция «магии» была применена в расширении к файлам данных. Любой файл с некоторым инвариантным идентификатором с небольшим фиксированным смещением в файле обычно может быть описан таким образом. Информация, идентифицирующая эти файлы, считывается из скомпилированного файла «магии» /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 Часть 14 Аудио (M4A,M4B,M4P) и Пример восстановления, иФормат подписи MP4: пример документации и восстановления

Связанный контент