TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
BashTex | Linux

14 Sep, 16:41

Открыть в Telegram Поделиться Пожаловаться

file vs расширение - как Linux определяет тип файла на самом деле

В Linux расширение файла само по себе ничего не определяет.

Для системы:

backup.tar.gz
backup.jpg
backup.txt

это просто имена файлов. Можно спокойно сделать:
mv image.jpg image.txt
и содержимое файла от этого никак не изменится.

▪️Откуда тогда file знает тип

Утилита file смотрит не на расширение, а на содержимое файла.

file image.txt
file archive.bin
file unknown

Например:

unknown: PNG image data, 1920 x 1080, 8-bit/color RGB

Даже если файл называется:

photo.txt

file всё равно может определить его как PNG.

▪️Главный источник - magic bytes

Многие форматы имеют характерную сигнатуру в начале файла.

Например, PNG начинается с:

89 50 4e 47 0d 0a 1a 0a

Проверить первые байты можно:

xxd -l 16 photo.png

А file сопоставляет такие сигнатуры с базой magic:

file --version

и использует правила из базы magic.

▪️Можно обмануть расширение

cp image.png document.txt
file document.txt

Результат всё равно будет примерно таким:

document.txt: PNG image data

Потому что имя изменилось, а байты остались прежними.

▪️Но не всё определяется только первыми байтами
file может анализировать не только сигнатуру.

Для ELF:

file /bin/ls

может показать архитектуру, разрядность и тип исполняемого файла.

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

▪️Практический сценарий

Скачали файл с подозрительным расширением:

download.exe

Не стоит сразу доверять имени.

Сначала:

file download.exe

А затем, если это бинарник:

readelf -h download.exe

или:

xxd -l 32 download.exe

Так можно понять, что реально лежит внутри файла.

▪️Важный нюанс
file не является универсальным детектором содержимого.

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

И ещё важнее: file определяет тип по содержимому, но не говорит, что файл безопасен.

Файл может называться document.pdf, определяться как PDF и при этом содержать вредоносную нагрузку.

В Linux расширение - часть имени.

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

BashTex 📱 #bash #systemd

447 0 18 6
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot