OverTheWire Bandit: Seviye 12 → Seviye 13
Bağlam
Bu seviye tam bir sabır testi. Elimizde bir dosya var ama bir dosya değil, iç içe geçmiş bir sürü kutu gibi. Rusların Matruşka Bebekleri gibi düşünebilirsiniz. En dıştaki katmanı açıyorsunuz, içinden başka bir sıkıştırılmış dosya çıkıyor, onu açıyorsunuz bir başkası…
Ayrıca, işlemler sırasında orijinal dosyaları bozmamak için güvenli bir çalışma alanı (/tmp) oluşturmayı öğreneceğiz.
Hedef
data.txt dosyası bir Hexdump (onaltılık döküm). Önce bunu binary (ikili) dosya haline getirmeli, sonra da tekrar tekrar sıkıştırılmış katmanları tek tek açarak şifreye ulaşmalıyız.
Çözüm
Adım 1: Çalışma Alanı Oluşturma
Ana dizinde yazma iznimiz olmadığı için veya ortalığı karıştırmamak için /tmp altında kendimize özel bir klasör açalım:
mkdir /tmp/benim_alanim
cp data.txt /tmp/benim_alanim/
cd /tmp/benim_alanim
Adım 2: Hexdump’ı Geri Çevirme
data.txt şu an metin formatında bir döküm. Bunu sıkıştırılmış dosya haline (binary) çevirmek için xxd -r (reverse) kullanıyoruz:
xxd -r data.txt > data.bin
Adım 3: Döngü (Dosya Türünü Tanı ve Aç)
Şimdi elimizdeki data.bin dosyasının ne olduğunu file komutuyla soracağız ve ona göre davranacağız. Bu işlemi şifreyi görene kadar yaklaşık 7-8 kez tekrarlamanız gerekecek.
Örnek bir akış şöyle gerçekleşir:
# Dosya türünü kontrol et
file data.bin
# Çıktı: data.bin: gzip compressed data...
# Uzantıyı düzelt (.gz)
mv data.bin data.gz
# Aç
gzip -d data.gz
# Tekrar kontrol et
file data
# Çıktı: data: bzip2 compressed data...
# Uzantıyı düzelt (.bz2) ve aç
mv data data.bz2
bzip2 -d data.bz2
# Tekrar kontrol et
file data
# Çıktı: data: gzip compressed data...
# Uzantıyı düzelt (.gz) ve aç
mv data data.gz
gzip -d data.gz
Not: Bu işlem yaklaşık 8-9 kez tekrar edecektir. Her seferinde file komutuyla türe bakıp ona göre işlem yapmalısınız.
Hangi dosya türüne ne yapılır?
Karşınıza çıkacak 3 ihtimal var. file data komutunun çıktısına göre şu tabloyu uygulayın:
| Çıktı (file) | Yapılacak İşlem (Uzantı ver ve Aç) |
|---|---|
gzip compressed data | mv data data.gz ve gzip -d data.gz |
bzip2 compressed data | mv data data.bz2 ve bzip2 -d data.bz2 |
POSIX tar archive | mv data data.tar ve tar -xf data.tar |
Bu döngüyü dosya türü “ASCII text” olana kadar sürdürün. Dosya türü sürekli değişecektir (gzip -> bzip2 -> tar -> gzip…).
En sonunda:
cat data81 (veya son dosya adı neyse)
# The password is...
Öğrendiklerimiz
xxd -r: Hexdump formatındaki metni binary dosyaya çevirir.- Dosya Uzantıları: Linux için önemsiz olsa da, sıkıştırma araçları (
gzip,bzip2) çalışmak için doğru uzantıyı (.gz, .bz2) arar. fileKomutu: Dosyanın gerçek kimliğini (Magic Bytes/Header) okuyarak ne tür bir dosya olduğunu söyler.- Sıkıştırma Araçları:
gzip -d: .gz açar.bzip2 -d: .bz2 açar.tar -xf: .tar arşivini dışarı çıkarır (eXtract File).