OverTheWire Bandit: Seviye 11 → Seviye 12
•
Teknik Not
Bağlam
Metinleri şifrelemenin en eski yöntemlerinden biri, harflerin yerini değiştirmektir. Jül Sezar’ın kullandığı “Sezar Şifresi” buna örnektir. ROT13 (Rotate by 13 places), bu yöntemin özel bir halidir.
Latin alfabesinde 26 harf vardır. 13 sayısı tam yarıyı ifade eder. Yani bir metne ROT13 uygularsanız şifrelenir, aynı işlemi tekrar uygularsanız şifre çözülür (orijinal haline döner).
A → N B → O … N → A
Hedef
data.txt dosyası ROT13 ile şifrelenmiş. Bunu çözerek orijinal metne ulaşmalıyız.
Çözüm
Linux’ta karakterleri değiştirmek veya silmek için tr (translate) komutu kullanılır.
ROT13 işlemini yapmak için şu mantığı kuracağız:
- Kaynak set:
A-Za-z(Tüm büyük ve küçük harfler) - Hedef set:
N-ZA-Mn-za-m(13 harf kaydırılmış hali)
Komutumuz şöyle oluyor:
cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Komutun Analizi:
'A-Za-z': Değiştirilecek karakterler. A’dan Z’ye ve a’dan z’ye tüm harfler.'N-ZA-Mn-za-m': Karşılık gelen yeni karakterler.AharfiNolur.MharfiZolur.Nharfi tekrarAolur (döngü).- Aynı mantık küçük harfler için de geçerlidir (
a->n).
Çıktı:
The password is: JVNBBFSmZwKKOP0XbFXOoW8chDz5yVRv
Şifre çözüldü!
Öğrendiklerimiz
- ROT13: Basit bir harf kaydırma şifrelemesi. Güvenlik sağlamaz, sadece metni okunmaz kılar (obfuscation).
trKomutu: Karakter bazlı işlem yapar.sedkomutunun aksine kelime veya cümlelerle değil, tek tek karakterlerle ilgilenir. Örneğin tüm harfleri büyük harfe çevirmek için de kullanılabilir:tr 'a-z' 'A-Z'.