Linux как узнать тип файла linux

Обновлено: 06.07.2024

Самый простой способ определить тип файла в любой операционной системе - это обычно посмотреть его расширение (например, .xml, .sh, .c, .tar и т. Д.). Что делать, если у файла нет расширения, как определить его тип?

В Linux есть полезная утилита под названием file, которая выполняет некоторые тесты для указанного файла и печатает тип файла после успешного выполнения теста. В этой короткой статье мы объясним примеры полезных файловых команд для определения типа файла в Linux.

Примечание. Чтобы использовать все параметры, описанные в этой статье, у вас должен быть файл версии 5.25 (доступен в репозиториях Ubuntu) или новее. В репозиториях CentOS есть более старая версия команды file (file-5.11), в которой отсутствуют некоторые параметры.

Вы можете запустить следующую команду, чтобы проверить версию файловой утилиты, как показано.

Примеры команд файла Linux

1. Самая простая команда для работы с файлом выглядит следующим образом: вы просто указываете файл, тип которого вы хотите узнать.


2. Вы также можете передать имена файлов для проверки из файла (по одному в каждой строке), которые вы можете указать с помощью флага -f , как показано.


3. Чтобы файл работал быстрее, вы можете исключить тест (допустимые тесты включают apptype, ascii, encoding, tokens, cdf, compress, elf, soft и tar) из списка тестов, сделанных для определения типа файла, используйте -e , как показано.

4. Параметр -s заставляет файл также читать, например, блочные или символьные специальные файлы.

5. Добавление параметров -z указывает файлу искать внутри сжатых файлов.


6. Если вы хотите сообщить информацию только о содержимом, а не о сжатии сжатого файла, используйте флаг -Z .

7. Вы можете указать команде файла выводить строки типа mime вместо более традиционных, удобочитаемых человеком, используя параметр -i .

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

Для получения дополнительной информации и опций использования обратитесь к странице руководства файловой команды.

Это все! Команда file - полезная утилита Linux для определения типа файла без расширения. В этой статье мы поделились некоторыми полезными примерами файловых команд. Если у вас есть какие-либо вопросы или мысли, используйте форму обратной связи ниже, чтобы связаться с нами.

Команда file — одна из самых полезных, поскольку позволяет узнать тип данных, которые на самом деле содержатся внутри документа. Если у вас есть какой-либо файл, взятый из ненадёжного источника, не поленитесь проверить его с помощью этой команды, прежде чем нажать кнопку Открыть. Возможно, такая предосторожность покажется лишней, но она оградит вас от «встречи» с нежелательным контентом.

В большинстве дистрибутивов Linux утилита file (работу которой и запускает одноимённая команда) входит в стандартный набор программного обеспечения.

Синтаксис и опции file

Синтаксис команды file достаточно простой. Записывать её в эмуляторе терминала или консоли следует так:

file опции название_документа

Что же касается опций, то их у этой команды несколько десятков. Мы рассмотрим лишь основные:

  • -b, --brief — запрет на демонстрацию имен и адресов файлов в выводе команды;
  • -i, --mime — определение MIME-типа документа по его заголовку;
  • --mime-type, --mime-encoding — определение конкретного элемента MIME;
  • -f, --files-from — анализ документов, адреса которых указаны в простом текстовом файле;
  • -l, --list — список паттернов и их длина;
  • -s, --special-files — предотвращение проблем, которые могут возникнуть при чтении утилитой специальных файлов;
  • -P — анализ определенной части файла, которая обозначается различными параметрами;
  • -r, --raw — отказ от вывода /ooo вместо непечатных символов;
  • -z — анализ содержимого сжатых документов.

Для того, чтобы ознакомиться с полным списком опций, выполните в терминале команду:

Примеры использования file

Если вам нужно всего лишь посмотреть тип файла, использовать опции не обязательно. Достаточно прописать имя команды, а также название файла и путь к нему, при условии, что он находится не в корневой папке:

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

file /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file2.tiff


Как видно на примере, картинки с расширениями gif и tiff в действительности оказались текстовыми документами, а архив с расширением zip — PDF документом. Кстати, команда file даёт возможность не только проверить, является ли архив архивом, но и заглянуть внутрь, чтобы узнать, что в нём содержится. Для этой цели используется опция -z:

