Форматы · Определение типа

Как определить формат файла без расширения

Пришёл файл вообще без точки и расширения, или с расширением, которому нельзя доверять? Настоящий формат файла зашит не в имени, а в первых байтах самого файла — так называемой сигнатуре, или magic bytes. По ней можно точно узнать, что перед вами: PDF, картинка, архив или замаскированный исполняемый файл. Разбираем все способы — от онлайн-определителя за десять секунд до чтения заголовка в hex-редакторе и в коде.

Обновлено: 4 июля 2026 Редакция Loadfile Чтение 10 мин
Определение формата файла по сигнатуре
Коротко

Расширение — это просто буквы в имени файла, их легко удалить или подменить. Настоящий формат хранится в сигнатуре — первых байтах файла. Чтобы узнать формат без расширения: (1) для разовой задачи загрузите файл в онлайн-определитель или откройте его в hex-редакторе и сверьте первые байты с таблицей сигнатур ниже; (2) в Linux и macOS выполните команду file имя_файла; (3) для массы файлов используйте утилиту TrID или библиотеку python-magic. По сигнатуре PDF начинается с %PDF, PNG — с ‰PNG, ZIP и DOCX — с PK, а Windows-программа — с MZ.

Содержание
  1. Что такое сигнатура файла (magic bytes)
  2. Способ 1. Онлайн-определитель формата
  3. Способ 2. Hex-редактор и таблица сигнатур
  4. Таблица сигнатур популярных форматов
  5. Способ 3. Команда file, TrID и DROID
  6. Способ 4. Определение формата в коде
  7. Как вернуть расширение в Windows и macOS
  8. Почему нельзя доверять расширению
  9. Частые вопросы

Что такое сигнатура файла (magic bytes)

Операционная система показывает тип файла по расширению — тексту после последней точки в имени (.pdf, .jpg, .docx). Но расширение — это метка для удобства, а не часть содержимого. Его можно стереть, переименовать отчёт.pdf в отчёт.txt или вовсе убрать — сам файл при этом не изменится ни на байт.

Настоящий формат определяется по сигнатуре — фиксированной последовательности байтов в самом начале файла (реже — в конце или по смещению). Её называют magic bytes или «магическое число». Именно на сигнатуру ориентируются программы, антивирусы и веб-серверы, когда решают, как обработать файл. Например, любой корректный PNG начинается с байтов 89 50 4E 47, что в тексте читается как ‰PNG, а ZIP-архив (и построенные на нём DOCX, XLSX, EPUB, APK) — с 50 4B, то есть PK (инициалы Фила Каца, создателя формата).

💡
Главный принцип

Хотите узнать реальный формат — смотрите не на имя файла, а на его первые байты. Имя лжёт легко, сигнатура — почти никогда.

Способ 1. Онлайн-определитель формата

Самый быстрый вариант для одного-двух файлов — сервис, который анализирует содержимое и возвращает вероятный тип. Вы загружаете файл, сервис читает его заголовок и сообщает: «это JPEG», «это SQLite-база», «это исполняемый файл Windows». Подходит, когда под рукой нет специальных программ.

  1. Откройте онлайн-определитель типа файла в браузере.
  2. Перетащите файл в окно загрузки или выберите его вручную.
  3. Прочитайте результат: сервис покажет формат и часто — рекомендуемое расширение.
  4. Добавьте это расширение к имени файла и открывайте подходящей программой.
Не загружайте личное и секретное

Онлайн-сервис получает ваш файл на чужой сервер. Для паспортов, договоров, рабочих документов и любых конфиденциальных данных используйте офлайн-способы — hex-редактор или команду file. Подробнее о рисках — в разделе безопасность файлов.

Способ 2. Hex-редактор и таблица сигнатур

Универсальный офлайн-метод: открыть файл в шестнадцатеричном (hex) редакторе и посмотреть на первые байты. Hex-редактор показывает содержимое файла как таблицу байтов в шестнадцатеричном виде и рядом — их текстовое представление (ASCII). Часто формат виден прямо по буквам: %PDF, Rar!, GIF8.

  1. Установите бесплатный hex-редактор: HxD (Windows), Hex Fiend (macOS) или GHex (Linux). Онлайн-варианты тоже есть, но для приватных файлов берите десктопный.
  2. Откройте в нём проблемный файл.
  3. Посмотрите на самую первую строку — первые 4–8 байтов слева (hex) и их расшифровку справа (текст).
  4. Сверьте значение с таблицей сигнатур ниже и определите формат.

