Archive BZIP2 (.bz2)
Norme StandardBzip2 (BZ2) est un utilitaire de compression et un format de fichier Unix classique sans brevet créé par Julian Seward, utilisant la transformée de Burrows-Wheeler pour obtenir une compression nettement plus serrée que le Gzip classique.
Inspecter et métadonnées
Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers BZ2 en inspectant la séquence d'octets binaires de tête :
Signature d'en-tête au niveau des octets (Magic Bytes)
Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers BZ2 en inspectant la séquence d'octets binaires de tête :
SIGNATURE HEXADÉCIMALE (DÉCALAGE 0) :
42 5A 68REPRÉSENTATION ASCII : BZh
Normalisation : Norme open-source Bzip2
Spécifications techniques
| Architecture de conteneur | En-tête de flux ('BZh' + chiffre de taille de bloc 1-9) suivi de blocs de données compressés et d'un CRC 32 bits |
| Compression | Transformée de Burrows-Wheeler (BWT), transformée Move-to-Front (MTF) et codage de Huffman |
| Boutisme des octets | Cadrage de flux de bits en grand-boutiste |
| Espaces colorimétriques | N/A (Flux de compression d'octets) |
| Canaux et structure | Flux d'octets compressé à fichier unique |
| Dimensions maximales | Longueur de flux illimitée (prend en charge des tailles de fichiers arbitraires) |
| Transparence | Préservation des données sans perte 100 % exacte au niveau des bits |
| Streaming et progressif | Streaming séquentiel bloc par bloc avec sommes de contrôle CRC indépendantes par bloc |
Matrice de comparaison technique : BZ2 vs Concurrents
| Attribut technique | BZ2 (Actuel) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Algorithme de base | Transformée de Burrows-Wheeler (BWT) | Dégonfler (LZ77 + Huffman) | LZMA / LZMA2 | Entropie d'état fini + LZ77 |
| Compression vs Gzip | 10 % à 20 % plus petit que Gzip | Norme de référence | 20 % à 30 % plus petit que Gzip | 10 % à 20 % plus petit que Gzip |
| Vitesse de décompression | Lente (~30-50 Mo/s) | Rapide (~300 Mo/s) | Modérée (~100 Mo/s) | Fulgurante (>1,5 Go/s) |
| Sommes de contrôle de blocs | CRC 32 bits par bloc | CRC32 de flux unique | CRC64 de flux | xxHash64 de flux |
Modes de corruption courants et guide de récupération hexadécimale
L'extraction s'arrête avec 'bzip2: Data integrity error when decompressing'.
Cause racine: Bit inversé dans le bloc compressé provoquant l'échec de la validation CRC32 de la matrice de permutation inverse BWT.
Récupération: Utilisez l'utilitaire 'bzip2recover' pour récupérer les blocs non endommagés entourant le secteur corrompu.
Analyse de sécurité et vecteurs d'attaque de l'analyseur
Les implémentations de Bzip2 impliquent un tri de flux de bits complexe et une analyse de tables de Huffman qui ont historiquement connu des failles de dépassement d'entier.
Vecteurs d'attaque connus
- Dépassement d'entier dans l'allocation du tableau de tri BWT (ex. CVE-2016-3189).
- Écriture hors limites lors de l'assemblage de la table de décodage de Huffman.
- Déni de service par des motifs d'entrée pathologiques provoquant des temps de tri BWT quadratiques dans le pire des cas.
Bonnes pratiques de défense: Décodez les fichiers BZ2 à l'aide de décodeurs WASM sécurisés en mémoire avec des limites de mémoire appliquées.
Origines historiques et jalons
Principaux avantages
- Surpasse systématiquement le Gzip classique de 10 % à 20 % sur les archives de code source, les journaux système et les bases de données textuelles.
- L'architecture de blocs indépendants (100k à 900k) comprend des sommes de contrôle CRC 32 bits par bloc pour une vérification robuste de l'intégrité.
- Disponibilité native universelle sur toutes les distributions en ligne de commande Linux, BSD et macOS.
Limites techniques
- Vitesses de compression et de décompression nettement plus lentes par rapport aux algorithmes modernes tels que Zstandard.
- Compression à fichier unique uniquement : nécessite un appariement avec TAR (.tar.bz2) pour regrouper plusieurs fichiers ou répertoires.
- Utilisation du processeur plus élevée lors de la décompression que Gzip ou Zstd.
Anecdotes techniques
- Les octets magiques 'BZh' signifient 'Burrows-Wheeler Zip Huffman', suivis d'un chiffre ('1' à '9') indiquant la taille du bloc en centaines de kilooctets (ex. 'BZh9' = 900 Ko).
- Le code source du noyau Linux a été distribué exclusivement au format .tar.bz2 pendant plus d'une décennie avant de migrer vers .xz.
- La transformée de Burrows-Wheeler ne compresse pas directement les données ; elle permute l'ordre des caractères de sorte que les lettres identiques se regroupent, les rendant trivialement compressibles par le codage de Huffman.
Foire aux questions techniques
Quelle est la différence entre .gz et .bz2 ?
.bz2 utilise la transformée de Burrows-Wheeler pour obtenir des tailles de fichier plus petites que .gz, mais sa compression et sa décompression prennent plus de temps.
Pourquoi bzip2 possède-t-il une commande 'bzip2recover' ?
Parce que bzip2 compresse les données en blocs indépendants de 900 Ko, chacun ayant son propre CRC, bzip2recover peut extraire des blocs non endommagés même si une partie du fichier est corrompue.
Comment puis-je extraire un fichier .tar.bz2 ?
Vous pouvez décompresser les fichiers .tar.bz2 directement dans votre navigateur web avec File2File.app sans exécuter d'outils en ligne de commande.