Установив операционную систему, большинство опытных пользователей включают отображение расширения файлов. И правильно делают, ведь благодаря расширению можно легко определить тип файла и подыскать при необходимости для его просмотра подходящую программу. Увы, не все файлы, даже те, которые можно найти на просторах интернета, имеют расширение. С объектами без расширения вы можете столкнуться при поиске и восстановлении удаленных файлов.
А также при разборе прошивок, при декодировании строки из 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.
Добавить комментарий