Для форматов на основе контейнеров сигнатуру иногда нужно искать не в самом начале. Например, у видео MP4 и MOV метка ftyp стоит начиная с 5-го байта (по смещению 4), а у ZIP пустой архив может начинаться с 50 4B 05 06. Но в подавляющем большинстве случаев хватает первых четырёх байтов.

Таблица сигнатур популярных форматов

Первые байты самых частых форматов. Слева — как они выглядят в hex-редакторе (шестнадцатеричные значения), в центре — их текстовое представление, справа — что это за файл.

Сигнатура (hex)Текст (ASCII)Формат
25 50 44 46%PDFPDF-документ (чем открыть PDF)
FF D8 FFÿØÿИзображение JPEG / JPG
89 50 4E 47‰PNGИзображение PNG
47 49 46 38GIF8Анимация / картинка GIF
52 49 46 46RIFFКонтейнер WebP, WAV, AVI
50 4B 03 04PK··ZIP, а также DOCX, XLSX, EPUB, APK
52 61 72 21Rar!Архив RAR
37 7A BC AF7z¼¯Архив 7z
1F 8B··Архив GZIP (.gz, .tar.gz)
49 44 33ID3Аудио MP3 (с тегами ID3)
66 74 79 70 (со смещения 4)ftypВидео MP4, M4A, MOV, HEIC
4D 5AMZПрограмма Windows (.exe, .dll)
7F 45 4C 46·ELFИсполняемый файл Linux
D0 CF 11 E0ÐÏ··Старый MS Office (.doc, .xls, .ppt)
53 51 4C 69 74 65SQLiteБаза данных SQLite
!
ZIP-семейство

Если файл начинается с PK — это ZIP-контейнер, но внутри может быть документ Word, таблица Excel, книга EPUB или Android-приложение APK. Чтобы понять точнее, распакуйте архив и посмотрите на структуру: у DOCX внутри лежит папка word/, у EPUB — файл mimetype.

Способ 3. Команда file, TrID и DROID

В Linux и macOS формат определяется одной командой в терминале — встроенная утилита file читает сигнатуру и базу известных типов и сразу выдаёт вердикт:

file mystery # mystery: PDF document, version 1.7 file -i mystery # mystery: application/pdf; charset=binary

Флаг -i (в macOS -I) выводит MIME-тип — тот самый, по которому файлы различают браузеры и почтовые серверы. В Windows такой команды нет из коробки, но file входит в состав Git Bash, WSL и пакета Cygwin.

Когда файлов много или формат редкий, помогают специализированные определители:

  • TrID — утилита с большой базой сигнатур: анализирует файл и выводит список форматов с вероятностью совпадения. Удобна для редких и старых форматов.
  • DROID — инструмент Национального архива Великобритании, рассчитанный на массовую идентификацию тысяч файлов в архивах и хранилищах.
💡
Быстрая проверка без установки

В Linux и macOS первые байты можно посмотреть прямо в терминале: xxd mystery | head или head -c 16 mystery | xxd покажут начало файла в hex — дальше сверяйте с таблицей выше.

Способ 4. Определение формата в коде

Если файлы приходят потоком — например, пользователи загружают вложения на сайт, — проверять формат вручную бессмысленно. Определение по сигнатуре встраивают прямо в код. В Python это делает библиотека python-magic (обёртка над той же libmagic, что и команда file):

import magic mime = magic.from_buffer(open("mystery", "rb").read(2048), mime=True) # 'application/pdf'

Простейший случай — прочитать несколько первых байтов и сравнить их с известной сигнатурой вручную:

with open("mystery", "rb") as f: head = f.read(4) if head == b"%PDF": print("Это PDF") elif head[:3] == b"\xFF\xD8\xFF": print("Это JPEG")

Проверка формата по сигнатуре — обязательный элемент безопасной загрузки файлов: доверять расширению или заголовку Content-Type от клиента нельзя, реальный тип определяют только по содержимому. В корпоративных продуктах, где через формы и API проходят тысячи документов, такую валидацию и последующую обработку файлов обычно закладывают в архитектуру ещё на старте — этим занимается команда YuSMP Group при разработке веб-сервисов и интеграций. Если же вам нужно просто перевести определившийся файл в удобный формат, пригодится подборка онлайн-конвертеров файлов.

