BZIP2-Archiv (.bz2)
Bzip2 StandardBzip2 (BZ2) ist ein klassisches, patentfreies Unix-Komprimierungsdienstprogramm und Dateiformat, das von Julian Seward erstellt wurde und die Burrows-Wheeler-Transformation verwendet, um eine deutlich höhere Komprimierung als klassisches Gzip zu erreichen.
Untersuchen & Metadaten
Betriebssysteme und Dateianalyseprogramme identifizieren BZ2-Dateien anhand der führenden binären Bytefolge:
Headersignatur auf Byte-Ebene (Magic Bytes)
Betriebssysteme und Dateianalyseprogramme identifizieren BZ2-Dateien anhand der führenden binären Bytefolge:
HEX-SIGNATUR (OFFSET 0):
42 5A 68ASCII-DARSTELLUNG: BZh
Standardisierung: Bzip2 Open Source Standard
Technische Daten
| Container-Architektur | Stream-Header („BZh" + Blockgrößenziffer 1-9), gefolgt von komprimierten Datenblöcken und 32-Bit-CRC |
| Kompression | Burrows-Wheeler-Transformation (BWT), Move-to-Front-Transformation (MTF) und Huffman-Codierung |
| Byte-Reihenfolge | Big-Endian-Bitstream-Framing |
| Farbräume | Nicht zutreffend (Byte-Kompressionsstrom) |
| Kanäle und Struktur | Komprimierter Bytestrom für eine einzelne Datei |
| Max. Abmessungen | Unbegrenzte Stream-Länge (unterstützt beliebige Dateigrößen) |
| Transparenz | 100% bitgenaue, verlustfreie Datenerhaltung |
| Streaming und progressive Darstellung | Sequenzielles Block-für-Block-Streaming mit unabhängigen CRC-Prüfsummen pro Block |
Technische Vergleichsmatrix: BZ2 und Konkurrenzformate
| Technisches Attribut | BZ2 (Aktuelles Format) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Kernalgorithmus | Burrows-Wheeler-Transformation (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Finite-State-Entropie + LZ77 |
| Komprimierung im Vergleich zu Gzip | 10 % bis 20 % kleiner als mit Gzip | Basisstandard | 20 % bis 30 % kleiner als Gzip | 10 % bis 20 % kleiner als Gzip |
| Dekomprimierungsgeschwindigkeit | Langsam (~30-50 MB/s) | Schnell (~300 MB/s) | Moderat (~100 MB/s) | Blitzschnell (>1,5 GB/s) |
| Block-Prüfsummen | 32-Bit-CRC pro Block | Einzelstrom-CRC32 | Stream-CRC64 | Stream-xxHash64 |
Häufige Datenbeschädigungen und Leitfaden zur Wiederherstellung anhand von Hex-Daten
Extraktion bricht mit „bzip2: Data integrity error when decompressing“ ab.
Ursache: Gekipptes Bit im komprimierten Block, wodurch die inverse BWT-Permutationsmatrix bei der CRC32-Validierung fehlschlägt.
Wiederherstellung: Verwenden Sie das Dienstprogramm „bzip2recover“, um unbeschädigte Blöcke rund um den beschädigten Bereich zu retten.
Sicherheitsanalyse und Angriffsvektoren für Parser
Bzip2-Implementierungen beinhalten komplexe Bitstream-Sortierungen und Huffman-Tabellenanalysen, bei denen es in der Vergangenheit zu Ganzzahlüberlauffehlern kam.
Bekannte Angriffsvektoren
- Ganzzahlüberlauf bei der BWT-Sortierarray-Zuweisung (z. B. CVE-2016-3189).
- Schreiben außerhalb der Grenzen während des Aufbaus der Huffman-Dekodierungstabelle.
- Diensteverweigerung (Denial of Service) durch pathologische Eingabemuster, die quadratische BWT-Sortierzeiten im Worst-Case verursachen.
Empfohlene Schutzmaßnahmen: Dekodieren Sie BZ2-Dateien mit speichersicheren WASM-Dekodern mit erzwungenen Speicherbegrenzungen.
Historische Ursprünge & Meilensteine
Hauptvorteile & Stärken
- Übertrifft klassisches Gzip bei Quellcode-Tarballs, Systemprotokollen und Textdatenbanken durchgehend um 10 % bis 20 %.
- Die unabhängige Blockarchitektur (100 k bis 900 k) enthält 32-Bit-CRC-Prüfsummen pro Block für robuste Integritätsprüfungen.
- In vielen Linux-, BSD- und macOS-Distributionen nativ verfügbar; die Aufnahme hängt von der Distribution ab.
Technische Einschränkungen & Nachteile
- Deutlich langsamere Komprimierungs- und Dekomprimierungsgeschwindigkeiten im Vergleich zu modernen Algorithmen wie Zstandard.
- Nur Einzeldateikomprimierung: erfordert die Kopplung mit TAR (.tar.bz2), um mehrere Dateien oder Verzeichnisse zu packen.
- Höhere CPU-Auslastung bei der Dekomprimierung als Gzip oder Zstd.
Interessante technische Fakten
- Die „BZh"-Magic-Bytes stehen für „Burrows-Wheeler Zip Huffman", gefolgt von einer Ziffer („1" bis „9"), die die Blockgröße in Hundert Kilobyte angibt (z. B. „BZh9" = 900 KB).
- Der Quellcode des Linux-Kernels wurde über ein Jahrzehnt lang ausschließlich im .tar.bz2-Format verbreitet, bevor er zu .xz migrierte.
- Die Burrows-Wheeler-Transformation komprimiert Daten nicht direkt; sie permutiert die Reihenfolge der Zeichen, sodass identische Buchstaben zusammenklumpen.
Häufig gestellte technische Fragen
Was ist der Unterschied zwischen .gz und .bz2?
.bz2 verwendet die Burrows-Wheeler-Transformation, um kleinere Dateigrößen als .gz zu erreichen, benötigt jedoch mehr Zeit für die Komprimierung und Dekomprimierung.
Warum hat bzip2 einen Befehl „bzip2recover"?
Da bzip2 Daten in unabhängigen 900-KB-Blöcken komprimiert, von denen jeder über einen eigenen CRC verfügt, kann bzip2recover unbeschädigte Blöcke extrahieren, selbst wenn ein Teil der Datei beschädigt ist.
Wie kann ich eine .tar.bz2-Datei extrahieren?
Sie können .tar.bz2-Dateien ohne Befehlszeilentools direkt in Ihrem Webbrowser mit File2File.app entpacken.