BZIP2-archief (.bz2)

Bzip2 Standaard

Bzip2 (BZ2) is een klassieke, octrooivrije Unix-compressietool en een bestandsformaat van Julian Seward. Het gebruikt de Burrows-Wheeler-transformatie om bestanden sterker te comprimeren dan met klassieke Gzip.

Inspecteren en metadata

Besturingssystemen en bestandsanalysators herkennen BZ2-bestanden aan de hand van de eerste binaire bytesequentie:

Selecteer of sleep bestanden hierheen

Privé - bestanden verlaten uw apparaat niet

of plak Ctrl+V
Privacygarantie zonder netwerktransmissie: 0 bytes geüpload naar externe servers. Alle verwerking vond lokaal plaats in uw browser-sandbox.

Bestandshandtekening op byteniveau (magic bytes)

Besturingssystemen en bestandsanalysators herkennen BZ2-bestanden aan de hand van de eerste binaire bytesequentie:

HEX-HANDTEKENING (OFFSET 0):

42 5A 68

ASCII-WEERGAVE: BZh

Standaardisatie: Bzip2 Open Source Standard

Technische specificaties

ContainerarchitectuurStreamheader ('BZh' + blokgroottecijfer 1-9) gevolgd door gecomprimeerde datablokken en 32-bits CRC
CompressieBurrows-Wheeler Transform (BWT), Move-to-Front (MTF)-transformatie en Huffman-codering
Bytevolgorde (endianness)Big-Endian bitstream-framing
KleurruimtenN.v.t. (bytecompressiestroom)
Kanalen en structuurGecomprimeerde bytestream voor één bestand
Maximale afmetingenOnbegrensde streamlengte (ondersteunt willekeurige bestandsgroottes)
Transparantie100% bitexact, verliesvrij behoud van gegevens
Streaming en progressiefSequentiële blok-voor-blok-streaming met onafhankelijke CRC-controlesommen per blok

Technische vergelijkingsmatrix: BZ2 versus concurrenten

Technisch kenmerkBZ2 (Huidig)GZXZZSTD
KernalgoritmeBurrows-Wheeler Transform (BWT)Deflate (LZ77 + Huffman)LZMA / LZMA2Finite State Entropy + LZ77
Compressie t.o.v. Gzip10% - 20% kleiner dan GzipBasisstandaard20% - 30% kleiner dan Gzip10% - 20% kleiner dan Gzip
DecompressiesnelheidTraag (~30-50 MB/s)Snel (~300 MB/s)Matig (~100 MB/s)Zeer snel (>1,5 GB/s)
Blokcontrolesommen32-bits CRC per blokEén CRC32 voor de hele streamCRC64 voor de hele streamxxHash64 voor de hele stream

Veelvoorkomende beschadigingen en gids voor hex-herstel

Het uitpakken wordt afgebroken met de melding 'bzip2: Data integrity error when decompressing'.

Oorzaak: Omgeslagen bit in een gecomprimeerd blok, waardoor de inverse permutatiematrix van BWT de CRC32-validatie niet doorstaat.

Herstel: Gebruik de tool 'bzip2recover' om onbeschadigde blokken rondom de beschadigde sector te redden.

Beveiligingsanalyse en aanvalsvectoren voor parsers

Bzip2-implementaties omvatten complexe bitstreamsortering en het parsen van Huffman-tabellen, waarbij zich in het verleden fouten met integeroverflow hebben voorgedaan.

Bekende aanvalsvectoren

  • Integeroverflow bij het toewijzen van de BWT-sorteertabel (bijv. CVE-2016-3189).
  • Out-of-bounds-schrijfbewerking tijdens het samenstellen van de Huffman-decodeertabel.
  • Denial of service door pathologische invoerpatronen die zorgen voor de slechtst mogelijke kwadratische BWT-sorteertijden.

Aanbevolen beveiligingspraktijken: Decodeer BZ2-bestanden met geheugenveilige WASM-decoders met afgedwongen geheugengrenzen.

Historische oorsprong en mijlpalen

2019Federico Mena Quintero moderniseert het onderhoud van de bzip2-codebase onder bzip3 en moderne open-source-initiatieven.
2000Versie 1.0 wordt uitgebracht en maakt het bzip2-formaat stabiel in Linux-distributies en pakketbeheerders.
1996Julian Seward brengt bzip2 0.15 uit ter vervanging van het eerdere bzip-formaat dat octrooiproblemen kende.

Belangrijkste voordelen

  • Presteert consequent 10% tot 20% beter dan klassieke Gzip bij broncode-tarballs, systeemlogboeken en tekstdatabases.
  • Onafhankelijke blokarchitectuur (100k tot 900k) bevat 32-bits CRC-controlesommen per blok voor robuuste integriteitscontroles.
  • Standaard beschikbaar in veel Linux-, BSD- en macOS-opdrachtregelomgevingen, al verschilt dit per distributie.

Technische beperkingen

  • Aanzienlijk tragere compressie- en decompressiesnelheden in vergelijking met moderne algoritmen zoals Zstandard.
  • Alleen compressie van één bestand: vereist een combinatie met TAR (.tar.bz2) om meerdere bestanden of mappen in te pakken.
  • Hoger CPU-gebruik tijdens decompressie dan Gzip of Zstd.

Interessante technische weetjes

  • De 'BZh'-bestandshandtekening (magic bytes) staat voor 'Burrows-Wheeler Zip Huffman', gevolgd door een cijfer ('1' tot en met '9') dat de blokgrootte in honderden kilobytes aangeeft (bijv. 'BZh9' = 900 KB).
  • De broncode van de Linux-kernel werd ruim tien jaar lang uitsluitend in .tar.bz2-formaat verspreid voordat deze overstapte naar .xz.
  • De Burrows-Wheeler-transformatie herschikt gegevens zodat herhaalde tekens bij elkaar komen. Daardoor kan Huffman-codering daarna effectiever zijn.

Veelgestelde technische vragen

Wat is het verschil tussen .gz en .bz2?

.bz2 gebruikt de Burrows-Wheeler-transformatie om kleinere bestandsgroottes te bereiken dan .gz, maar het comprimeren en decomprimeren duurt langer.

Waarom heeft bzip2 een 'bzip2recover'-opdracht?

Omdat bzip2 data comprimeert in onafhankelijke blokken van 900 KB, elk met een eigen CRC, kan bzip2recover onbeschadigde blokken uitpakken, zelfs als een deel van het bestand beschadigd is.

Hoe kan ik een .tar.bz2-bestand uitpakken?

U kunt .tar.bz2-bestanden rechtstreeks in uw webbrowser uitpakken met File2File.app, zonder opdrachtregeltools te gebruiken.