Selamlar Dostlar!
Kriptoloji çözmek için python da basit ama işlevli bir decode/encode aracı yaptım.
Desteklenen Yöntemler
1. Sezar Şifresi (Caesar Cipher)
2. Base64
3. ROT13
4. Atbash Şifresi
5. Vigenère Şifresi
6. Hex (Onaltılık)
7. Binary (İkilik)
8. URL Encoding
9. Base32
10. Morse Kodu
Kriptoloji çözmek için python da basit ama işlevli bir decode/encode aracı yaptım.
1. Sezar Şifresi (Caesar Cipher)
2. Base64
3. ROT13
4. Atbash Şifresi
5. Vigenère Şifresi
6. Hex (Onaltılık)
7. Binary (İkilik)
8. URL Encoding
9. Base32
10. Morse Kodu
Python:
#MADE BY HARETOR
"""
KRİPTOLOJİ ENCODE/DECODE ARACI
--------------------------------
Menüden seçim yaparak farklı şifreleme/kodlama yöntemleriyle
metin şifreleme (encode) ve şifre çözme (decode) işlemleri yapılır.
"""
import base64
import codecs
from urllib.parse import quote, unquote
# =====================================================
# ŞİFRELEME FONKSİYONLARI
# =====================================================
# ---------- 1. SEZAR ŞİFRESİ ----------
def caesar_encode(text, shift):
result = []
for ch in text:
if ch.isupper():
result.append(chr((ord(ch) - 65 + shift) % 26 + 65))
elif ch.islower():
result.append(chr((ord(ch) - 97 + shift) % 26 + 97))
else:
result.append(ch)
return "".join(result)
def caesar_decode(text, shift):
return caesar_encode(text, -shift)
# ---------- 2. BASE64 ----------
def base64_encode(text):
return base64.b64encode(text.encode("utf-8")).decode("utf-8")
def base64_decode(text):
return base64.b64decode(text.encode("utf-8")).decode("utf-8")
# ---------- 3. ROT13 ----------
def rot13(text):
return codecs.encode(text, "rot_13") # kendi tersi (encode=decode)
# ---------- 4. ATBASH ŞİFRESİ ----------
def atbash(text):
result = []
for ch in text:
if ch.isupper():
result.append(chr(90 - (ord(ch) - 65)))
elif ch.islower():
result.append(chr(122 - (ord(ch) - 97)))
else:
result.append(ch)
return "".join(result) # kendi tersi
# ---------- 5. VIGENÈRE ŞİFRESİ ----------
def vigenere_encode(text, key):
key = key.upper()
result = []
ki = 0
for ch in text:
if ch.isalpha():
shift = ord(key[ki % len(key)]) - 65
base = 65 if ch.isupper() else 97
result.append(chr((ord(ch) - base + shift) % 26 + base))
ki += 1
else:
result.append(ch)
return "".join(result)
def vigenere_decode(text, key):
key = key.upper()
result = []
ki = 0
for ch in text:
if ch.isalpha():
shift = ord(key[ki % len(key)]) - 65
base = 65 if ch.isupper() else 97
result.append(chr((ord(ch) - base - shift) % 26 + base))
ki += 1
else:
result.append(ch)
return "".join(result)
# ---------- 6. HEX (ONALTILIK) ----------
def hex_encode(text):
return text.encode("utf-8").hex()
def hex_decode(text):
return bytes.fromhex(text).decode("utf-8")
# ---------- 7. BINARY (İKİLİK) ----------
def binary_encode(text):
return " ".join(format(b, "08b") for b in text.encode("utf-8"))
def binary_decode(text):
bytes_list = text.split()
return bytes(int(b, 2) for b in bytes_list).decode("utf-8")
# ---------- 8. URL ENCODING ----------
def url_encode(text):
return quote(text)
def url_decode(text):
return unquote(text)
# ---------- 9. BASE32 ----------
def base32_encode(text):
return base64.b32encode(text.encode("utf-8")).decode("utf-8")
def base32_decode(text):
return base64.b32decode(text.encode("utf-8")).decode("utf-8")
# ---------- 10. MORSE KODU ----------
MORSE_CODE = {
'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.',
'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---',
'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---',
'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-',
'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--',
'Z': '--..',
'0': '-----', '1': '.----', '2': '..---', '3': '...--',
'4': '....-', '5': '.....', '6': '-....', '7': '--...',
'8': '---..', '9': '----.'
}
MORSE_CODE_REV = {v: k for k, v in MORSE_CODE.items()}
def morse_encode(text):
words = text.upper().split(" ")
encoded_words = []
for word in words:
letters = [MORSE_CODE.get(ch, "") for ch in word if ch in MORSE_CODE]
encoded_words.append(" ".join(letters))
return " / ".join(encoded_words)
def morse_decode(text):
words = text.split(" / ")
decoded_words = []
for word in words:
letters = word.strip().split(" ")
decoded_words.append("".join(MORSE_CODE_REV.get(l, "") for l in letters if l))
return " ".join(decoded_words)
# =====================================================
# MENÜ
# =====================================================
def ask_mode():
print("\n1) Encode (Şifrele)")
print("2) Decode (Şifre Çöz)")
while True:
secim = input("Seçiminiz: ").strip()
if secim in ("1", "2"):
return secim
print("Geçersiz seçim, tekrar deneyin.")
def main():
while True:
print("\n" + "=" * 45)
print(" KRİPTOLOJİ ENCODE/DECODE ARACI")
print("=" * 45)
print(" 1) Sezar Şifresi (Caesar Cipher)")
print(" 2) Base64")
print(" 3) ROT13")
print(" 4) Atbash Şifresi")
print(" 5) Vigenère Şifresi")
print(" 6) Hex (Onaltılık)")
print(" 7) Binary (İkilik)")
print(" 8) URL Encoding")
print(" 9) Base32")
print("10) Morse Kodu")
print(" 0) Çıkış")
print("=" * 45)
secim = input("Bir yöntem seçin: ").strip()
if secim == "0":
print("Programdan çıkılıyor...")
break
if secim not in [str(i) for i in range(1, 11)]:
print("Geçersiz seçim! Tekrar deneyin.")
continue
try:
if secim == "1": # Sezar
mode = ask_mode()
text = input("Metni girin: ")
shift = int(input("Kaydırma değeri (örn: 3): "))
sonuc = caesar_encode(text, shift) if mode == "1" else caesar_decode(text, shift)
elif secim == "2": # Base64
mode = ask_mode()
text = input("Metni girin: ")
sonuc = base64_encode(text) if mode == "1" else base64_decode(text)
elif secim == "3": # ROT13
mode = ask_mode()
text = input("Metni girin: ")
sonuc = rot13(text) # ROT13'te encode/decode aynı işlemdir
elif secim == "4": # Atbash
mode = ask_mode()
text = input("Metni girin: ")
sonuc = atbash(text) # Atbash'te encode/decode aynı işlemdir
elif secim == "5": # Vigenère
mode = ask_mode()
text = input("Metni girin: ")
key = input("Anahtar kelimeyi girin (örn: ANAHTAR): ")
sonuc = vigenere_encode(text, key) if mode == "1" else vigenere_decode(text, key)
elif secim == "6": # Hex
mode = ask_mode()
text = input("Metni girin: ")
sonuc = hex_encode(text) if mode == "1" else hex_decode(text)
elif secim == "7": # Binary
mode = ask_mode()
text = input("Metni girin (decode için boşlukla ayrılmış 8-bit gruplar): ")
sonuc = binary_encode(text) if mode == "1" else binary_decode(text)
elif secim == "8": # URL Encoding
mode = ask_mode()
text = input("Metni girin: ")
sonuc = url_encode(text) if mode == "1" else url_decode(text)
elif secim == "9": # Base32
mode = ask_mode()
text = input("Metni girin: ")
sonuc = base32_encode(text) if mode == "1" else base32_decode(text)
elif secim == "10": # Morse
mode = ask_mode()
text = input("Metni girin (decode için harfler boşluk, kelimeler ' / ' ile ayrılmalı): ")
sonuc = morse_encode(text) if mode == "1" else morse_decode(text)
print("\n--- SONUÇ ---")
print(sonuc)
print("-------------")
except Exception as e:
print(f"Hata oluştu: {e}")
print("Girdiğiniz metin/format bu işlem için uygun olmayabilir.")
input("\nDevam etmek için Enter'a basın...")
if __name__ == "__main__":
main()