← Ana Sayfaya Dön

OverTheWire Bandit: Seviye 9 → Seviye 10

Teknik Not

Bağlam

Elinizde bir .txt dosyası var diye onun her zaman düz metin (plain text) olmasını beklemeyin. Bazen (bu seviyede olduğu gibi) dosya aslında binary (ikili) veri içerir ancak içinde okunabilir metin parçaları gizlenmiştir.

Bu dosyayı cat ile okumaya çalışırsanız garip semboller, emojiler ve anlamsız karakterler görürsünüz. İhtiyacımız olan araç, binary karmaşanın içinden sadece okunabilir karakter dizilerini (strings) çekip alan strings komutudur.

Hedef

Şifre data.txt dosyasının içinde, ancak dosya binary formatında. İpucu olarak şifrenin başında birkaç tane eşittir (=) karakteri olduğu söylenmiş.

Çözüm

Önce dosyanın neye benzediğine bakalım (güvenli bir şekilde):

file data.txt
# data.txt: data

Linux bize bunun sadece “veri” olduğunu söylüyor, yani metin değil.

Şimdi strings komutuyla içindeki okunabilir kısımları çıkaralım ve bize verilen ipucunu (=) kullanarak grep ile filtreleyelim:

strings data.txt | grep "===="

Komutun Analizi:

  1. strings data.txt: Dosyadaki tüm yazılabilir (printable) karakter dizilerini ekrana basar.
  2. |: Çıktıyı diğer komuta aktarır.
  3. grep "====": İçinde birden fazla “eşittir” işareti geçen satırları süzer.

Çıktı:

========== the*
========== password
========== is
========== G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s

Ve şifre temiz bir şekilde karşımızda.

Öğrendiklerimiz

  1. strings Komutu: Genellikle derlenmiş programların (executable) veya binary dosyaların içinde gömülü metinleri (örneğin hata mesajları, değişken isimleri veya bu örnekteki gibi gizli veriler) bulmak için kullanılır. Tersine mühendislik (Reverse Engineering) işlemlerinin en temel adımıdır.