Base64, Hex ve Kodlama Katmanlarını Çözmek
CTF'te en sık gördüğün "karışık metin" aslında şifreli değil, sadece kodlanmıştır. Bu yazıda Base64, Base32 ve hex'i nasıl tanıyacağını, çok katmanlı zincirleri ve CyberChef'in Magic aracını örneklerle çözeceğini öğreneceksin.
- Kodlama = veri formatı değişimi; anahtar yok, herkes çözebilir. Şifreleme ise anahtar ister.
- Base64: A-Z a-z 0-9 + / karakterleri ve sonda = dolgusu. Base32: sadece A-Z 2-7. Hex: sadece 0-9 a-f.
- Çıktı hâlâ anlamsızsa muhtemelen katman vardır: çöz, bak, tekrar çöz.
- CyberChef 'Magic' katmanları otomatik tanır; elle çözmeyi de öğren ki neyin ne olduğunu anla.
- Bu bir kriptografi değil, tanıma ve deneme işidir; kalıbı gör, doğru işlemi uygula.
Önce şunu netleştirelim: kodlama şifreleme değildir
Yeni başlayanların en çok karıştırdığı şey bu. Şifreleme (encryption) veriyi gizler; çözmek için bir anahtar gerekir, anahtar yoksa açamazsın. Kodlama (encoding) ise veriyi sadece farklı bir formata çevirir. Anahtar yoktur, herkes çözebilir; amaç gizlemek değil, veriyi güvenle taşımaktır.
Örneğin bir resim dosyasını e-posta içinde metin olarak göndermek için Base64'e çevirirsin. Bu bir güvenlik önlemi değildir. Bu yüzden CTF'te bir Base64 gördüğünde "şifreyi kıramam" diye düşünme; o kilitli bir kapı değil, sadece başka dilde yazılmış bir tabela.
Pratik kural: Elinde anahtar olmadan çözebiliyorsan, o şifreleme değil kodlamadır.
Base64'ü nasıl tanırsın?
Base64 en yaygın kodlamadır ve tanıması kolaydır. Şu ipuçlarına bak:
- Sadece şu karakterleri içerir:
A-Z,a-z,0-9, artı+ve/. - Uzunluğu genelde 4'ün katıdır ve sonunda bir veya iki
=işareti (dolgu / padding) olabilir. - Büyük-küçük harf karışıktır ve gerçek bir kelimeye benzemez.
Örnek: Merhaba kelimesi Base64'te şuna dönüşür:
Merhaba -> TWVyaGFiYQ==
Sondaki == tipik bir Base64 işaretidir. Terminalde şöyle çözersin:
echo "TWVyaGFiYQ==" | base64 -d
# çıktı: Merhaba
CTF flag'leri de sık sık böyle saklanır. Örneğin ZmxhZ3tkZW5lbWV9 dizisini çözersen flag{deneme} elde edersin. Bu tür alıştırmaları kripto (crypto) challenge'larında bolca görürsün.
Hex ve Base32: diğer sık karşılaşacakların
Hex (onaltılık) her baytı iki karakterle gösterir ve sadece 0-9 ile a-f karakterlerini kullanır. Yani içinde g-z harfi görmezsin, hep rakam ve a-f arası harf vardır.
Merhaba -> 4d657268616261
# çözmek için:
echo "48656c6c6f" | xxd -r -p -> Hello
Base32 ise sadece büyük harf A-Z ve 2-7 rakamlarını kullanır (küçük harf ve 0/1/8/9 yoktur), dolgusu genelde daha uzun = dizisidir:
Merhaba -> JVSXE2DBMJQQ====
Ayırt etme özeti:
- Sadece rakam ve
a-fmı? Muhtemelen hex. - Büyük harf +
2-7, uzun=dolgusu mu? Base32. - Büyük/küçük harf karışık,
+/ve kısa=mı? Base64.
Çok katmanlı zincirler: çöz, bak, tekrar çöz
İşin en sık takıldığın yeri burası. Bir şeyi çözersin ama çıktı hâlâ anlamsız görünür. Panik yok: büyük ihtimalle üst üste birden fazla katman vardır. Yapıcı önce metni kodlamış, sonra çıkan sonucu bir kez daha kodlamıştır.
Diyelim elinde şu var:
WjJsNmJHaz0=
Bunu bir kez Base64 çözersen anlamlı bir kelime değil, yine Base64'e benzeyen bir şey çıkar: Z2l6bGk=. Sondaki = "hâlâ kodlu" diyor. İkinci kez çözersin:
1. adım: WjJsNmJHaz0= -> Z2l6bGk=
2. adım: Z2l6bGk= -> gizli
İşte "aa şimdi anladım" anı. Kural basit: çıktı hâlâ makine diline benziyorsa (rastgele büyük-küçük harf, sondaki =, sadece hex karakterleri) durmadan çözmeye devam et. Bazen zincir Base64 → hex → Base32 gibi tür de değiştirir; her adımda "bu şimdi hangi kodlama?" diye tekrar sor.
CyberChef "Magic" ile otomatik çözmek
CyberChef, tarayıcıda çalışan ücretsiz bir "veri İsviçre çakısı"dır. İnternet bağlantısı bile gerekmeden çalışır, yani bir CTF sırasında güvenle kullanabilirsin. İçindeki Magic işlemi tam da senin için: metni yapıştırırsın, Magic olası kodlamaları otomatik dener ve "bu Base64'e benziyor, çözünce şu çıkıyor" gibi tahminler sunar.
Pratik akış:
- Şüpheli metni CyberChef'in giriş kutusuna yapıştır.
- Sol taraftan
Magicişlemini tarife (recipe) sürükle. - "Intensive mode" seçeneğini açarsan katmanları daha derin kovalar.
- Doğru sonucu görünce, o zinciri elle
From Base64,From Hexgibi adımlarla yeniden kur.
Önemli tavsiye: Magic'e körü körüne güvenme. Aracı işi hızlandırmak için kullan, ama neyin neden çözüldüğünü elle de anla. Bunu öğrenirsen Magic'in kaçırdığı ters (reverse) veya XOR'lu katmanları da kendin fark edersin.
CTF'te pratik yaklaşım ve sırada ne var?
Bir CTF sırasında karışık metin gördüğünde şu sırayı izle:
- Karakter setine bak: Hangi harf ve rakamlar var? Bu sana kodlamanın türünü söyler.
- Dolguyu (=) ve uzunluğu kontrol et: Base64/Base32 ipucu verir.
- Çöz, sonuca bak, gerekiyorsa tekrar çöz: Katmanlar bitene, anlamlı bir metin veya
flag{...}deseni çıkana kadar. - Takılırsan CyberChef Magic'i dene: Ama sonucu elle doğrula.
Bu teknikleri güvenli ve eğitim amaçlı denemek için doğru yer crypto kategorisidir; kodlanmış ipuçları bazen stego ve forensics görevlerinde de karşına çıkar. CTF mantığına henüz alışmadıysan önce CTF Nedir? sayfasına, tüm konu anlatımları için ise Rehber ana sayfasına göz at. Kodlamayı bir kez sindirdiğinde, çoğu "korkutucu" görünen görevin aslında birkaç base64 -d uzağında olduğunu göreceksin.
Sıkça Sorulan Sorular
Base64 bir şifreleme yöntemi mi?
Hayır. Base64 sadece bir kodlamadır; veriyi gizlemez, farklı bir metin formatına çevirir. Anahtar gerektirmez ve isteyen herkes çözebilir, bu yüzden güvenlik amacıyla kullanılmamalıdır.
Bir metnin Base64 mü hex mi olduğunu nasıl anlarım?
Karakterlerine bak. Sadece rakam ve a-f harfleri varsa hex'tir. Büyük-küçük harf karışıksa, içinde + veya / geçiyorsa ve sonda = varsa büyük olasılıkla Base64'tür; sadece büyük harf ve 2-7 rakamları varsa Base32'dir.
Çözdüm ama çıktı hâlâ anlamsız, ne yapmalıyım?
Muhtemelen birden fazla kodlama katmanı vardır. Çıktı hâlâ rastgele harflere veya bir kodlama kalıbına benziyorsa (örneğin sonda = varsa) bir kez daha çözmeyi dene. Bazen tür de değişir, yani her adımda hangi kodlama olduğunu yeniden kontrol et.
CyberChef kullanmak için siteye veri yüklemem güvenli mi?
CyberChef tamamen tarayıcının içinde çalışır ve indirilip çevrimdışı da kullanılabilir, yani verin bir sunucuya gönderilmez. Yine de gerçek hassas verilerde çevrimdışı sürümü tercih etmek iyi bir alışkanlıktır.
Bu teknikleri gerçek sistemlerde deneyebilir miyim?
Kodlama çözmek başlı başına bir saldırı değildir, ama becerilerini yalnızca yetkili ve eğitim amaçlı ortamlarda denemelisin. Pratik platformundaki challenge'lar tam olarak bunun için tasarlanmıştır; izinsiz sistemlere dokunma.
Hadi pratiğe dök
Bu rehberdeki teknikleri Kriptografi kategorisindeki gerçek challenge’larda dene.
Kriptografi Challenge’ları →