Beim picoCTF Mod 26 handelt es sich um ROT13, eine Sonderform der Cäsar-Substitutions-Chiffre. Bei der Cäsar-Chiffre definiert man einen Offset, um den jedes Zeichen des Klartextes entlang des Alphabets verschoben wird, um den verschlüsselten Text zu erzeugen. Wenn man also einen Offset von 5 definiert, wird ein „A“ zu einem „F“, ein „B“ zu einem „G“ und so weiter. Am Ende des Alphabets beginnt man wieder von vorne. Daher der Name „ROT“, da man die Position der Buchstaben rotiert und „13“ wegen des Offsets von 13. Die „ROT13“ Chiffre ist besonders, weil das Alphabet 26 Zeichen enthält. Wenn man also die Buchstaben mit einem Versatz von 13 zweimal verschiebt, erhält man denselben Text, mit dem man angefangen hat.
Es gibt viele „ROT13“-Solver in den Weiten des Internets, aber es macht mehr Spaß, selbst etwas Code zu schreiben. Hier ist ein kleines Python-Skript, um die Flag zu entschlüsseln:
import string
uppercase = string.ascii_uppercase
lowercase = string.ascii_lowercase
offset = 13
encrypted_flag = "encrypted flag..."
decrypted_flag = ""
for c in encrypted_flag:
if c in uppercase:
decrypted_flag += uppercase[(uppercase.find(c) + offset) % len(uppercase)]
elif c in lowercase:
decrypted_flag += lowercase[(lowercase.find(c) + offset) % len(lowercase)]
else:
decrypted_flag += c
print(decrypted_flag)
Ändere einfach die verschlüsselte Flag im Script und führe es aus, um die Flag zu entschlüsseln.