file -z /home/main-user/losst/testarchive.zip


Как вы успели заметить, команда, возвращая ответ, постоянно выводит названия файлов, что в некоторых случаях бывает удобно, но зачастую только усложняет чтение результатов. Отключить эту функцию легко — воспользуйтесь опцией -b:

file -b /home/main-user/losst/test-file.jpg /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file2.tiff


Иногда нужно узнать не просто тип файла, а его MIME-тип. В таком случае на помощь приходит опция -i:

file -i -b /home/main-user/losst/fileA.sbin /home/main-user/losst/fileG.aspx /home/main-user/losst/fileH.lua


Сравните вывод команды с опцией -E и без неё:

file -E -b /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file4.raw /home/main-user/losst/test-file.jpg

file -b /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file4.raw /home/main-user/losst/test-file.jpg


Еще один способ работы с утилитой file — запись названий и адресов документов в простой текстовый файл. Применяя этот способ на практике, не забывайте добавлять к команде опцию --files-from, после которой указывайте имя файла, содержащего список документов, и путь к нему.

file --files-from /home/main-user/losst/list_of_files.txt


Выводы

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

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Определить тип файла Linux Windows

Для определения типа файла в Linux существует утилита File, но нельзя ее назвать идеальной. Функционал Detect It Easy гораздо богаче.

Как определить тип файла в Linux с Detect It Easy

DIE существует в трех версиях:

На данный момент утилита может определить следующие типы файлов:

  • Исполняемые файлы MSDOS MS-DOS.
  • PE исполняемые файлы Windows.
  • Исполняемые файлы ELF Linux.
  • Исполняемые файлы MACH Mac OS.
  • Другие бинарные файлы.

Установка Detect It Easy в Kali Linux

Установить Detect It Easy в Kali Linux довольно просто. Прежде всего, нужно установить зависимости::

Установка Detect It Easy в Kali Linux

Теперь клонируем Detect It Easy из репозитория GitHub:

Установка Detect It Easy Linux

Переходим в папку DIE:

Запускаем скрипт сборки:

Как установить Detect It Easy Linux

Это может занять некоторое время в зависимости от производительности системы.

После завершения необходимо установить пакет deb:

Установка DIE Kali Linux

Установка завершена. Переходим к использованию Detect It Easy и попробуем узнать тип файла без расширения.

Использование Detect It Easy в Kali Linux

Для теста определим тип файла «Video», у которого отсутствует расширение файла.

Использование Detect It Easy Linux

Можно предположить, что это видеофайл. Давайте посмотрим, что скажет Detect It Easy.

Можно использовать как терминал, так и GUI (графический интерфейс). Для начала попробуем определить типа файла используя консоль. Чтобы узнать тип файла в Linux введем команду:

Поскольку мы уже находимся в каталоге Desktop, нет необходимости указывать путь к файлу, мы просто используем имя. Но в случае, если наш рабочий каталог отличается от местоположения файла, нужно использовать полный путь к файлу.

Узнать тип файла в Linux

Из приведенного выше снимка экрана мы можем легко понять, что файл «Video» не является видеофайлом, это исполняемый exe-файл Windows.

Теперь попробуем узнать тип файла с помощью GUI, для запуска которого введем команду:

Откроется графический интерфейс Detect It Easy:

Определить тип файла в Linux

Графический интерфейс DIE

Выбираем нужный файл нажав на три точки и нажимаем «Scan»:

Detect It Easy Инструкция

После анализа, утилита отобразит много полезной и важной информации.

Заключение

Detect It Easy больше подходит для анализа исполняемых файлов, но есть также поддержка других бинарных файлов.

Вот как можно быстро получить информацию о файле в Kali (или любом другом дистрибутиве Linux), с помощью Detect It Easy.

Этичный хакинг и тестирование на проникновение, информационная безопасность


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

Если вам кажется, что проблема с определением типов файлов без расширений надуманная, то это далеко не так! Во-первых, если подумать, это не такая уж простая задача. А с файлом без расширения вы можете столкнуть, например, при декодировании строки из 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 не помогла.

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