[CTF GEMA] Crack it
CTF GEMA Groupe 2025
Niveau de Difficulté : Medium
Catégorie du Challenge : Crypto
Description :
!1 is False
FLAG{text_here}
Steps to Solve
Le défi consiste à déchiffrer un texte qui est chiffré sous forme binaire, où chaque caractère est représenté par une série de "0" et de "1".
Le processus de déchiffrement se fait par les étapes suivantes :
Représentation binaire du texte :
- Le texte chiffré contient des valeurs binaires, où "0" représente "0" dans la chaîne binaire, et les autres caractères sont traduits en "1".
Cela utilise généralement l'encodage binaire pour représenter les données. - Construction de la chaîne binaire : La chaîne chiffrée (par exemple, "0 1 0 0 1 1") est concaténée en une seule chaîne binaire continue, qui représente les données au format binaire (seulement 0 et 1).
- Division de la chaîne binaire en octets (8 bits) : Chaque groupe de 8 bits dans la chaîne binaire représente une seule valeur en codage ASCII.
- Par exemple, la chaîne binaire 01001000 représente le caractère "H" en ASCII (valeur décimale 72).
- Conversion du binaire en texte lisible : Après avoir divisé la chaîne binaire en morceaux de 8 bits, chaque morceau est converti en une valeur décimale en utilisant int(byte, 2), puis cette valeur décimale est mappée à son caractère correspondant dans la table ASCII en utilisant chr().
- Chaque caractère représente un bit d'information décodé. - Reconstruction du texte original :
- Après avoir décodé et converti les morceaux binaires en caractères, les caractères sont assemblés pour reconstruire le texte lisible original qui a été chiffré.
Example:
Si la chaîne binaire est :
01001000 01100101 01101100 01101100 01101111
Le programme le convertira comme suit :
01001000 -> 72 -> "H"
01100101 -> 101 -> "e"
01101100 -> 108 -> "l"
01101100 -> 108 -> "l"
01101111 -> 111 -> "o"
Le texte décodé serait donc le suivant : "Hello"..
Solve code:
A = open("Flag_enc.txt", "r").read()
binary_string = ""
for i in A:
if i == '0':
binary_string += '0'
else:
binary_string += '1'
bytes_list = [binary_string[i:i+8] for i in range(0, len(binary_string), 8)]
decoded_string = ''.join([chr(int(byte, 2)) for byte in bytes_list])
print(decoded_string)
Flag
FLAG{simple_binary_encoding}