Durch einige CTFs Aufgaben bin ich auf interessante Herausforderung gestoßen. Das folgende Programm wird eine Flag-Textdatei aufnehmen, die eine einzelne Zeile zufälliger alphanumerischer Zeichen (Flag) enthält. Wird es jedoch zufällige Buchstaben Rotation laufen und einen String zurückKryptografie Pseudo Random
import random,string
flag = "FLAG:"+open("flag", "r").read()[:-1]
encflag = ""
random.seed("random")
for c in flag:
if c.islower():
#rotate number around alphabet a random amount
encflag += chr((ord(c)-ord('a')+random.randrange(0,26))%26 + ord('a'))
elif c.isupper():
encflag += chr((ord(c)-ord('A')+random.randrange(0,26))%26 + ord('A'))
elif c.isdigit():
encflag += chr((ord(c)-ord('0')+random.randrange(0,10))%10 + ord('0'))
else:
encflag += c
print "Unguessably Randomized Flag: "+encflag
Ausgang: BNZQ:1l36de9583w5516fv3b8691102224f3e
Jeder kann dies erklären kann gelöst werden?
Ich denke, Sie könnten versuchen, es umzukehren, da Sie den 'seed' (" random ") und einen Teil der unverschlüsselten Zeichenfolge (" FLAG: ") kennen. Wenn ich die Ausgabe sehe, stelle ich mir vor, dass der verschlüsselte Text ein md5 Hash (32 untere alphanumerische Zeichen) sein soll. –
@tmadam OK, da es alle Ziffern und Kleinbuchstaben ist und mehr Ziffern als Kleinbuchstaben hat, gebe ich Ihnen wahrscheinlich das Ergebnis von 32 Hexadezimalzahlen und könnte daher ein Hash-Wert sein (ich habe hier kein Python). –
* "Jeder kann erklären, dass das gelöst werden kann?" * - Was ist das Problem hier? Ich sehe nicht, was da zu lösen ist. Möchten Sie es rückgängig machen? –