1 min read

[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