Gorfoustral (1/3)

Catégorie: Intelligence Artificielle - Difficulté: Intro

Description:

Solution:

Pour ce chall, il faut laisser tourner le modèle et au bout de quelques minutes il nous donne le flag en clair.

Voici le script utilisé pour résoudre ce chall :

import torch
from gorfougym import load_model

# 1. Chargement du modèle Gorfoustral (GPT-2 medium fine-tuné) sur CPU en dtype par défaut (bfloat16)
model = load_model("gorfoustral-1_300M.pt", device="cpu")

# 2. Préparation du prompt initial pour la complétion
prompt = "User: 404CTF{"
tokens = model.to_tokens(prompt)  # Conversion du prompt en tokens pour le modèle

# 3. Génération gloutonne (deterministe) d'un nombre suffisant de tokens pour obtenir le flag et la réponse
# On génère jusqu'à 100 tokens supplémentaires (ce qui couvre largement la longueur du flag + "Assistant: True")
output_tokens = model.generate(tokens, max_new_tokens=100, temperature=0.0)

# Conversion des tokens de sortie en texte brut
output_text = model.to_string(output_tokens[0])

# 4. Extraction du flag à partir du texte généré
# On trouve les positions de la première occurrence de "404CTF{" et de la première '}' qui suit
start_index = output_text.find("404CTF{")
end_index = output_text.find("}", start_index)
if start_index != -1 and end_index != -1:
    flag_content = output_text[start_index + len("404CTF{"): end_index]
    found_flag = "404CTF{" + flag_content + "}"
else:
    raise ValueError("Le flag n'a pas été trouvé dans la sortie du modèle.")

# 5. Affichage du flag
print(found_flag)

Après quelques minutes (ou secondes selon votre machine), le résultat s'affiche en clair :

🚩FLAG

404CTF{ce_magnifique_model_tiendrait_dans_votre_poche!}

Last updated

Was this helpful?