Как вернуть расширение в Windows и macOS

Когда формат определён, остаётся вернуть файлу правильное расширение, чтобы он открывался двойным кликом. Сначала включите отображение расширений — по умолчанию система их скрывает.

  1. Windows 10/11: откройте Проводник → вкладка «Вид» → поставьте галочку «Расширения имён файлов». Затем переименуйте файл, дописав нужное расширение через точку, например mystery.pdf.
  2. macOS: Finder → «Настройки» → «Дополнения» → включите «Показывать все расширения имён файлов». Переименуйте файл и подтвердите смену расширения.
  3. Откройте файл. Если система по-прежнему не знает, чем его открыть, загляните в раздел форматы файлов — там собраны программы под каждый тип.
!
Смена расширения не меняет формат

Переименование .txt в .jpg не превратит текст в картинку — оно лишь подсказывает системе, какой программой открывать. Если сигнатура не совпадает с расширением, файл всё равно не откроется. Чтобы действительно поменять формат, нужна конвертация.

Почему нельзя доверять расширению

Расхождение между расширением и настоящим форматом бывает не только по ошибке. Иногда это делают намеренно — и как раз здесь определение по сигнатуре важнее всего.

  • Подмена для маскировки вредоносного файла. Опасный .exe или скрипт переименовывают в .pdf или .jpg, чтобы жертва не насторожилась. Сигнатура MZ вместо %PDF сразу выдаёт обман. Как проверять такие файлы — в материале как проверить файл на вирусы.
  • Двойное расширение. Файл otchet.pdf.exe при скрытых расширениях выглядит как otchet.pdf — классическая уловка из вложений в письмах.
  • Сбой при выгрузке. Программы и мессенджеры иногда сохраняют файл вообще без расширения или с обобщённым .bin, .dat, .tmp.
  • Кодировка вместо формата. Если файл открывается, но текст в нём — «кракозябры», проблема не в формате, а в кодировке; разбор — в статье кракозябры: как исправить кодировку файла.

Вывод один: имя файла — подсказка, а не доказательство. Реальный формат всегда решают первые байты, и теперь у вас есть все инструменты, чтобы их прочитать.

Частые вопросы

Как узнать формат файла без расширения быстрее всего?

Для одного файла — загрузить его в онлайн-определитель типа или открыть в hex-редакторе и сверить первые байты с таблицей сигнатур. В Linux и macOS ещё быстрее команда file имя_файла в терминале.

Что такое magic bytes и сигнатура файла?

Это фиксированная последовательность байтов в начале файла, по которой определяется его формат. Например, PDF всегда начинается с %PDF, PNG — с ‰PNG. Сигнатура — часть содержимого файла и не зависит от имени и расширения.

Можно ли определить формат, просто переименовав файл?

Нет. Переименование меняет только метку в имени, а не содержимое. Если дописать неверное расширение, файл не откроется. Сначала определите настоящий формат по сигнатуре, а потом ставьте соответствующее расширение.

Файл начинается с PK — что это?

Это ZIP-контейнер. Но внутри может быть документ Word (DOCX), таблица Excel (XLSX), книга EPUB или Android-приложение APK — все они устроены как ZIP. Чтобы уточнить, распакуйте архив и посмотрите на его внутреннюю структуру.

Почему у файла нет расширения?

Так бывает, когда файл выгружен из программы или мессенджера, скачан по прямой ссылке без имени, либо расширение случайно удалили при переименовании. На содержимое это не влияет — формат по-прежнему определяется по сигнатуре.

Опасно ли открывать файл с неизвестным расширением?

Может быть опасно: под безобидным расширением иногда прячут исполняемый файл. Сначала определите реальный формат по сигнатуре, и если это программа или скрипт, которого вы не ждали, — не запускайте его и проверьте антивирусом.

Как определить формат сразу у множества файлов?

Используйте утилиту TrID или DROID — они рассчитаны на пакетную идентификацию, — либо напишите короткий скрипт с библиотекой python-magic, которая читает сигнатуру и возвращает MIME-тип каждого файла.

Читайте также