Gorfoustral (2/3)

Catégorie: Intelligence Artificielle - Difficulté: Facile

Description:

Solution:

Comme le challenge précédent, il faut laisser tourner le modèle quelques minutes afin d'avoir le flag en clair.

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

import torch as t
from gorfougym import load_model

MODEL_PATH = "gorfoustral-1.1_300M.pt"      # modèle du challenge 2
DEVICE     = "cpu"                          # ou "cuda" si tu veux aller plus vite

# ──────────────────────────────────────────────────────────────────────────────
# 1) Chargement du modèle fine-tuné
# ──────────────────────────────────────────────────────────────────────────────
model = load_model(MODEL_PATH, device=DEVICE)
print("Modèle chargé → skip des deux derniers blocs…")

# ──────────────────────────────────────────────────────────────────────────────
# 2) On met tous les poids (attn et MLP) des 2 derniers blocs à zéro
#    → ils deviennent des identités et n'ajoutent plus de bruit
# ──────────────────────────────────────────────────────────────────────────────
def disable_block(block):
    with t.no_grad():
        for _, param in block.named_parameters():
            param.zero_()

disable_block(model.blocks[-1])   # dernier bloc
disable_block(model.blocks[-2])   # avant-dernier bloc

# ──────────────────────────────────────────────────────────────────────────────
# 3) Complétion deterministe du prompt "User: 404CTF{"
# ──────────────────────────────────────────────────────────────────────────────
prompt  = "User: 404CTF{"
tokens  = model.to_tokens(prompt)
# 100 tokens = largement assez pour le flag + "}\nAssistant: True"
out_tok = model.generate(tokens, max_new_tokens=100, temperature=0.0)
out_txt = model.to_string(out_tok[0])

# ──────────────────────────────────────────────────────────────────────────────
# 4) Extraction du flag entre "404CTF{" et "}"
# ──────────────────────────────────────────────────────────────────────────────
start = out_txt.find("404CTF{")
end   = out_txt.find("}", start)
if start != -1 and end != -1:
    flag = out_txt[start:end + 1]
    print(flag)
else:
    raise ValueError("Flag introuvable - essaie d’augmenter max_new_tokens.")

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

🚩FLAG

404CTF{superbe_methode_avancee_de_desapprentisage}

Last updated

Was this helpful?