Archiwum BZIP2 (.bz2)

Bzip2 Standardowy

Bzip2 (BZ2) to klasyczne, wolne od patentów uniksowe narzędzie kompresji i format pliku stworzony przez Juliana Sewarda, wykorzystujący transformację Burrowsa-Wheelera do uzyskania znacznie lepszej kompresji niż klasyczny Gzip.

Inspekcja i metadane

Systemy operacyjne i analizatory plików identyfikują pliki BZ2, sprawdzając początkową sekwencję bajtów binarnych:

Wybierz lub upuść pliki tutaj

Konwersja w 100% prywatna w przeglądarce - pliki nigdy nie opuszczają Twojego urządzenia

lub wklej Ctrl+V
Gwarancja prywatności bez przesyłania danych do sieci: 0 bajtów przesłanych na zewnętrzne serwery. Całe przetwarzanie odbyło się lokalnie w piaskownicy przeglądarki.

Podpis nagłówka na poziomie bajtów (Magic Bytes)

Systemy operacyjne i analizatory plików identyfikują pliki BZ2, sprawdzając początkową sekwencję bajtów binarnych:

PODPIS HEX (OFFSET 0):

42 5A 68

REPREZENTACJA ASCII: BZh

Normalizacja: Bzip2 Open Source Standard

Specyfikacja techniczna

Architektura konteneraNagłówek strumienia ('BZh' + cyfra rozmiaru bloku 1-9), po którym następuje skompresowany blok danych oraz 32-bitowa suma kontrolna CRC
KompresjaTransformacja Burrowsa-Wheelera (BWT), transformacja Move-to-Front (MTF) oraz kodowanie Huffmana
Kolejność bajtów (Endianness)Ramka strumienia bitów w formacie Big-Endian
Przestrzenie kolorówNie dotyczy (Strumień kompresji bajtowej)
Kanały i strukturaStrumień bajtów skompresowanych dla pojedynczego pliku
Maks. wymiaryNieograniczona długość strumienia (obsługuje dowolne rozmiary plików)
Przezroczystość100% dokładna bitowo bezstratna zachowanie danych
Streaming i progresywne ładowanieSekwencyjne przesyłanie strumieniowe blok po bloku z niezależnymi sumami kontrolnymi CRC dla każdego bloku

Techniczna macierz porównawcza: BZ2 a konkurencja

Atrybut technicznyBZ2 (Bieżący)GZXZZSTD
Główny algorytmTransformacja Burrowsa-Wheelera (BWT)Wypompowanie (LZ77 + Huffman)LZMA / LZMA2Entropia Stanów Skończonych + LZ77
Kompresja w porównaniu do GzipO 10% - 20% mniejszy niż GzipStandard bazowyO 20% - 30% mniejszy niż GzipO 10% - 20% mniejszy niż Gzip
Prędkość dekompresjiWolna (~30-50 MB/s)Szybka (~300 MB/s)Umiarkowana (~100 MB/s)Błyskawiczna (>1,5 GB/s)
Sumy kontrolne bloków32-bitowe CRC dla każdego blokuPojedynczy strumień CRC32Strumień CRC64Strumień xxHash64

Typowe tryby uszkodzeń i przewodnik odzyskiwania szesnastkowego

Wyodrębnianie przerywa się z komunikatem „bzip2: Data integrity error when decompressing".

Główna przyczyna: Odwrócony bit w skompresowanym bloku powodujący niepowodzenie walidacji CRC32 odwrotnej macierzy permutacji BWT.

Odzyskiwanie: Użyj narzędzia „bzip2recover", aby odzyskać nieuszkodzone bloki otaczające uszkodzony sektor.

Analiza bezpieczeństwa i wektory ataku na parser

Implementacje Bzip2 obejmują złożone sortowanie strumienia bitów i analizowanie tablic Huffmana, w których w przeszłości występowały błędy przepełnienia liczby całkowitej.

Znane wektory ataku

  • Przepełnienie liczby całkowitej w alokacji tablicy sortowania BWT (np. CVE-2016-3189).
  • Zapis spoza zakresu pamięci podczas składania tablicy dekodowania Huffmana.
  • Atak typu odmowa usługi (DoS) poprzez patologiczne wzorce wejściowe powodujące najgorsze, kwadratowe czasy sortowania BWT.

Najlepsze praktyki obronne: Dekoduj pliki BZ2 za pomocą bezpiecznych pod względem pamięci dekoderów WASM z wymuszonymi granicami pamięci.

Pochodzenie historyczne i kamienie milowe

2019Federico Mena Quintero modernizuje utrzymanie bazy kodu bzip2 w ramach inicjatyw bzip3 oraz współczesnych inicjatyw open-source.
2000Wydanie wersji 1.0, stabilizującej format bzip2 w dystrybucjach systemu Linux i menedżerach pakietów.
1996Julian Seward wydaje bzip2 0.15, aby zastąpić wcześniejszy format bzip, który budził zastrzeżenia patentowe.

Główne zalety

  • Stale przewyższa klasyczny Gzip o 10% do 20% w przypadku archiwów kodu źródłowego, logów systemowych i baz danych tekstowych.
  • Niezależna architektura blokowa (od 100k do 900k) zawiera 32-bitowe sumy kontrolne CRC dla każdego bloku w celu solidnego sprawdzania integralności.
  • Uniwersalna, natywna dostępność we wszystkich dystrybucjach wiersza poleceń systemów Linux, BSD i macOS.

Ograniczenia techniczne i wady

  • Znacznie wolniejsza prędkość kompresji i dekompresji w porównaniu do nowoczesnych algorytmów, takich jak Zstandard.
  • Kompresja tylko dla pojedynczych plików: wymaga połączenia z TAR (.tar.bz2) w celu spakowania wielu plików lub katalogów.
  • Wyższe zużycie procesora podczas dekompresji niż w przypadku Gzip lub Zstd.

Ciekawe informacje techniczne

  • Magiczne bajty „BZh" oznaczają „Burrows-Wheeler Zip Huffman", po których następuje cyfra (od „1" do „9") określająca rozmiar bloku w setkach kilobajtów (np. „BZh9" = 900 KB).
  • Kod źródłowy jądra systemu Linux był dystrybuowany wyłącznie w formacie .tar.bz2 przez ponad dekadę przed migracją do .xz.
  • Transformacja Burrowsa-Wheelera nie kompresuje danych bezpośrednio; permutuje ona kolejność znaków, tak aby identyczne litery skupiały się razem, co ułatwia ich kompresję za pomocą kodowania Huffmana.

Często zadawane pytania techniczne

Jaka jest różnica między .gz a .bz2?

.bz2 używa transformacji Burrowsa-Wheelera, aby uzyskać mniejsze rozmiary plików niż .gz, ale kompresja i dekompresja trwają dłużej.

Dlaczego bzip2 posiada polecenie „bzip2recover"?

Ponieważ bzip2 kompresuje dane w niezależnych blokach o rozmiarze 900 KB, z których każdy ma własne CRC, narzędzie bzip2recover może wyodrębnić nieuszkodzone bloki, nawet jeśli część pliku jest uszkodzona.

Jak mogę wypakować plik .tar.bz2?

Możesz rozpakować pliki .tar.bz2 bezpośrednio w przeglądarce internetowej za pomocą File2File.app bez używania narzędzi wiersza poleceń.