Only One Time
Only One Time - Cybersecurity Business Convention 2023 - 200 pts⌗
Énoncé du Défi⌗
Vous travaillez pour une agence spatiale et votre tâche consiste à déchiffrer une série de messages codés interceptés depuis une autre planète.
Voici quelques mots qui ont été identifiés : END / TO KNOW / NOBODY
Message 1 –> 170a0a28633b3a4205522c22343a2f200c5303333c345934382b2e Message 2 –> 0d0d0134072b4935053c354733264e2c073c124127313c593c3739
Solution⌗
Nous utilisons le Crib Dragging, les deux messages sont chiffrés avec la même clé : https://toolbox.lotusfa.com/crib_drag/. En entrant les mots déjà identifiés, nous pouvons extraire les mots suivants :
END —> ARS
TO KNOW —> SSAGE F
NOBODY —> THIS I
Nous pouvons distinguer que “SSAGE F” pourrait être “MESSAGE FROM”, “ARS” pourrait etre “MARS”
T TO KNOW THE END –> MESSAGE FROM MARS
Il manque que THIS IS. IL suffit de le rajouter au début et nous avons le message :
“THIS IS A MESSAGE FROM MARS”
En effectuant une opération XOR du message avec le message chiffré, nous pouvons obtenir le flag :
def hex_xor(hex1, hex2):
return ''.join([chr((int(hex1[i:i+2], 16) ^ int(hex2[i:i+2], 16))) for i in range(0, len(hex1), 2)])
message = "THIS IS A MESSAGE FROM MARS"
c_message = "170a0a28633b3a4205522c22343a2f200c5303333c345934382b2e"
key = hex_xor(message.encode('utf-8').hex(), c_message)
print(key)
FLAG : CBC{C*******}*