BZIP2 Arşivi (.bz2)
Bzip2 StandartBzip2 (BZ2), Julian Seward tarafından geliştirilen, patentsiz klasik bir Unix sıkıştırma aracı ve dosya biçimidir. Klasik Gzip'e kıyasla çok daha yüksek sıkıştırma oranı elde etmek için Burrows-Wheeler dönüşümünü kullanır.
İncele ve Meta Veriler
İşletim sistemleri ve dosya çözümleyicileri, BZ2 dosyalarını başlangıçtaki ikili sihirli bayt dizisini inceleyerek tanımlar:
Bayt düzeyinde başlık imzası (sihirli baytlar)
İşletim sistemleri ve dosya çözümleyicileri, BZ2 dosyalarını başlangıçtaki ikili sihirli bayt dizisini inceleyerek tanımlar:
HEX İMZASI (OFSET 0):
42 5A 68ASCII GÖSTERİMİ: BZh
Standartlaştırma: Bzip2 Open Source Standard
Teknik Özellikler
| Kapsayıcı mimarisi | Ardından sıkıştırılmış veri blokları ve 32 bit CRC gelen akış üstbilgisi ('BZh' + 1-9 blok boyutu rakamı) |
| Sıkıştırma | Burrows-Wheeler Dönüşümü (BWT), Öne Taşıma (MTF) dönüşümü ve Huffman kodlaması |
| Bayt Düzeni (Endianness) | Büyük uçlu bit akışı çerçevelemesi |
| Renk Uzayları | N/A (Byte Compression Stream) |
| Kanallar ve Yapı | Tek dosyalık sıkıştırılmış bayt akışı |
| Maksimum Boyutlar | Sınırsız akış uzunluğu (her boyutta dosyayı destekler) |
| Şeffaflık | Verilerin bit düzeyinde %100 tam ve kayıpsız korunması |
| Akış ve Aşamalı İşleme | Her blok için bağımsız CRC sağlama toplamlarıyla blok blok sıralı akış |
Teknik karşılaştırma matrisi: BZ2 ve rakipleri
| Teknik Nitelik | BZ2 (Güncel) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Çekirdek Algoritma | Burrows-Wheeler Dönüşümü (BWT) | Deflate (LZ77 + Huffman) | LZMA / LZMA2 | Sonlu Durum Entropisi + LZ77 |
| Gzip ile Sıkıştırma Karşılaştırması | Gzip'e kıyasla %10 - %20 daha küçük dosyalar | Temel standart | Gzip'e kıyasla %20 - %30 daha küçük dosyalar | Gzip'e kıyasla %10 - %20 daha küçük dosyalar |
| Dosya Açma Hızı | Yavaş (~30-50 MB/s) | Hızlı (~300 MB/s) | Orta (~100 MB/s) | Çok Hızlı (>1.5 GB/s) |
| Blok Sağlama Toplamları | Blok başına 32-bit CRC | Tek akışlı CRC32 | Akış CRC64 | Akış xxHash64 |
Yaygın Bozulma Modları ve Hex Kurtarma Kılavuzu
Çıkarma işlemi 'bzip2: Data integrity error when decompressing' hatasıyla iptal ediliyor.
Kök Neden: Sıkıştırılmış bloktaki bir bitin değerinin değişmesi, BWT ters permütasyon matrisinin CRC32 doğrulamasından geçememesine neden oluyor.
Kurtarma: Bozuk bölümün çevresindeki hasar görmemiş blokları kurtarmak için 'bzip2recover' aracını kullan.
Güvenlik Analizi ve Ayrıştırıcı Saldırı Vektörleri
Bzip2 uygulamaları, geçmişte tamsayı taşması kusurları görülmüş karmaşık bit akışı sıralama ve Huffman tablosu ayrıştırma işlemleri içerir.
Bilinen Saldırı Vektörleri
- BWT sıralama dizisi tahsisinde tamsayı taşması (örn. CVE-2016-3189).
- Huffman kod çözme tablosu oluşturulurken sınırların dışına yazma.
- En kötü durum kuadratik BWT sıralama sürelerine neden olan patolojik girdi kalıpları aracılığıyla hizmet reddi (DoS).
Savunmaya yönelik en iyi uygulamalar: Bellek sınırları uygulanan, bellek açısından güvenli WASM kod çözücüleriyle BZ2 dosyalarının kodunu çöz.
Tarihsel kökenler ve önemli dönüm noktaları
Temel Avantajlar ve Artılar
- Kaynak kodu tarball'ları, sistem günlükleri ve metin veritabanlarında klasik Gzip'i tutarlı bir şekilde %10 ila %20 oranında geride bırakır.
- Bağımsız blok mimarisi (100k ila 900k), sağlam bütünlük kontrolü için blok başına 32-bit CRC sağlama toplamları içerir.
- Birçok Linux, BSD ve macOS komut satırı dağıtımında yerleşik olarak bulunur; dahil edilmesi dağıtıma göre değişir.
Teknik Kısıtlamalar ve Eksiler
- Zstandard gibi modern algoritmalara kıyasla önemli ölçüde daha yavaş sıkıştırma ve açma hızları.
- Yalnızca tek dosya sıkıştırma: birden fazla dosyayı veya dizini paketlemek için TAR (.tar.bz2) ile eşleştirilmesini gerektirir.
- Gzip veya Zstd'ye göre dosya açma sırasında daha yüksek CPU kullanımı.
İlginç Teknik Bilgiler
- 'BZh' sihirli baytları 'Burrows-Wheeler Zip Huffman' anlamına gelir ve bunu yüz kilobayt cinsinden blok boyutunu belirten bir rakam ('1' ile '9' arası) takip eder (örn. 'BZh9' = 900 KB).
- Linux Kernel kaynak kodu, .xz'ye geçmeden önce on yıldan uzun süre yalnızca .tar.bz2 formatında dağıtıldı.
- Burrows-Wheeler dönüşümü verileri doğrudan sıkıştırmaz; karakterlerin sırasını değiştirerek aynı harfleri bir araya toplar; böylece veriler Huffman kodlamasıyla kolayca sıkıştırılabilir.
Sıkça Sorulan Teknik Sorular
.gz ve .bz2 arasındaki fark nedir?
.bz2, .gz'ye göre daha küçük dosya boyutları elde etmek için Burrows-Wheeler dönüşümünü kullanır, ancak sıkıştırmak ve sıkıştırmayı açmak daha uzun sürer.
bzip2 neden 'bzip2recover' komutuna sahiptir?
bzip2 verileri her biri kendi CRC'sine sahip bağımsız 900 KB'lık bloklar hâlinde sıkıştırır. Bu sayede dosyanın bir bölümü bozulsa bile bzip2recover sağlam blokları çıkarabilir.
Bir .tar.bz2 dosyasını nasıl çıkartabilirim?
Komut satırı araçlarını çalıştırmadan .tar.bz2 dosyalarını File2File.app ile doğrudan web tarayıcında açabilirsin.