Как узнать формат файла
Представьте, что вы получаете почту от своих друзей или коллег, а во вложении они отправили вам какой-то документ в виде прикреплённого к письму файла, в котором есть нужная вам информация. Вы сохраняете этот файл на свой компьютер, но видите, что вместо привычных значков какой-либо программы (Word, Excel, PDF и т.д.) никакого значка нет, а Windows считает, что это какой-то файл с неизвестным форматом. Зачастую это происходит из-за того, что файл в процессе прикрепления к письму отправителем (или при сохранении файла на компьютер получателем) теряет своё расширение, и операционная система Windows перестаёт понимать, что за тип файла перед ней, и соответственно не знает, какой программой нужно открывать такой файл. Что такое расширение файла, и как их отображать и скрывать в различных версиях Windows, вы можете прочитать в этой статье.
Хорошо, если вы точно знаете, какой тип файла перед вами, и можете просто добавить ему нужное расширение, например, doc или xls, чтобы он автоматически открывался с помощью двойного щелчка мышки по нему. В отдельной статье вы можете прочитать о наиболее популярных форматах файлов Windows и их расширениях. Но что делать, если перед вами файл, тип которого вы не знаете? Есть как минимум два способа узнать, какой перед вами тип файла, и задать ему правильное расширение.
В нашем эксперименте будут участвовать несколько файлов:
На картинке ниже у всех файлов стоят свои расширения (выделены рамочками с красными краями):
Удаляем все расширения файлов, и после этого пропадают все значки программ, с помощью которых можно открывать эти файлы. В Windows XP это выглядит так:
Теперь при попытке открыть любой файл Windows предложит нам сначала выбрать программу, которой нужно открывать этот файл:
И здесь надо быть аккуратным, поскольку неправильный выбор программы для данного типа файла приведёт к тому, что файл не откроется, и программа выдаст ошибку, а за данным файлом закрепится неправильная ассоциация программы его открытия.
Иногда о том, какой перед нами тип файла и какое расширение у должно быть, можно догадаться и по названию файла. Но мы возьмём тот случай, когда это сделать невозможно.
Итак, перед нами куча файлов с неизвестными форматами и расширениями, и нам надо понять, что это за файлы.
Проделывая ту же самую операцию по просмотру содержимого со всеми остальными файлами, получаем следующую информацию:
Второй способ определения типа файла требует наличия интернет-соединения, а также желательно, чтобы размер файла был небольшим, поскольку мы будем использовать интернет-сервис для определения формата файла.
Переходим по ссылке выше и видим в центре меню, в котором нам предлагается выбрать файл для анализа:
Как видим, сервис с 97%-ой вероятностью определил, что это файл PowerPoint с расширением pptx. И поскольку этот файл также является архивом-контейнером, содержащим внутри себя другие файлы, анализатор также указал трёхпроцентную вероятность, что это может быть архив zip.
Можно конечно воспользоваться специальными программами для определения типа файла, например, File Type Verificator, но на мой взгляд, гораздо проще и быстрее будет воспользоваться одним из двух предложенных выше способов.
Этичный хакинг и тестирование на проникновение, информационная безопасность
Если вы из тех, кто хочет узнать как работают инструменты указанного сервиса, а также как ими пользоваться на своём компьютере, то продолжайте читать.
Если вам кажется, что проблема с определением типов файлов без расширений надуманная, то это далеко не так! Во-первых, если подумать, это не такая уж простая задача. А с файлом без расширения вы можете столкнуть, например, при декодировании строки из Base64 кодировки.
Во-вторых, у этой статьи будет продолжение, в которой эти же самые инструменты, которые вы изучите на этой странице, будут использоваться для:
1) разбора прошивок (например, роутеров, IP камер) на составные части (первый этап обратной инженерии либо анализа работы устройств для поиска уязвимостей и бэкдоров)
2) поиска файловых систем на дисках и их образах (первый этап криминалистической IT экспертизы)
3) поиска удалённых файлов
Как определить тип данных, если у файла нет расширения
Если у файла нет расширения, то единственным вариантом определения его типа остаётся содержимое этого файла. Можно попробовать добавлять различные расширения к имени файла и пытаться открыть соответствующими для этого расширения программами — этот вариант медленные и неэффективный.
Определённые типы бинарных файлов могут иметь одинаковый набор байтов — по этим байтам можно сопоставить тип файлов. И именно данный метод и применяется программами, предназначенными для определения типа данных. Специфичные байты как правило располагаются не в самом начале файла, поэтому кроме самих байтов, нужно знать смещение от начала, где эти байты должны находиться. Некоторые программы в дополнении к байтам для идентификации ещё имеют список для проверки на ложное срабатывание.
Такие паттерны на английском часто называют magic — это пошло от «magic number» в исполнимых файлах. Эти файлы имеют «магическое число», хранящееся в определённом месте рядом с началом файла, которое сообщает операционной системе UNIX, что файл является двоичным исполняемым файлом и каким именно из нескольких типов. Концепция «магического числа» была применена к другим бинарным файлам. То есть файлы одинакового типа имеют одинаковую последовательность байтов в определённом месте от начала файлов.
Файл с сигнатурами, описывающими какие именно байты, на каком расстоянии от начала файла характерны для файлов того или иного типа, обычно называют magic file.
Кроме магических чисел могут применяться и другие техники, например, программа file для проведения тестов файловых систем также может использовать системный вызов stat. Тип текстовых файлов определяется по содержащимся в них строкам (например, это может быть PHP код, файл в XML или HTML разметке, JSON и так далее).
Команда file — мгновенное определение типа любого файла
В Linux есть команда file с огромной базой сигнатур, которая очень быстро определяет тип файла:
Чтобы узнать, что за файл без расширения, выполните команду вида:
То есть это текстовый файл офисного пакета Microsoft Office.
Можно указать сразу несколько файлов для проверки или использовать подстановочные символы. Например, следующая команда проверит типы всех файлов в текущей папке:
У программы file имеются опции, подробности о них смотрите в отдельной статье «Инструкция по использованию команды file».
Аналог команды file для Windows
file — это утилита командной строки для Linux, поэтому пользователям Windows нужна какая-то альтернатива. Рассмотрим несколько способов использования file в Windows.
1. Утилита file в Cygwin
Данный способ, на мой взгляд, самый простой. Достаточно скачать Cygwin и вы можете пользоваться большинством утилит Linux. Подробности, в том числе как указывать пути в файловой системе, смотрите в ветке «Как начать знакомство с командами Linux: Cygwin».
2. file в WSL
Подсистема Windows для Linux (WSL) это ещё один способ использовать утилиты Linux в Windows. Подробности о работе с WSL смотрите в справочном материале «WSL (подсистема Windows для Linux): подсказки, инструкции, решения проблем».
3. Скомпилированный file для Windows
Файлы различаются архитектурой (64- и 32-битные), а также компилятором.
Распакуйте скаченный архив. Например, я поместил скаченные файлы в папку C:\Users\MiAl\Downloads\file\.
Откройте командную строку, для этого нажмите Win+x, выберите «Windows PowerShell».
Перейдите в папку с программой:
Для определения расширения файла используйте команду вида:
Вы можете проверить сразу много файлов, для этого перейдите в папку с утилитой file и выполните команду вида:
Например, я хочу проверить все файлы в папке Z:\testfiles\, тогда команда следующая:
4. TrID — кроссплатформенная альтернатива file для Windows и Linux
Пример анализа файла — обратите внимание, что выведено несколько вариантов с указанием процентной вероятности каждого из них:
Если указать несколько файлов для идентификации, то будет выведен только самый вероятный вариант типа файла:
Установка TrID в Windows
Распакуйте оба файла в одну папку.
Распакуйте скаченный архив. Например, я поместил скаченные файлы в папку C:\Users\MiAl\Downloads\trid\.
Откройте командную строку, для этого нажмите Win+x, выберите «Windows PowerShell».
Перейдите в папку с программой:
Для определения расширения файла используйте команду вида:
Подстановочные знаки могут использоваться для сканирования групп файлов, целых папок и так далее.
Кроме того, использование ключа -ae даст команду TrID добавить предполагаемые расширения к именам файлов. Это удобно, например, при работе с файлами, восстановленными программами для восстановления данных. Например:
На этом этапе файлы в папке c:\temp будут выглядеть так:
Вместо предыдущей опции можно использовать -ce, которая изменит расширение файла на новое; если у файла нет расширения, будет добавлено новыъое. Например:
- IAmASoundFile.dat -> IAmASoundFile.wav
- IAmABitmap -> IAmABitmap.bmp
TrID может получить список файлов со стандартного ввода с помощью переключателя -@.
Таким образом, можно работать со всем деревом папок или определенным подмножеством файлов, просто используя вывод какой-либо другой команды через конвейер. Что-то вроде:
Можно указать TrID показывать дополнительную информацию о каждом совпадении (например, тип mime, кто создал эту сигнатуру, сколько файлов было просканировано и так далее); а также можно ограничить количество отображаемых результатов.
Ключ -v активирует подробный режим, а -r:nn указывает максимальное количество совпадений, которое будет отображать TrID. По умолчанию 5 для обычного режима, 2 для подробного, 1 для многофайлового анализа.
Программа TrID обновляется нечасто, но база данных регулярно получает новые сигнатуры, поэтому время от времени обновляйте базу данных.
5. fil — ещё одна кроссплатформенная альтернатива file
Программа fil написана на Go и является кроссплатформенной. Но в программе настолько мало сигнатур, что, на мой взгляд, утилита fil практически бесполезна.
Альтернативы file
Для большинства нужд по определению типа файла без расширения достаточно утилиты file, но есть утилиты со смежным функционалам, которые могут заменить или уточнить информацию от file. Более подробно каждая из этих программ будет рассмотрена в следующей части, сейчас только краткий обзор.
Detect It Easy
Detect It Easy — это кроссплатформенная программа для определения типов файлов. Имеется вариант с графическим интерфейсом, а также интерфейсом командной строки.
Анализ файла /mnt/disk_d/Share/testfiles/file1 с показом результатов в графическом интерфейсе:
Анализ файла без расширения, расположенного по пути /mnt/disk_d/Share/testfiles/file1 для определения типа файла:
Detect It Easy в первую очередь нацелена на анализ исполнимых файлов, поэтому её функции в большей степени относятся к файлам программ, например, определение архитектуры. Но также имеется поддержка других бинарных файлов.
Binwalk
Binwalk это программа для анализа прошивок, но в ней собрано много сигнатур бинарных файлов, поэтому она подходит для определения типа файла. Особенность Binwalk в том, что она нацелена на работу с составными файлами (которыми обычно и являются прошивки), поэтому она может определять тип файла даже если файл находится не в начале.
Использование такое же, как и file, достаточно указать путь до одного или нескольких файлов:
Detect It Easy и Binwalk не столько конкуренты утилиты file, сколько «последний шанс» определить тип данных, если команда file не помогла.
Иногда нужно сделать его видимым для всех файлов.
Расширение файла это добавление к имени файла нескольких букв, которые определяют принадлежность файла к тому или иному приложению, программе, с помощью которой его можно открыть или запустить.
Например текстовые файлы имеют расширение txt,
документы Maicrosoft World имеют расширение doc,
расширение exe присваивается исполняемым файлам, программе.
Из википедии:
Расширение имени файла — последовательность символов, добавляемых к имени файла и предназначенных для идентификации типа (формата) файла. Это один из распространённых способов, с помощью которых пользователь или программное обеспечение компьютера может определить тип данных, хранящихся в файле.
Расширение обычно отделяется от основной части имени файла точкой. В операционных системах CP/M и MS-DOS длина расширения была ограничена тремя символами, в современных операционных системах это ограничение отсутствует. Иногда могут использоваться несколько расширений, следующих друг за другом, например, «.tar.gz».
Более подробно можно почитать в Википедии.
Итак чтобы узнать расширение файла можно просто нажать правой кнопкой мыши на файле и нажать свойства, на вкладке общие мы увидим расширение этого файла и приложение которым можно его открыть.
Если вы хотите всегда видеть расширение всех файлов то необходимо сделать следующее:
Для Windows 10
Выбираем параметры, изменить параметры папок и поиска
Применяем ко всем папкам, нажимаем внизу еще раз применить,
Для Windows 8, 8.1
Для Windows 7
Для Windows XP
Для этого, просто щелкните по необходимому элементу правой кнопкой мыши и перейдите по пункту «Свойства». В появившемся окошке на первой вкладке «Общие» в разделе «Тип файла» он будет указан, а ниже и привязанное по умолчанию приложение.
Это очень удобно, программа встраивается в контекстное меню и при клике правой кнопкой мыши на необходимом элементе показывает в подробностях всю информацию о нем: тип, полный путь, точный размер, дату создания, изменения и последнего открытия.
Как программа узнаёт, что ей открывать?
При инсталяции программы на компьютер, она заносит данные в реестр о том, с какими типами файлов она может и будет работать. Поэтому, если в системе нет определенного софта для открытия музыки, то, к примеру, после установки аудиоплеера aimp, она будет открываться именно этим плеером.
При желании вы в любое время можете изменить приложение для открытия по умолчанию в настройках ОС.
Как узнать расширение
Система компьютера может быть настроена таким образом, что расширения у всех файлов показаны.
Или наоборот: так, что показаны только имена, без форматов.
Эту настройку можно изменить.
В Windows 10 открыть любую папку, нажать на пункт «Вид» вверху и поставить или убрать птичку с пункта «Расширения имен файлов».
В Windows 7 чуть сложнее:
Или так: Пуск → Панель управления → Оформление и персонализация → Параметры папок.
Если расширения нет
Если у объекта нет расширения, компьютер не может подобрать программу для его запуска. Это происходит, когда пользователь случайно или намеренно удаляет расширение из имени. А еще может быть из-за вируса.
Решить эту проблему легко, если знаешь тип объекта. Например, знаешь, что это фотография. Тогда нужно просто переименовать файл, добавить после названия точку и указать формат. Вот как это сделать:
- Настроить компьютер на показ расширений (см. выше).
- Правой кнопкой мыши по файлу – Переименовать.
- Сразу после названия напечатать точку и расширение.
- Нажать Enter.
Наиболее популярные форматы:
- Документы – doc, docx или pdf
- Таблицы – xls, xlsx
- Архивы – zip или rar
- Фотографии – jpg или png
- Музыка – mp3 или wav
- Видео – mp4 или avi
Другие типы можно посмотреть в конце урока в таблице.
Если формат неизвестен . Чтобы открыть файл, необязательно вручную прописывать расширение. Можно просто запустить его и в окошке выбрать подходящую программу. Если вы правильно ее укажите, объект откроется.
Или щелкните по нему правой кнопкой мыши, выберите «Открыть с помощью…». Или «Открыть с помощью» → «Выбрать другое приложение».
Узнать тип файла можно через сервис . Просто перетяните объект в окошко, и сайт определит формат.
Команда file мгновенное определение типа любого файла
В Linux есть команда file с огромной базой сигнатур, которая очень быстро определяет тип файла:
Чтобы узнать, что за файл без расширения, выполните команду вида:
То есть это текстовый файл офисного пакета Microsoft Office.
Можно указать сразу несколько файлов для проверки или использовать подстановочные символы. Например, следующая команда проверит типы всех файлов в текущей папке:
У программы file имеются опции, подробности о них смотрите в отдельной статье «Инструкция по использованию команды file».
Как включить отображение расширений
По умолчанию отображение расширений в операционной системе Windows отключено. Опытные пользователи при необходимости могут активировать эту функцию самостоятельно, а неопытным она и не нужна – можно случайно изменить расширение важного системного файла, что приведет к различным нарушениям работы Windows.
Если вам понадобилось включить отображение расширений, вы наверняка знаете, зачем это делаете. В такой ситуации следуйте нижеизложенной инструкции.
Читайте также: