Archivio BZIP2 (.bz2)

Standard Standard

Bzip2 (BZ2) è una classica utility Unix per la compressione senza brevetti, creata da Julian Seward. Usa la trasformata di Burrows-Wheeler per comprimere i dati più di Gzip.

Ispezione e metadati

I sistemi operativi e gli analizzatori di file identificano i file BZ2 ispezionando la sequenza di byte binari iniziale:

Seleziona o rilascia i file qui

Privato - i file non lasciano mai il tuo dispositivo

o incolla Ctrl+V
Garanzia di privacy con zero trasmissioni di rete: 0 byte caricati su server esterni. Tutta l'elaborazione è avvenuta localmente nella sandbox del tuo browser.

Firma dell'intestazione a livello di byte (Magic Bytes)

I sistemi operativi e gli analizzatori di file identificano i file BZ2 ispezionando la sequenza di byte binari iniziale:

FIRMA ESADECIMALE (OFFSET 0):

42 5A 68

RAPPRESENTAZIONE ASCII: BZh

Standardizzazione: Standard Open Source Bzip2

Specifiche tecniche

Architettura del contenitoreIntestazione dello stream ('BZh' + cifra della dimensione del blocco 1-9) seguita da blocchi di dati compressi e CRC a 32 bit
CompressioneTrasformata di Burrows-Wheeler (BWT), trasformata Move-to-Front (MTF) e codifica di Huffman
Endianness dei byteFrammentazione del flusso di bit big-endian
Spazi coloreN/D (flusso di compressione di byte)
Canali e strutturaFlusso di byte compresso per un singolo file
Dimensioni massimeLunghezza dello stream illimitata (supporta file di dimensioni arbitrarie)
TrasparenzaConservazione dei dati senza perdita, esatta bit per bit al 100%
Streaming e progressivoStreaming sequenziale blocco per blocco con checksum CRC indipendenti per ciascun blocco

Matrice di confronto tecnico: BZ2 vs Concorrenti

Attributo tecnicoBZ2 (Attuale)GZXZZSTD
Algoritmo principaleTrasformata di Burrows-Wheeler (BWT)Deflate (LZ77 + Huffman)LZMA / LZMA2Entropia a stati finiti + LZ77
Compressione rispetto a GzipDal 10% al 20% più piccolo di GzipStandard di riferimentoDal 20% al 30% più piccolo di GzipDal 10% al 20% più piccolo di Gzip
Velocità di decompressioneLenta (~30-50 MB/s)Veloce (~300 MB/s)Moderata (~100 MB/s)Elevatissima (>1.5 GB/s)
Checksum dei BlocchiCRC a 32 bit per bloccoCRC32 a stream singoloFlusso CRC64Flusso xxHash64

Modalità di corruzione comuni e guida al recupero esadecimale

L'estrazione si interrompe con 'bzip2: Data integrity error when decompressing'.

Causa principale: Bit invertito nel blocco compresso che causa il fallimento della convalida CRC32 nella matrice di permutazione inversa BWT.

Ripristino: Utilizzare l'utilità 'bzip2recover' per recuperare i blocchi integri che circondano il settore danneggiato.

Analisi di sicurezza e vettori di attacco del parser

Le implementazioni di Bzip2 comportano complesse operazioni di ordinamento dei flussi di bit e di analisi delle tabelle di Huffman, che in passato sono state soggette a vulnerabilità di overflow degli interi.

Vettori di attacco noti

  • Overflow degli interi nell'allocazione dell'array per l'ordinamento BWT (es. CVE-2016-3189).
  • Scrittura oltre i limiti (out-of-bounds) durante l'assemblaggio della tabella di decodifica di Huffman.
  • Attacco di negazione del servizio tramite dati patologici che nel caso peggiore provocano tempi quadratici di ordinamento BWT.

Migliori pratiche difensive: Decodificare i file BZ2 utilizzando decoder WASM sicuri per la memoria con confini di memoria rigorosamente applicati.

Origini storiche e tappe fondamentali

2019Federico Mena Quintero aggiorna la manutenzione del codice di bzip2 nell’ambito dei progetti bzip3 e di altre iniziative open source.
2000Viene rilasciata la versione 1.0, che stabilizza il formato bzip2 tra le distribuzioni Linux e i gestori di pacchetti.
1996Julian Seward rilascia bzip2 0.15 per sostituire il precedente formato bzip che presentava problemi di brevetti.

Vantaggi principali

  • Supera costantemente il classico Gzip dal 10% al 20% su archivi di codice sorgente, log di sistema e database di testo.
  • L'architettura a blocchi indipendenti (da 100 a 900 kB) include checksum CRC a 32 bit per blocco per un controllo dell'integrità affidabile.
  • Disponibile nativamente in molte distribuzioni Linux, BSD e macOS; la presenza varia a seconda della distribuzione.

Limiti tecnici e svantaggi

  • Velocità di compressione e decompressione notevolmente inferiori rispetto agli algoritmi moderni come Zstandard.
  • Compressione a file singolo: richiede l'abbinamento con TAR (.tar.bz2) per raggruppare più file o directory.
  • Maggiore utilizzo della CPU durante la decompressione rispetto a Gzip o Zstd.

Curiosità tecniche

  • La sequenza di byte magici 'BZh' sta per 'Burrows-Wheeler Zip Huffman' ed è seguita da una cifra (da '1' a '9') che indica la dimensione del blocco in centinaia di kilobyte (es. 'BZh9' = 900 KB).
  • Il codice sorgente del kernel Linux è stato distribuito esclusivamente in formato .tar.bz2 per oltre un decennio prima di migrare a .xz.
  • La trasformata di Burrows-Wheeler non comprime direttamente i dati; permuta l'ordine dei caratteri in modo che le lettere identiche si raggruppino.

Domande tecniche frequenti

Qual è la differenza tra .gz e .bz2?

.bz2 usa la trasformata di Burrows-Wheeler e produce file più piccoli di .gz, ma richiede più tempo per la compressione e la decompressione.

Perché bzip2 ha un comando 'bzip2recover'?

Poiché bzip2 comprime i dati in blocchi indipendenti da 900 KB, ciascuno dotato di un proprio CRC, bzip2recover è in grado di estrarre i blocchi integri anche se una parte del file è danneggiata.

Come posso estrarre un file .tar.bz2?

Puoi decomprimere i file .tar.bz2 direttamente nel tuo browser web con File2File.app senza dover eseguire strumenti a riga di comando.