BZIP2-arkiv (.bz2)
Bzip2 StandardBzip2 (BZ2) er et klassisk, patentfritt Unix-komprimeringsverktøy og filformat som ble laget av Julian Seward. Det bruker Burrows-Wheeler-transformasjonen for å oppnå betydelig bedre komprimering enn klassisk Gzip.
Inspeksjon og metadata
Operativsystemer og filanalysatorer identifiserer BZ2-filer ved å undersøke den innledende binære bytesekvensen:
Filsignatur på bytenivå (magiske byte)
Operativsystemer og filanalysatorer identifiserer BZ2-filer ved å undersøke den innledende binære bytesekvensen:
HEX-SIGNATUR (OFFSET 0):
42 5A 68ASCII-REPRESENTASJON: BZh
Standardisering: Bzip2 Open Source Standard
Tekniske spesifikasjoner
| Beholderarkitektur | Strømheader («BZh» + ett siffer for blokkstørrelsen fra 1 til 9), etterfulgt av komprimerte datablokker og en 32-bits CRC-sjekksum |
| Komprimering | Burrows-Wheeler-transformasjon (BWT), Move-to-Front-transformasjon (MTF) og Huffman-koding |
| Bytterekkefølge | Big-endian-innramming av bitstrøm |
| Fargerom | Ikke relevant (bytekomprimeringsstrøm) |
| Kanaler og struktur | Komprimert byte-strøm for én fil |
| Maks. dimensjoner | Ubegrenset strømlengde (støtter filer av vilkårlig størrelse) |
| Gjennomsiktighet | Tapsfri databevaring med nøyaktig samsvar på bitnivå |
| Strømming og progressiv visning | Sekvensiell strømming blokk for blokk med uavhengige CRC-sjekksummer for hver blokk |
Teknisk sammenligningsmatrise: BZ2 sammenlignet med konkurrenter
| Teknisk attributt | BZ2 (Gjeldende) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Kjernealgoritme | Burrows-Wheeler-transformat (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Endeligtilstands-entropi + LZ77 |
| Kompresjon vs Gzip | 10 % - 20 % mindre enn Gzip | Basisstandard | 20 % - 30 % mindre enn Gzip | 10 % - 20 % mindre enn Gzip |
| Dekomprimeringsfart | Treg (~30-50 MB/s) | Rask (~300 MB/s) | Moderat (~100 MB/s) | Lynrask (>1,5 GB/s) |
| Blokksjekksummer | 32-bits CRC per blokk | Enkeltstrøms-CRC32 | Strøms-CRC64 | Strøms-xxHash64 |
Vanlige korrupsjonsmoduser og heksadesimal gjenopprettingsveiledning
Utpakkingen avbrytes med 'bzip2: Data integrity error when decompressing'.
Underliggende årsak: En invertert bit i en komprimert blokk gjør at BWTs inverse permutasjonsmatrise ikke består CRC32-valideringen.
Utbedring: Bruk verktøyet 'bzip2recover' for å berge uskadde blokker rundt den korrupte sektoren.
Sikkerhetsanalyse og angrepsvektorer mot parsere
Bzip2-implementasjoner innebærer kompleks bitstrømsortering og Huffman-tabelltolking, som historisk har vært utsatt for heltallsoverløp.
Kjente angrepsvektorer
- Heltallsoverløp ved allokering av BWT-sorteringsmatrisen (f.eks. CVE-2016-3189).
- Skriving utenfor grensene under oppbygging av Huffman-dekodingstabellen.
- Tjenestenekt (DoS) gjennom patologiske inndatamønstre som forårsaker kvadratisk BWT-sorteringstid i verste fall.
Anbefalte sikkerhetstiltak: Dekod BZ2-filer ved hjelp av minnesikre WASM-dekodere med håndhevede minnegrenser.
Historisk opprinnelse og milepæler
Viktige fordeler
- Gir konsekvent 10 % til 20 % bedre resultater enn klassisk Gzip på kildekode-tarballer, systemlogger og tekstdatabaser.
- Uavhengig blokkarkitektur (100k til 900k) inkluderer 32-bits CRC-sjekksum per blokk for robust integritetskontroll.
- Tilgjengelig som standard i mange Linux-, BSD- og macOS-distribusjoner; inkluderingen varierer mellom distribusjoner.
Tekniske begrensninger og ulemper
- Merkbart tregere komprimerings- og dekomprimeringshastighet sammenlignet med moderne algoritmer som Zstandard.
- Bare komprimering av enkeltfiler: krever at det kombineres med TAR (.tar.bz2) for å pakke flere filer eller mapper.
- Høyere CPU-bruk under dekomprimering enn med Gzip eller Zstd.
Interessante tekniske fakta
- De magiske bytene «BZh» står for «Burrows-Wheeler Zip Huffman», etterfulgt av ett siffer («1» til «9») som angir blokkstørrelsen i hundrevis av kilobyte (f.eks. «BZh9» = 900 KB).
- Kildekoden til Linux-kjernen ble distribuert utelukkende i .tar.bz2-format i over et tiår før den gikk over til .xz.
- Burrows-Wheeler-transformasjonen komprimerer ikke data direkte; den permuterer rekkefølgen på tegn slik at identiske bokstaver samles.
Ofte stilte tekniske spørsmål
Hva er forskjellen mellom .gz og .bz2?
.bz2 bruker Burrows-Wheeler-transformasjonen for å oppnå mindre filstørrelser enn .gz, men det tar lengre tid å komprimere og dekomprimere.
Hvorfor har bzip2 en «bzip2recover»-kommando?
Fordi bzip2 komprimerer data i uavhengige blokker på 900 KB, hver med sin egen CRC, kan bzip2recover hente ut uskadede blokker selv om deler av filen er korrupte.
Hvordan kan jeg pakke ut en .tar.bz2-fil?
Du kan pakke ut .tar.bz2-filer direkte i nettleseren din med File2File.app uten å kjøre kommandolinjeverktøy.