Сырой заголовок файла это его первая часть, показанная побайтно, а не как именованные поля метаданных. Многие форматы файлов начинаются с фиксированного набора байтов, который часто называют сигнатурой или магическим числом. Программы читают этот шаблон, чтобы определить тип файла.
В отчете о метаданных поле Raw Header показывает эти байты в виде шестнадцатеричных чисел. Каждая пара символов, таких как 89 или FF, обозначает 1 байт.
У электронного письма тоже есть заголовок в верхней части, с полями From, To и Subject. В этой статье рассматривается заголовок файла.
Как выглядит это значение
Шестнадцатеричная система (основание 16) записывает каждый байт как 2 символа из цифр от 0 до 9 и букв от A до F. Поэтому байт может иметь любое значение от 00 до FF.
В кодировке символов ASCII значения от 21 до 7E соответствуют буквам, цифрам и знакам препинания, а 20 это пробел. Значения ниже 20 это управляющие коды, а 00 это полностью нулевой символ NUL.
Как прочитать необработанный заголовок файла как текст
Чтобы превратить сырой заголовок в текст, найдите каждый байт в таблице ASCII. Только байты от 20 до 7E обозначают видимый символ ASCII или пробел. Остальные байты не обозначают видимые символы, поэтому обычно можно прочитать только часть заголовка.
25 50 44 46 2Dчитается как знак процента, буквы PDF и дефис.89 50 4E 47содержит буквыPNGво 2 4 байтах.
Типичные значения
Распространенные форматы начинаются с таких сигнатур:
- Изображение PNG:
89 50 4E 47 0D 0A 1A 0A - Изображение JPEG:
FF D8 FF, гдеFF D8обозначает начало изображения - Изображение GIF:
47 49 46 38, затем39 61или37 61(GIF89a или GIF87a) - Документ PDF:
25 50 44 46 2D, затем версия, например 1.7 - Изображение TIFF, порядок байтов little-endian:
49 49 2A 00(II, затем число 42) - Изображение TIFF, порядок байтов big-endian:
4D 4D 00 2A(MM, затем число 42) - Архив ZIP и основанные на ZIP файлы Office, такие как DOCX:
50 4B 03 04(PK) - Аудио MP3 с тегом ID3v2:
49 44 33(ID3) - Аудио WAV:
52 49 46 46(RIFF), 4 байта, которые меняются, затем57 41 56 45(WAVE) - Видео MP4: 4 байта размера, затем
66 74 79 70(ftyp)
В файле TIFF первые 2 байта также задают порядок байтов для чисел в файле. В файле PDF символы после сигнатуры задают версию PDF, но запись дальше по файлу может ее переопределить.
Какие файлы его содержат
У каждого файла есть сырой заголовок, но не у каждого формата есть сигнатура. Обычные текстовые файлы начинаются сразу с текста. Программы распознают их по тому, что первые байты содержат только текстовые символы.
Почему это важно
Расширение имени файла это только часть имени, и любой может его изменить. Заголовок может показать настоящий тип файла и тип MIME, даже если расширение неверное.
Веб-сервер может не отправить тип MIME, или браузер может посчитать, что полученный тип неверный. Тогда браузер может сравнить первые байты с таблицей известных шаблонов. Команда Unix file ищет магическое число рядом с началом файла.
Заголовок также помогает замечать проблемы. Если файл с именем photo.png не начинается с 89 50 4E 47, он не соответствует формату PNG. Начало файла может быть повреждено, или файл может быть другим типом с неверным расширением.
Заголовок, состоящий только из байтов 00, не соответствует ни одной распространенной сигнатуре. Но файл MP4 может начинаться с 00, потому что маленький размер в его первых 4 байтах начинается с нуля. Когда ничего не совпадает и байты не являются текстом, браузеры рассматривают файл как application/octet-stream.