Форматы файлов

Форматы файлов


Форматы документов

DOCX, XLSX, PPTX это ZIP с XML внутри. Переименуй в .zip и открой проводником. Microsoft сделала это в 2007 чтобы файлы весили меньше и восстанавливались после повреждений.

RVT это база данных SQLite внутри. Переименуй в .db и открой SQLite-браузером. Правда с шифрованием поверх, так просто не прочитаешь.

IFC это обычный текст. Открой блокнотом и увидишь строки вида #245 = IFCWALL(...). Вся модель здания в текстовом файле со ссылками между объектами.

DWG никогда не был опубликован Autodesk. Open Design Alliance взломала формат реверс-инжинирингом, Autodesk судился и в итоге ничего не добился. Теперь все CAD-системы кроме AutoCAD читают DWG через эту библиотеку.

PDF это тоже текст. Открой блокнотом и в начале увидишь %PDF-1.4, дальше команды "нарисуй букву А в точке 100,200". Картинки и шрифты закодированы внутри в base64.

Форматы изображений

PNG начинается с 8 одинаковых байт: 89 50 4E 47 0D 0A 1A 0A. По этой подписи система узнаёт формат даже если переименовать файл в .txt. Почти все форматы имеют такую магическую подпись в начале.

JPEG не хранит пиксели. Делит картинку на блоки 8x8 и хранит математические коэффициенты. Каждое пересохранение ухудшает качество безвозвратно. PNG хранит пиксели точно, поэтому не теряет качество но весит больше.

GIF поддерживает анимацию с 1989 года. Придуман для передачи картинок по модему, поэтому максимум 256 цветов.

RAW с фотоаппарата это почти не формат. Canon .CR3, Nikon .NEF, Sony .ARW у каждого своё. Adobe написала отдельный декодер для каждой камеры, поэтому Lightroom весит гигабайты.

Форматы звука

MP3 это поезд из кусочков по 26 миллисекунд. Можно склеить два MP3 командой copy 1.mp3 + 2.mp3 result.mp3 и получится рабочий файл. Сжимает в 10 раз выбрасывая частоты которые человек не слышит.

WAV это почти сырые данные с микрофона без сжатия. Минута звука весит около 10 МБ.

Архивы

ZIP придуман в 1989 Филом Кацем. Он украл идею у работодателя, выиграл суд и выпустил ZIP как открытый формат. Умер в 2000 в одиночестве от алкоголизма. Его формат используют миллиарды людей каждый день.

ZIP хранит оглавление в конце файла а не в начале. Это сделано специально чтобы дописывать файлы без перезаписи всего архива. Побочный эффект: если начало файла повреждено, оглавление может уцелеть и часть файлов восстановима.

RAR написал один человек, Евгений Рошал, в 1993 году. WinRAR не блокирует после пробного периода намеренно. Это осознанное решение, не баг.

7Z сжимает лучше всех, но медленно и требует много памяти. Поэтому ZIP победил как стандарт.

TAR вообще не сжимает. Просто склеивает файлы в один поток. Придуман для магнитных лент в Unix. Поэтому всегда .tar.gz или .tar.xz: сначала склеить, потом сжать.

GZIP сжимает только один файл, папки не умеет. Поэтому всегда в паре с TAR.

XZ в 2024 году содержал бэкдор. Кто-то два года втирался в доверие к разработчику под видом помощника и внедрил вредоносный код. Обнаружили случайно потому что SSH стал чуть медленнее.

ZIP64 это расширение для файлов больше 4 ГБ. Оригинальный ZIP хранил размер в 32 битах и упирался в потолок 4 ГБ. Исправили в 2001.

Матрёшка форматов: DOCX, JAR, APK, IPA, EPUB это всё ZIP. Переименуй любой и открой архиватором.

Исполняемые файлы

EXE на Windows начинается с букв MZ. Это инициалы Марка Збиковского, программиста Microsoft который придумал формат в 1981 году. Каждый раз когда запускаешь программу компьютер видит его инициалы.

Системный мусор

.DS_Store на Mac и Thumbs.db на Windows создаются автоматически и хранят миниатюры и настройки папок. Постоянно случайно попадают в архивы и репозитории и рассказывают о структуре файловой системы того кто прислал архив.




Report Page