Archiwum BZIP2 (.bz2)

Bzip2 Standard

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

Prywatnie - 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” i cyfra rozmiaru bloku od 1 do 9), po którym następują skompresowane bloki danych i 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% bezstratne zachowanie danych z dokładnością bit po bicie
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)Deflate (LZ77 + Huffman)LZMA / LZMA2Entropia Stanów Skończonych + LZ77
Kompresja w porównaniu do GzipPliki są o 10% - 20% mniejsze niż po kompresji GzipStandard bazowyPliki są o 20% - 30% mniejsze niż po kompresji GzipPliki są o 10% - 20% mniejsze niż po kompresji 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

Rozpakowywanie zostaje przerwane z komunikatem „bzip2: Data integrity error when decompressing”.

Główna przyczyna: Zmieniony bit w skompresowanym bloku powoduje, że odwrotna macierz permutacji BWT nie przechodzi weryfikacji CRC32.

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żne bloki o rozmiarze od 100 do 900 kB mają własne 32-bitowe sumy kontrolne CRC, co ułatwia wiarygodne sprawdzanie integralności.
  • Dostępny natywnie w wielu dystrybucjach Linuxa, BSD i macOS; obecność zależy od dystrybucji.

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

  • Sekwencja bajtów „BZh” oznacza „Burrows-Wheeler Zip Huffman”; następująca po niej cyfra od 1 do 9 określa rozmiar bloku w setkach kilobajtów (np. „BZh9” oznacza 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 sama w sobie nie kompresuje danych; zmienia kolejność znaków tak, by identyczne znaki znalazły się obok siebie.

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 ma 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ń.