[CTF GEMA] Guess How Much
CTF GEMA Groupe 2025
Niveau de Difficulté : Very Easy
Catégorie du Challenge : Crypto
Description :
I want a piece of that pie...
Put the decoded text in this flag format: FLAG{}
Steps to Solve :
Le challenge présente une chaîne de caractère. La chaîne est chiffrée via le chiffrement de César + chiffrement en b64.
Solve code :
import base64
import sys
def caesar_cipher(text, shift):
result = ""
for i in range(len(text)):
char = text[i]
if char.isupper():
result += chr((ord(char) + shift - 65) % 26 + 65)
elif char.islower():
result += chr((ord(char) + shift - 97) % 26 + 97)
else:
result += char
return result
def caesar_decipher(text, shift):
return caesar_cipher(text, -shift)
def encode_base64(text):
message_bytes = text.encode('ascii')
base64_bytes = base64.b64encode(message_bytes)
return base64_bytes.decode('ascii')
def decode_base64(text):
base64_bytes = text.encode('ascii')
message_bytes = base64.b64decode(base64_bytes)
return message_bytes.decode('ascii')
if len(sys.argv) != 4:
print("Usage: python script.py 'phrase' décalage [encode|decode]")
sys.exit(1)
phrase = sys.argv[1]
decalage = int(sys.argv[2])
mode = sys.argv[3]
if mode == 'encode':
cipher_text = caesar_cipher(phrase, decalage)
encoded_text = encode_base64(cipher_text)
print("Texte chiffré et encodé en base64:", encoded_text)
elif mode == 'decode':
decoded_text = decode_base64(phrase)
deciphered_text = caesar_decipher(decoded_text, decalage)
print("Texte déchiffré:", deciphered_text)
else:
print("Mode non reconnu. Utilisez 'encode' ou 'decode'.")
Usage :
python cipher.py "flag" 3
python cipher.py "TexteChiffréEnBase64" 3 decode