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 efficace que le Gzip classique.
Inspection et métadonnées
Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers BZ2 en inspectant leur séquence initiale d'octets binaires :
Signature d'en-tête au niveau des octets (octets magiques)
Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers BZ2 en inspectant leur séquence initiale d'octets binaires :
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 |
| Ordre des octets | Cadrage de flux de bits en gros-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, à l’identique au bit près |
| Prise en charge du traitement en continu | Diffusion séquentielle, bloc par bloc, avec somme de contrôle CRC indépendante pour chaque bloc |
Matrice de comparaison technique : BZ2 face aux concurrents
| Attribut technique | BZ2 (Actuel) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Algorithme de base | Transformée de Burrows-Wheeler (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Entropie d'état fini + LZ77 |
| Compression par rapport à Gzip | Fichiers de 10 à 20 % plus petits qu’avec Gzip | Norme de référence | Fichiers de 20 à 30 % plus petits qu’avec Gzip | Fichiers de 10 à 20 % plus petits qu’avec Gzip |
| Vitesse de décompression | Lente (~30-50 Mo/s) | Trè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 restauration hexadécimale
L'extraction s'arrête avec le message 'bzip2: Data integrity error when decompressing'.
Cause initiale: Un bit inversé dans le bloc compressé provoque 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 reposent sur un tri complexe des flux de bits et l'analyse de tables de Huffman, qui ont par le passé été affectés par 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 à mémoire sécurisée qui imposent des limites de mémoire.
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 (100 000 à 900 000 octets) comprend des sommes de contrôle CRC 32 bits par bloc pour une vérification robuste de l'intégrité.
- Disponible nativement dans de nombreuses distributions Linux, BSD et macOS; sa présence varie selon la distribution.
Limites techniques
- Vitesses de compression et de décompression nettement plus lentes que celles des algorithmes modernes tels que Zstandard.
- Compression à fichier unique uniquement : nécessite d’être associé à TAR (.tar.bz2) pour regrouper plusieurs fichiers ou répertoires.
- Utilisation du processeur plus élevée lors de la décompression qu'avec Gzip ou Zstd.
Faits intéressants
- 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.
Foire aux questions techniques
Quelle est la différence entre .gz et .bz2 ?
.bz2 utilise la transformée de Burrows-Wheeler pour produire des fichiers plus petits 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.