TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
BashTex | Linux

14 Sep, 16:41

Open in Telegram Share Report

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
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot