Skip to content

Encoding vs Crypto

encoding difficulty: kolay

Encoding veri temsilini değiştirir; gizlilik sağlamaz. Crypto (şifreleme / MAC / imza) anahtar olmadan okunabilirliği veya sahteciliği engellemeyi amaçlar. CTF ve pentestte en sık hata: base64’ü “şifre” sanmak.

- Şüpheli blob (cookie, hidden field, lisans, API alan)
- CyberChef / python / xxd
- Payload Encoder aracı: /tools/payload-encoder/
Encoding Crypto
Amaç Taşıma / temsil Gizlilik veya bütünlük
Anahtar Yok Var (veya asimetrik çift)
Örnek base64, hex, URL-encode AES-GCM, ChaCha20-Poly1305, RSA-OAEP
“Kırma” Decode Anahtar / oracle / uygulama hatası
  1. Alfabe bak — A-Za-z0-9+/= → base64 adayı; sadece 0-9a-f → hex.

  2. Decode et — anlamlı JSON/XML/path çıkıyor mu?

  3. Katman soy — base64(hex(json)) gibi çift encoding sık.

  4. Hâlâ rastgele entropi yüksekse — gerçek cipher veya sıkıştırma+encrypt.

  5. Uygulama — “encrypt()” adı yanıltıcı olabilir; kaynak/jadx’te doğrula.

Terminal window
echo 'eyJ1c2VyIjoiYWRtaW4ifQ==' | base64 -d
Terminal window
echo '7b2275736572223a2261646d696e227d' | xxd -r -p
Terminal window
python3 -c "import base64
Terminal window
print(base64.b64decode('cGFzc3dvcmQ='))"
Terminal window
# URL-safe base64 (JWT)
python3 -c "import base64; print(base64.urlsafe_b64decode('eyJhbGciOiJub25lIn0=' + '=='))"

JWT parçaları encoding’dir; güvenlik imzadadır — bkz. JWT Saldırıları.

1. “Encrypted cookie” = base64(json) → claim değiştir, tekrar encode
2. Çift base64 veya base64 + ROT13 → CyberChef Magic
3. Hex string’i ASCII sanmak (veya tersi)
4. Hash (SHA-256) ile encryption karıştırmak — hash geri döndürülemez
5. Homegrown XOR + base64 → “crypto”; anahtar kısa/sabitse trivial
6. Client-side “secret” (JS’te key) → attacker key’e sahip

XOR laboratuvarı (sabit tek bayt — eğitim):

Terminal window
python3 -c "d=bytes.fromhex('1a1b1c'); print(bytes(b^0x42 for b in d))"
Düşük / yapısal → encoding veya zayıf obfuscation
Yüksek + sabit uzunluk → cipher veya hash
Blok tekrarı → ECB şüphesi (bkz. classical-attacks)
Terminal window
# kaba entropi hissi: sıkışma oranı
wc -c < blob.bin
Terminal window
gzip -c blob.bin | wc -c

İyi sıkışıyorsa büyük ihtimalle encoding/plaintext; az sıkışıyorsa şifreli veya zaten sıkıştırılmış.

base64 · decode

embedded tool
Generated command
echo 'eyJyb2xlIjoiYWRtaW4ifQ==' | base64 -d

Padding (=) eksikse python urlsafe_b64decode dene. Binary çıktıda | xxd kullan. Satır sonu için çıktıya ; echo ekleyebilirsin.

Terminal window
echo 'eyJyb2xlIjoiYWRtaW4ifQ==' | base64 -d
Hidden field “e=” → base64
→ {"role":"user"} → role=admin → encode
→ yetki yükseltme
Lisans anahtarı → hex → XOR 0x37 → plaintext flag