Определение формата файла
На данной странице можно определить формат файла по имени (расширению), а также по данным файла. Второй метод поможет, если файл был переименован и расширение файла не соответствует его формату. Также будет определен тип данных (двоичные, текстовые), которые содержатся в файле. Двоичные файлы можно открыть только в специальной программе, текстовые — в любом текстовом редакторе.
Обратите внимание, что файл не загружается на наш сервер, нам передаются только первые 25 байт, поэтому размер файла не имеет значения.
Для определения формата выберите файл или перетащите его сюда и дождитесь загрузки страницы
Выберите файл
Программы
- Проигрыватели аудио/видео
- Редакторы изображений
- Текстовые редакторы
- Web-браузеры
- Архиваторы
- Работа с дисками
- Офисные программы/пакеты
Файлы
- Аудио-файлы
- Видео-файлы
- Рисунки, изображения
- Растровые изображения
- Векторные изображения
- 3D-модели, изображения
- CAD-файлы
- Текст, документы
- Электронные таблицы
- Электронные книги
- Архивы, сжатые файлы
- Исполняемые файлы
- Интернет, web файлы
- Файлы игр
- Образы дисков
- Системные файлы
- Файлы шрифтов
- Зашифрованные файлы
- Размеченные документы
- Файлы резервных копий
- Файлы данных
- Файлы баз данных
- Скрипты, исходный код
- Подключаемые модули
- Файлы настроек
- Географические файлы
- Другие файлы
© Open-file.ru, 2008-2024
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как узнать тип файла без расширения (в Windows и Linux)
Если вы попали сюда из поиска и вам нужно просто быстро узнать расширение файла, то к ваших услугам онлайн сервис «Определение типа файла без расширения»: https://suip.biz/ru/?act=file-type. Благодаря ему вам не понадобится устанавливать какие-либо программы, онлайн сервис за секунду определит тип файла, который вы прислали, причём покажет результаты сканирования сразу четырьмя программами, рассмотренными в этой статье. Заодно выведет найденную в файле метаинформацию — часто там есть что-то интересное.
Если вы из тех, кто хочет узнать как работают инструменты указанного сервиса, а также как ими пользоваться на своём компьютере, то продолжайте читать.
Если вам кажется, что проблема с определением типов файлов без расширений надуманная, то это далеко не так! Во-первых, если подумать, это не такая уж простая задача. А с файлом без расширения вы можете столкнуть, например, при декодировании строки из Base64 кодировки.
Во-вторых, у этой статьи будет продолжение, в которой эти же самые инструменты, которые вы изучите на этой странице, будут использоваться для:
1) разбора прошивок (например, роутеров, IP камер) на составные части (первый этап обратной инженерии либо анализа работы устройств для поиска уязвимостей и бэкдоров)
2) поиска файловых систем на дисках и их образах (первый этап криминалистической IT экспертизы)
3) поиска удалённых файлов
Как определить тип данных, если у файла нет расширения
Если у файла нет расширения, то единственным вариантом определения его типа остаётся содержимое этого файла. Можно попробовать добавлять различные расширения к имени файла и пытаться открыть соответствующими для этого расширения программами — этот вариант медленные и неэффективный.
Определённые типы бинарных файлов могут иметь одинаковый набор байтов — по этим байтам можно сопоставить тип файлов. И именно данный метод и применяется программами, предназначенными для определения типа данных. Специфичные байты как правило располагаются не в самом начале файла, поэтому кроме самих байтов, нужно знать смещение от начала, где эти байты должны находиться. Некоторые программы в дополнении к байтам для идентификации ещё имеют список для проверки на ложное срабатывание.
Такие паттерны на английском часто называют magic — это пошло от «magic number» в исполнимых файлах. Эти файлы имеют «магическое число», хранящееся в определённом месте рядом с началом файла, которое сообщает операционной системе UNIX, что файл является двоичным исполняемым файлом и каким именно из нескольких типов. Концепция «магического числа» была применена к другим бинарным файлам. То есть файлы одинакового типа имеют одинаковую последовательность байтов в определённом месте от начала файлов.
Файл с сигнатурами, описывающими какие именно байты, на каком расстоянии от начала файла характерны для файлов того или иного типа, обычно называют magic file.
Чтобы понять количество проделанного труда при поиске уникальных байтов, обязательно присутствующих в тех или иных файлах, посмотрите на магический файл для определения файловых систем https://github.com/file/file/blob/master/magic/Magdir/filesystems
Это только один файл из перечня различных типов файлов: https://github.com/file/file/tree/master/magic/Magdir
Кроме магических чисел могут применяться и другие техники, например, программа file для проведения тестов файловых систем также может использовать системный вызов stat. Тип текстовых файлов определяется по содержащимся в них строкам (например, это может быть PHP код, файл в XML или HTML разметке, JSON и так далее).
Команда file — мгновенное определение типа любого файла
В Linux есть команда file с огромной базой сигнатур, которая очень быстро определяет тип файла:
Чтобы узнать, что за файл без расширения, выполните команду вида:
file /ПУТЬ/ДО/ФАЙЛА
§1.4. Файлы и их форматы
Данные можно скрывать и не в тексте, а в произвольных файлах. Давайте изучим, как устроены различные форматы файлов и содержимое в них, и как можно спрятать в них информацию. Каждый день мы сталкиваемся с множеством разных форматов — текстовые файлы, таблицы, презентации, видеозаписи, картинки, аудиофайлы и другие.
Каким образом операционная система понимает, как открыть тот или иной файл? По расширению: например, dog.jpg — это изображение, а file.mp4 — это видео. С каждым расширением ассоциированы программы, которые могут открывать соответствующие файлы.
В Windows ассоциированные программы изменяются в приложении «Параметры».
Расширения и форматы
Давайте проведём эксперимент: возьмём картинку. Переименуем её в dog.mp3 и попробуем открыть получившийся файл. Откроется аудиопроигрыватель и сообщит, что файл некорректен. Однако, если открыть этот файл с помощью программы для просмотра изображений, то откроется исходная картинка, несмотря на неверное расширение. Как же программа понимает, что это на самом деле картинка? На самом деле, каждый формат имеет определенную структуру, у разных форматов она различна.
Для изучения структуры файлов нам понадобится специальная программа — HEX-редактор. Она позволяет видеть содержимое файлов в шестнадцатеричном формате, чтобы было удобно читать нетекстовые файлы. Откроем файл в HEX-редакторе.
Слева находятся байты в шестнадцатеричном виде, справа — соответствующие ASCII-символы.
Как вы видите, в начале есть байты FF D8 FF — они будут встречаться в начале каждого изображения в формате JPEG. Многие из них содержат ещё и читаемый текст JFIF в правой части. Такие магические байты называются сигнатурами (англ. signature — подпись) — у каждого файла свои. Достаточно большой список есть на Википедии, и можно поискать сигнатуру неизвестного файла там. Но есть способ и проще: в Linux входит встроенная утилита file, которая умеет определять информацию о файле по сигнатуре.
Давайте попробуем ей воспользоваться. Откройте терминал, перейдите в директорию с нашим файлом и введите file dog.mp3 .
Мы увидим, что файл на самом деле является JPEG-изображением.
Кроме сигнатуры, у каждого формата есть своя структура — определенными байтами обозначаются начало и конец файла, задаются размеры картинки и так далее. А что произойдет, если мы вмешаемся в структуру файла? Давайте попробуем дописать что-нибудь в конец, и сохранить файл. В wxHexEditor для этого нужно нажать правой кнопкой мыши в конец, выбрать Insert, указать число дописываемых символов, а дальше дописать текст вместо 00 .
Мы дописали «hello, world!».
Если мы снова откроем картинку просмотрщиком, она покажется без изменений — как ни в чем не бывало. Это связано с тем, что в формате JPEG есть маркер окончания файла — всё после него будет проигнорировано. Таким образом, мы можем дописать любые произвольные данные, и они будут незаметными: человек, не знающий о нашем способе, увидит картинку без изменений. Но как их достать обратно? Можно открыть файл HEX-редактором, и промотать в конец. Но если мы скрываем не текст, то будет трудно найти конец картинки и начало наших данных. Известен такой трюк: существуют форматы, которые разрешают размещать сигнатуру не только в начале файла, а во всём файле. Если сигнатура встретится где-то в середине, то всё, что было раньше, просто отбрасывается. Один из таких форматов — архив RAR.
Давайте рассмотрим в качестве примера другой файл. При открытии файла мы видим тех же самых собак. Если мы откроем файл в HEX-редакторе, то конец будет другим. Сравнить файлы можно прямо там же: выберем Tools → Compare Files и режим Different bytes. Он ищет те байты, которые различаются.
Видим, что в конце появились какие-то байты, начинающиеся с Rar! .
Чтобы увидеть архив, достаточно просто переименовать файл в rarjpeg.rar и открыть: архив откроется, и мы увидим секретный файл.
Другой способ искать склеенные файлы — воспользоваться утилитой binwalk. Снова откроем терминал и попробуем запустить её на нашей картинке: binwalk rarjpeg.jpg .
binwalk видит, что файл составлен из двух частей.
Если запустить утилиту снова с флагом -e (от англ. extract — извлечь): binwalk -e rarjpeg.jpg , то рядом с картинкой появится директория, в которой отдельно будет лежать архив.
Подобные склейки довольно распространены. Их принято называть rarjpeg независимо от того, какие форматы используются.
Как создать такой секретный файл самостоятельно? Возьмём два файла, которые мы хотим склеить. Допустим, image.jpg и archive.rar . В Linux встроена утилита cat, которая поможет нам осуществить склейку. Ей нужно передать два файла в качестве аргумента и указать файл для вывода: cat image.jpg archive.rar > result.jpg .
Выводы
- Операционная система решает, какой программой открывать файл, по расширению файла.
- Программы смотрят на структуру файла и ищут там необходимые данные.
- Некоторые форматы файлов можно склеивать в один, и при открытии разными программами будут показываться разные данные. Таким образом можно скрывать факт наличия дополнительной информации в файле.
- Склеивать файлы можно с помощью cat, а обнаруживать склейки — HEX-редактором и утилитой binwalk.
Как определить тип файла без расширения
Установив операционную систему, большинство опытных пользователей включают отображение расширения файлов. И правильно делают, ведь благодаря расширению можно легко определить тип файла и подыскать при необходимости для его просмотра подходящую программу. Увы, не все файлы, даже те, которые можно найти на просторах интернета, имеют расширение. С объектами без расширения вы можете столкнуться при поиске и восстановлении удаленных файлов.
А также при разборе прошивок, при декодировании строки из Base64 и тому подобное.
Как быть в этом случае, можно ли как-то определить тип такого объекта?
Можно, хотя это и требует определенных усилий и навыков.
Два способа мы уже рассматривали в статье «Что такое HEX и ASCII-дескрипторы, или как определить формат файла без расширения». Для определения типа и расширения файлов мы использовали шестнадцатеричные и обычные текстовые редакторы, посредством которых получали ASCII- и HEX- дескрипторы и расшифровывали их с помощью онлайн-сервиса open-file.ru. Способ эффективный, но необходимо, чтобы полученный заголовок имелся в базе сервиса, иначе определить тип файла не получится.
В таких случаях можно воспользоваться специальными утилитами, анализирующими специфические наборы байтов, располагающиеся не в начале файла, как заголовки, а немного ниже. Примером таких наборов байтов служат так называемые magic number, сообщающие UNIX-системам, что файл является исполняемым, впрочем, концепция магических чисел применима не только к исполняемым, но и ко всем бинарным файлам. Соответственно, в операционных системах UNIX для определения типа любого двоичного файла предусмотрена специальная команда file .
Чтобы иметь возможность использовать эту команду в Windows, нужно установить Cygwin — программный пакет, реализующий в Windows Unix-подобную среду и позволяющий выполнять наиболее распространенные команды Linux.
Установив пакет с настройками по умолчанию, запускаем командную строку Cygwin и выполняем команду file «полный путь к файлу без расширения» . Если файлов несколько, команда будет немного иной: file D:/folder/* . Обратите внимание, что во второй команде мы не заключаем путь к содержащей файлы папке folder в прямые кавычки и используем обычные (не обратные) слеши.

Команда file не показывает, собственно, расширение файла, она служит для определения его типа, так, на представленном выше скриншоте можно видеть, что файл 2452323 является текстовым документом с разметкой XML , файл f4ed4f25 — это изображение JPEG , а start — текстовый файл в кодировке UTF-16 Unicode .
Если вы не хотите ставить Cygwin, можете воспользоваться тулзой file-windows — скомпилированными в экзешник файлами линуксовой утилиты file.
Скачайте архив с утилитой с сайта разработчика github.com/julian-r/file-windows и распакуйте в удобное вам расположение.
Запустите командную строку, перейдите в папку с исполняемым файлом и выполните команду следующего вида file.exe полный путь к файлу без расширения .

Или в PowerShell команда будет выглядеть немного иначе: ./file.exe ‘полный путь к файлу без расширения’ .

Утилита TrID
В отличии от file, кроссплатформенная утилита TrID позволяет более или менее точно определять расширение файла, благодаря подключаемой к ней базе сигнатур.
Скачать утилиту для Windows и подключаемую базу можно со страницы разработчика mark0.net/soft-trid-e.html.

Создайте отдельную папку и распакуйте в нее оба скачанных архива.
Откройте Powershell , перейдите в расположение исполняемого файла утилиты и выполните команду ./trid.exe ‘полный путь к файлу без расширения’ . В результате утилита выведет несколько вариантов с процентным соотношением вероятности соответствия тому или иному расширению.

Если нужно проанализировать сразу несколько файлов, указываем путь только к содержащему их каталогу, не забывая об подстановочном знаке — звездочке, вот так: ./trid.exe ‘Диск:/папка/*’ . В случае сканирования сразу нескольких файлов утилита выведет только один вариант расширения — самый вероятный.

Существуют также и другие подобные TrID утилиты, например, Detect It Easy с удобным графическим интерфейсом.
Скачать ее последнюю версию можно со страницы проекта github.com/horsicq/DIE-engine/releases. В состав Detect It Easy уже входит актуальная база сигнатур, а сама утилита доступна для Windows, Linux и MacOS.