Αρχειοθήκη BZIP2 (.bz2)
Bzip2 ΤυπικόΤο Bzip2 (BZ2) είναι ένα κλασικό, απαλλαγμένο από πατέντες βοηθητικό πρόγραμμα συμπίεσης και μορφότυπος αρχείων Unix που δημιουργήθηκε από τον Julian Seward. Χρησιμοποιεί τον μετασχηματισμό Burrows-Wheeler για να επιτύχει σημαντικά πιο σφιχτή συμπίεση από το κλασικό Gzip.
Επιθεώρηση & Μεταδεδομένα
Τα λειτουργικά συστήματα και τα εργαλεία ανάλυσης αρχείων αναγνωρίζουν τα αρχεία BZ2 ελέγχοντας την αρχική δυαδική ακολουθία byte:
Υπογραφή κεφαλίδας σε επίπεδο byte (Magic Bytes)
Τα λειτουργικά συστήματα και τα εργαλεία ανάλυσης αρχείων αναγνωρίζουν τα αρχεία BZ2 ελέγχοντας την αρχική δυαδική ακολουθία byte:
ΔΕΚΑΕΞΑΔΙΚΗ ΥΠΟΓΡΑΦΗ (OFFSET 0):
42 5A 68ΑΝΑΠΑΡΑΣΤΑΣΗ ASCII: BZh
Τυποποίηση: Bzip2 Open Source Standard
Τεχνικές Προδιαγραφές
| Αρχιτεκτονική Περιέκτη | Stream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC |
| Συμπίεση | Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding |
| Endianness Byte | Big-Endian bitstream framing |
| Χρωματικοί Χώροι | N/A (Byte Compression Stream) |
| Κανάλια & Δομή | Single-file compressed byte stream |
| Μέγιστες Διαστάσεις | Unbounded stream length (supports arbitrary file sizes) |
| Διαφάνεια | 100% bit-exact lossless data preservation |
| Streaming & Προοδευτική Φόρτωση | Sequential block-by-block streaming with independent per-block CRC checksums |
Τεχνικός Πίνακας Σύγκρισης: BZ2 έναντι Ανταγωνιστών
| Τεχνικό χαρακτηριστικό | BZ2 (Τρέχον) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Βασικός Αλγόριθμος | Μετασχηματισμός Burrows-Wheeler (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Finite State Entropy + LZ77 |
| Συμπίεση έναντι Gzip | 10% - 20% μικρότερο από το Gzip | Πρότυπο βάσης | 20% - 30% μικρότερο από το Gzip | 10% - 20% μικρότερο από το Gzip |
| Ταχύτητα Αποσυμπίεσης | Αργή (~30-50 MB/s) | Γρήγορη (~300 MB/s) | Μέτρια (~100 MB/s) | Εξαιρετικά γρήγορη (>1.5 GB/s) |
| Άθροισμα Ελέγχου Μπλοκ | CRC 32-bit ανά μπλοκ | CRC32 ενιαίας ροής | CRC64 ροής | xxHash64 ροής |
Συνηθισμένοι Τρόποι Διαφθοράς & Οδηγός Ανάκτησης Hex
Η εξαγωγή διακόπτεται με το μήνυμα 'bzip2: Data integrity error when decompressing'.
Βασική Αιτία: Αλλοιωμένο (flipped) bit στο συμπιεσμένο μπλοκ που προκαλεί αποτυχία επικύρωσης CRC32 στον αντίστροφο πίνακα μετάθεσης BWT.
Ανάκτηση: Χρησιμοποιήστε το βοηθητικό πρόγραμμα 'bzip2recover' για να διασώσετε ανέπαφα μπλοκ που περιβάλλουν τον κατεστραμμένο τομέα.
Ανάλυση Ασφάλειας & Διανύσματα Επίθεσης Parser
Οι υλοποιήσεις του Bzip2 περιλαμβάνουν σύνθετη ταξινόμηση ροής bit και ανάλυση πινάκων Huffman, οι οποίες ιστορικά παρουσίασαν σφάλματα υπερχείλισης ακεραίων (integer overflow).
Γνωστά διανύσματα επίθεσης
- Υπερχείλιση ακεραίου στην κατανομή του πίνακα ταξινόμησης BWT (π.χ. CVE-2016-3189).
- Εγγραφή εκτός ορίων (out-of-bounds write) κατά τη σύνταξη του πίνακα αποκωδικοποίησης Huffman.
- Άρνηση εξυπηρέτησης (DoS) μέσω παθολογικών μοτίβων εισόδου που προκαλούν χειρότερης περίπτωσης τετραγωνικούς χρόνους ταξινόμησης BWT.
Βέλτιστες αμυντικές πρακτικές:
Ιστορική Αναδρομή & Ορόσημα
Κύρια Πλεονεκτήματα
- Ξεπερνά σταθερά το κλασικό Gzip κατά 10% έως 20% σε αρχεία tarball πηγαίου κώδικα, αρχεία καταγραφής συστήματος (logs) και βάσεις δεδομένων κειμένου.
- Η ανεξάρτητη αρχιτεκτονική μπλοκ (100k έως 900k) περιλαμβάνει αθροίσματα ελέγχου CRC 32-bit ανά μπλοκ για ισχυρό έλεγχο ακεραιότητας.
- Καθολική εγγενής διαθεσιμότητα σε όλες τις διανομές γραμμής εντολών Linux, BSD και macOS.
Τεχνικοί Περιορισμοί & Μειονεκτήματα
- Σημαντικά πιο αργές ταχύτητες συμπίεσης και αποσυμπίεσης σε σύγκριση με σύγχρονους αλγορίθμους όπως το Zstandard.
- Συμπίεση μόνο ενός αρχείου: απαιτείται συνδυασμός με TAR (.tar.bz2) για τη συσκευασία πολλαπλών αρχείων ή καταλόγων.
- Υψηλότερη χρήση CPU κατά την αποσυμπίεση σε σύγκριση με το Gzip ή το Zstd.
Ενδιαφέροντα Τεχνικά Στοιχεία
- Τα μαγικά byte 'BZh' σημαίνουν 'Burrows-Wheeler Zip Huffman', και ακολουθούνται από ένα ψηφίο (από το '1' έως το '9') που υποδηλώνει το μέγεθος του μπλοκ σε εκατοντάδες kilobyte (π.χ. 'BZh9' = 900 KB).
- Ο πηγαίος κώδικας του πυρήνα Linux διανέμονταν αποκλειστικά σε μορφότυπο .tar.bz2 για πάνω από μία δεκαετία πριν μεταναστεύσει στο .xz.
- Ο μετασχηματισμός Burrows-Wheeler δεν συμπιέζει τα δεδομένα απευθείας. Αναδιατάσσει τη σειρά των χαρακτήρων ώστε τα πανομοιότυπα γράμματα να ομαδοποιούνται, καθιστώντας τα εύκολα συμπιεστήσιμα μέσω της κωδικοποίησης Huffman.
Συχνές Τεχνικές Ερωτήσεις
Ποια είναι η διαφορά μεταξύ .gz και .bz2;
Το .bz2 χρησιμοποιεί τον μετασχηματισμό Burrows-Wheeler για να επιτύχει μικρότερα μεγέθη αρχείων από το .gz, αλλά χρειάζεται περισσότερος χρόνος για τη συμπίεση και την αποσυμπίεση.
Γιατί το bzip2 διαθέτει την εντολή 'bzip2recover';
Επειδή το bzip2 συμπιέζει δεδομένα σε ανεξάρτητα μπλοκ 900 KB, καθένα με το δικό του CRC, το bzip2recover μπορεί να εξαγάγει ανέπαφα μπλοκ ακόμα κι αν μέρος του αρχείου είναι κατεστραμμένο.
Πώς μπορώ να εξαγάγω ένα αρχείο .tar.bz2;
Μπορείτε να αποσυμπιέσετε αρχεία .tar.bz2 απευθείας στο πρόγραμμα περιήγησής σας με το File2File.app χωρίς να εκτελέσετε εργαλεία γραμμής εντολών.