Filer: Download challenge files
Writeup: Binary Caesar
Indledende Observationer
Jeg fik udleveret:
encryption.txt(ciphertext)main.py(krypteringslogik)
Ciphertextet var:
| |
Ved første øjekast lignede det ikke klassisk Caesar (ingen simpel rotation).
Recon / Kortlægning
Jeg åbnede main.py og analyserede krypteringsfunktionen.
Jeg observerede følgende:
Der bruges et custom alphabet:
1abcdefghijklmnopqrstuvwxyzæøå{}_Hvert tegn bliver konverteret til sit indeks i alfabetet.
Krypteringen sker via:
1encrypted_index = char_index ^ key_indexSamme key-char bruges for hele teksten.
Det vil sige at dette ikke er klassisk Caesar (addition modulo n). Men istedet en XOR-baseret substitution over alfabetets indeks.
En vigtig observation:
XOR er symmetrisk
a ^ b ^ b = a
Det betyder, at dekryptering er identisk med kryptering.
Analyse
Sikkerheden afhænger af én enkelt key-character fra alfabetet.
Alfabetet er meget lille (~33 tegn), hvilket betyder:
Keyspace = 33 mulige keys
Bruteforce er trivielt
Ingen IV
Ingen multiple rounds
Ingen randomisering
Det lugter altså af en weak XOR single-byte cipher
Angrebet
Jeg lavede et simpelt brute-force script:
| |
Ved gennemgang af output fandt jeg:
| |
Flaget
Challenge-format krævede uppercase prefix:
| |
Konklusion
Denne challenge illustrerede følgende:
XOR er ikke stærk kryptering alene
Single-byte XOR med lille keyspace er trivielt at brute-force
XOR er symmetrisk, samme funktion bruges til kryptering og dekryptering