Эти четыре байта пишутся как %PDF. Сразу за ними идёт версия PDF, например %PDF-1.7.
Что такое магическое число?
Магическое число это короткая фиксированная последовательность байт в начале каждого файла. Она определяет формат до того, как будет прочитано любое расширение. На этой странице мы расскажем, как они работают, как выглядят наиболее распространённые сигнатуры и почему проверка магических байт всегда побеждает проверку по имени файла.
- Простое объяснение
- Охвачено 14 форматов
- Байты никогда не покидают ваш браузер
Ключевые факты
Что это такое?
Магическое число это фиксированная последовательность байт (обычно от 2 до 8 байт) в начале файла, которая определяет формат.
Где оно находится?
Почти всегда по смещению 0 байт. Образы дисков ISO 9660 это известное исключение: их сигнатура
CD001находится по смещению 32769 (сектор 16).Расширение или байты?
Байты побеждают. Переименование
report.exeвreport.pdfменяет метку, а не содержимое. Магические байты по-прежнему читаются как4D 5A.Что вы получаете в ответ
Наша проверка типа файла сообщает один из четырёх вердиктов: MATCH, MISMATCH, AMBIGUOUS или UNKNOWN. Каждый это детерминированный ответ о принадлежности к формату, а не о безопасности.
Приватность
Бесплатный режим одиночного файла работает полностью в вашем браузере. Байты никогда не покидают ваше устройство.
Область безопасности
Проверка магических байт определяет формат, а не вредоносное ПО. Используйте её как первый сигнал, а не как вердикт о вирусе.
Магическое число (также называемое сигнатурой магических байт или сигнатурой файла) это короткая фиксированная последовательность байт, записанная в самом начале файла, которая определяет его истинный формат. Операционная система использует её до любого расширения файла. Расширение это лишь подсказка; магическое число это истина.
Справочник сигнатур магических байт
14 широко используемых сигнатур, взятых из спецификаций форматов. Шестнадцатеричные байты в верхнем регистре, разделены пробелами. В ASCII-предпросмотре непечатаемые байты заменяются точкой.
PDF
- Магические байты (hex):
25 50 44 46- ASCII:
%PDF- Расширения:
- MIME-тип:
application/pdf- Смещение:
- байт 0
PNG
- Магические байты (hex):
89 50 4E 47 0D 0A 1A 0A- ASCII:
.PNG....- Расширения:
- .png
- MIME-тип:
image/png- Смещение:
- байт 0
JPEG
- Магические байты (hex):
FF D8 FF- ASCII:
...- Расширения:
- .jpg, .jpeg
- MIME-тип:
image/jpeg- Смещение:
- байт 0
GIF
- Магические байты (hex):
47 49 46 38 39 61- ASCII:
GIF89a- Расширения:
- .gif
- MIME-тип:
image/gif- Смещение:
- байт 0
BMP
- Магические байты (hex):
42 4D- ASCII:
BM- Расширения:
- .bmp
- MIME-тип:
image/bmp- Смещение:
- байт 0
ZIP
- Магические байты (hex):
50 4B 03 04- ASCII:
PK..- Расширения:
- .zip
- MIME-тип:
application/zip- Смещение:
- байт 0
RAR (v5)
- Магические байты (hex):
52 61 72 21 1A 07 01 00- ASCII:
Rar!....- Расширения:
- .rar
- MIME-тип:
application/vnd.rar- Смещение:
- байт 0
7-Zip
- Магические байты (hex):
37 7A BC AF 27 1C- ASCII:
7z....- Расширения:
- .7z
- MIME-тип:
application/x-7z-compressed- Смещение:
- байт 0
DOCX (Office Open XML)
- Магические байты (hex):
50 4B 03 04- ASCII:
PK..- Расширения:
- .docx
- MIME-тип:
application/vnd.openxmlformats-officedocument.wordprocessingml.document- Смещение:
- байт 0
XLSX (Office Open XML)
- Магические байты (hex):
50 4B 03 04- ASCII:
PK..- Расширения:
- .xlsx
- MIME-тип:
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet- Смещение:
- байт 0
APK (Android package)
- Магические байты (hex):
50 4B 03 04- ASCII:
PK..- Расширения:
- .apk
- MIME-тип:
application/vnd.android.package-archive- Смещение:
- байт 0
MP4 (ISO BMFF)
- Магические байты (hex):
00 00 00 20 66 74 79 70- ASCII:
....ftyp- Расширения:
- .mp4, .m4v
- MIME-тип:
video/mp4- Смещение:
- байт 0
Windows PE / EXE
- Магические байты (hex):
4D 5A- ASCII:
MZ- Расширения:
- .exe, .dll, .sys
- MIME-тип:
application/vnd.microsoft.portable-executable- Смещение:
- байт 0
ISO 9660
- Магические байты (hex):
43 44 30 30 31- ASCII:
CD001- Расширения:
- .iso
- MIME-тип:
application/x-iso9660-image- Смещение:
- байт (сектор 16)
PDF
PNG
Восемь байт, включая маркеры конца строки PNG (
0D 0A 1A 0A), чтобы ошибки передачи были обнаруживаемы.JPEG
Маркер начала изображения. Четвёртый байт отличает JFIF (
E0) от EXIF (E1).GIF
GIF89a это современный вариант. GIF87a (
47 49 46 38 37 61) это устаревшее написание, оно также допустимо.BMP
Два байта. Легко подделать; для уточнения используйте заголовок размера файла со смещением 2.
ZIP
Заголовок локального файла. Пустые архивы вместо этого используют
50 4B 05 06(конец центрального каталога).RAR (v5)
Сигнатура RAR 5. Более старые файлы RAR 1.5 - 4.x используют 7-байтовую сигнатуру, заканчивающуюся на
00.7-Zip
Шесть байт, в которых читается
7z, за которыми следуют три магических байта.DOCX (Office Open XML)
DOCX это ZIP-контейнер. По одной только сигнатуре нельзя отличить документ Word от обычного ZIP. Смотрите на внутренний
[Content_Types].xml.XLSX (Office Open XML)
Та же оговорка, что и для DOCX. Проверьте манифест OOXML, чтобы подтвердить, что это таблица.
APK (Android package)
APK это ZIP-контейнер с манифестом Android внутри. Одной только сигнатуры ZIP недостаточно для подтверждения.
MP4 (ISO BMFF)
Бокс
ftypсо смещением 4 содержит идентификатор бренда. Распространённые бренды:isom,mp42,iso5.Windows PE / EXE
Два байта (Марк Збиковски). Смещение заголовка PE считывается из байта 0x3C; там расположена реальная магия
PE\0\0.ISO 9660
ISO 9660 размещает дескриптор тома в секторе 16, поэтому сигнатура находится в байте 32769 (16 * 2048 + 1).
Как работает проверка магических байт
- 1
Прочитайте первые байты
Откройте файл как бинарный поток и прочитайте первые 8 - 16 байт. Этого достаточно, чтобы распознать каждую сигнатуру в таблице выше.
- 2
Сверьте с известными сигнатурами
Сопоставьте байты с базой известных форматов. Несколько форматов могут иметь общий префикс (каждый документ Office это ZIP), поэтому проверка возвращает самое точное совпадение.
- 3
Сверьте с расширением файла
Если обнаруженный формат не совпадает с тем, что заявляет расширение, вердикт MISMATCH. Если подходит несколько форматов, AMBIGUOUS. Если ничего не подходит, UNKNOWN.
Почему это важно?
Переименование файла из invoice.exe в invoice.pdf не меняет его байты. Первые два байта по-прежнему читаются как 4D 5A. Проверка магического числа сразу это распознаёт. Полезно, когда вложение выглядит легитимным, но расширение было изменено перед отправкой.
Проверка магических байт работает и в обратную сторону: файл вообще без расширения, но с правильными байтами PNG, остаётся PNG, и ваш просмотрщик изображений сможет его открыть. Принадлежность к формату живёт в байтах, а не в имени файла.
Словарь
Подробно по каждому формату
Каждая такая страница посвящена одному формату: как его распознать, типичные несоответствия и проверка в один клик. Бросьте файл на любую из них, и вердикт будет одинаковым.
- .pdfPDF
Portable Document Format file
Magic bytes
25 50 44 46Это действительно PDF? - .exeEXE
Windows executable
Magic bytes
4D 5AЭто действительно EXE? - .zipZIP
compressed archive
Magic bytes
50 4B 03 04Это действительно ZIP? - .docxDOCX
Microsoft Word document
Magic bytes
50 4B 03 04Это действительно DOCX? - .xlsxXLSX
Microsoft Excel spreadsheet
Magic bytes
50 4B 03 04Это действительно XLSX? - .pngPNG
Portable Network Graphics image
Magic bytes
89 50 4E 47 0D 0A 1A 0AЭто действительно PNG? - .jpgJPG
JPEG photograph
Magic bytes
FF D8 FFЭто действительно JPG? - .mp4MP4
MPEG-4 video
Magic bytes
00 00 00 20 66 74 79 70Это действительно MP4? - .apkAPK
Android package
Magic bytes
50 4B 03 04Это действительно APK? - .isoISO
optical disc image
Magic bytes
43 44 30 30 31Это действительно ISO?
Часто задаваемые вопросы
Попробуйте на своём файле
Бросьте любой файл. Проверка работает локально и сообщает вердикт меньше чем за секунду. Байты никогда не покидают ваш браузер.
Открыть проверку типа файлаПохожие материалы
Раздел
Расширение файла и тип файла
Расширение файла это всего лишь ярлык. Тип файла это то, что на самом деле говорят байты. Вот как они расходятся и как их различить.
Читать →Раздел
Безопасен ли мой файл?
Проверка по магическим байтам определяет формат файла. Она не скажет вам, является ли файл вредоносным. Вот что она покрывает и где вам все же нужен настоящий антивирусный сканер.
Читать →Инструмент
Проверка типа файла
Перетащите любой файл. Возвращает один из четырёх вердиктов менее чем за секунду. Байты никогда не покидают ваш браузер при бесплатном использовании.
Попробовать →