Архів BZIP2 (.bz2)

Відкритий Стандарт

Bzip2 (BZ2): це класична вільна від патентів утиліта стиснення та формат файлів для Unix, створені Джуліаном Сьюардом (Julian Seward). Формат використовує перетворення Берроуза-Вілера для досягнення значно вищого ступеня стиснення, ніж класичний Gzip.

Аналіз та метадані

Операційні системи та аналізатори файлів ідентифікують файли BZ2, перевіряючи початкову послідовність бінарних байтів:

Виберіть або перетягніть файли сюди

Приватно - файли ніколи не залишають ваш пристрій

або вставте Ctrl+V
Гарантія конфіденційності без передавання даних мережею: Жодного байта не передано на зовнішні сервери. Уся обробка відбувалася локально в ізольованому середовищі браузера.

Сигнатура заголовка на байтовому рівні (Magic Bytes)

Операційні системи та аналізатори файлів ідентифікують файли BZ2, перевіряючи початкову послідовність бінарних байтів:

ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):

42 5A 68

ПОДАННЯ В ASCII: BZh

Стандартизація: Відкритий стандарт Bzip2

Технічні характеристики

Архітектура контейнераЗаголовок потоку ('BZh' + цифра розміру блоку 1-9), за яким ідуть стиснені блоки даних і 32-розрядна контрольна сума CRC
СтисненняПеретворення Берроуза-Вілера (BWT), перетворення «переміщення на початок списку» (MTF) та кодування Хаффмана
Порядок байтів (Endianness)Бітовий потік із порядком байтів від старшого до молодшого (Big-Endian)
Колірні просториНе застосовується (потік байтового стиснення)
Канали та структураПотік стиснених байтів одного файлу
Максимальні розміриНеобмежена довжина потоку (підтримуються довільні розміри файлів)
Прозорість100% точне збереження даних без втрат
Потокове та прогресивне завантаженняПослідовне потокове передавання поблочно з незалежними контрольними сумами CRC для кожного блоку

Технічна матриця порівняння: BZ2 проти конкурентів

Технічний атрибутBZ2 (Поточний)GZXZZSTD
Основний алгоритмПеретворення Берроуза-Вілера (BWT)Deflate (LZ77 + Хаффман)LZMA / LZMA2Скінченно-станова ентропія + LZ77
Стиснення порівняно з GzipНа 10-20 % менший розмір, ніж після стиснення GzipБазовий стандартНа 20-30 % менший розмір, ніж у GzipНа 10-20 % менший розмір, ніж у Gzip
Швидкість розпакуванняПовільна (~30-50 МБ/с)Швидка (~300 МБ/с)Помірна (~100 МБ/с)Вкрай висока (>1.5 ГБ/с)
Контрольні суми блоків32-розрядний CRC для кожного блокуCRC32 для всього потокуCRC64 потокуxxHash64 потоку

Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі

Витягнення переривається помилкою 'bzip2: Data integrity error when decompressing'.

Першопричина: Змінений біт у стисненому блоці, через що обернена матриця перестановки BWT не проходить перевірку CRC32.

Відновлення: Використовуйте утиліту 'bzip2recover' для відновлення неушкоджених блоків навколо пошкодженого сектору.

Аналіз безпеки та векторів атак на парсери

Реалізації Bzip2 включають складне сортування бітових потоків та синтаксичний аналіз таблиць Хаффмана, які історично мали вразливості цілочисельного переповнення.

Відомі вектори атак

  • Цілочисельне переповнення під час виділення масиву сортування BWT (наприклад, CVE-2016-3189).
  • Запис за межі буфера під час побудови таблиці декодування Хаффмана.
  • Відмова в обслуговуванні через патологічні вхідні патерни, що спричиняють найгірший квадратичний час сортування BWT.

Рекомендації щодо захисту: Декодуйте файли BZ2 за допомогою безпечних для пам'яті декодерів WASM із примусовим обмеженням меж пам'яті.

Історичне походження та віхи

2019Федеріко Мена Кінтеро (Federico Mena Quintero) модернізує супровід кодової бази bzip2 у межах ініціатив bzip3 та сучасних ініціатив із відкритим кодом.
2000Випущено версію 1.0, яка стабілізувала формат bzip2 у дистрибутивах Linux і менеджерах пакетів.
1996Джуліан Сьюард випускає bzip2 0.15 на заміну попередньому формату bzip, який мав проблеми з патентами.

Основні переваги

  • Стабільно забезпечує на 10-20 % краще стиснення архівів вихідного коду, системних журналів і текстових баз даних, ніж класичний Gzip.
  • Незалежна блочна архітектура (від 100k до 900k) містить 32-бітні контрольні суми CRC для кожного блоку для надійної перевірки цілісності.
  • Доступний як вбудована утиліта в багатьох дистрибутивах Linux, BSD і macOS; наявність залежить від дистрибутива.

Технічні обмеження та недоліки

  • Значно нижча швидкість стиснення та розпакування порівняно з сучасними алгоритмами, такими як Zstandard.
  • Стиснення лише одного файлу: вимагає поєднання з TAR (.tar.bz2) для пакування кількох файлів або каталогів.
  • Вище споживання процесора під час розпакування порівняно з Gzip або Zstd.

Цікаві технічні факти

  • Магічні байти 'BZh' означають 'Burrows-Wheeler Zip Huffman' («метод Берроуза: Вілера: Хаффмана»); за ними йде цифра (від '1' до '9'), що позначає розмір блоку в сотнях кілобайтів (наприклад, 'BZh9' = 900 КБ).
  • Вихідний код ядра Linux поширювався виключно у форматі .tar.bz2 понад десять років, перш ніж перейти на .xz.
  • Перетворення Берроуза-Вілера не стискає дані безпосередньо; воно переставляє порядок символів так, щоб однакові букви згруповувалися разом, що робить їх легкими для стиснення за допомогою кодування Хаффмана.

Поширені технічні запитання

Яка різниця між .gz та .bz2?

.bz2 використовує перетворення Берроуза-Вілера, щоб файли були меншими, ніж у форматі .gz, але стиснення та розпакування займають більше часу.

Чому bzip2 має команду 'bzip2recover'?

Оскільки bzip2 стискає дані незалежними блоками по 900 КБ, кожен із власним CRC, bzip2recover може витягувати неушкоджені блоки, навіть якщо частина файлу пошкоджена.

Як розпакувати файл .tar.bz2?

Ви можете розпакувати файли .tar.bz2 безпосередньо у своєму веббраузері за допомогою File2File.app без запуску інструментів командного рядка.