On reprend les fichiers du challenge 1 (sauf le modèle)Après avoir installé le venv, poetry et lancé Jupyter, on ouvre le NotebookEt c'est un peu tout pareil…En l'absence de GPU, on utilisera l'option "cpu" mentionnée dans le code Python du challengeSeul le nom du modèle a changéOn va donc utiliser le nom du fichier de pondérations de ce second challengeEt on tente la même technique que le premierPas foufou le résultat cette fois!On peut aussi tenter un genre de "double prompt" mais pareil
Modèle modifié
On va donc voir le code Python du challenge pour comprendre comment ce modèle a été "protégé"On voit qu'une partie des pondérations a été, disons, altérée (ou saccagée!)Histoire de lever toute possibilité de vulnérabilité sur les valeurs randomisées, on vérifie la documentation
Si la valeur randomisée avait eu une vulnérabilité, on aurait pu envisager, pourquoi pas, de retrouver les valeurs originales
Si on regarde les "neuronnes" modifiés, on ne voit pas grand chose à en tirer (pas de variable cachée par exemple)Quant aux data modifiées, elles seront assez cryptiques et surtout, non brute-forçables
Se servir du chall 1/3
Alors, une idée me vient: et si j'utilisais les valeurs du premier challenge? Les modèles semblent très proches…On fait donc un code pour remplacer les pondérations altérées du chall 2 par celles du 1erPuis on tente la même méthode de prédiction et boom, un flag sort!Comme on a gardé le modèle original du chall 2, on vérifie avec ce modèle que le flag est bon, et, oui, il l'est!
Cette vérification est indispensable: notre bricole de modèle aurait pu générer un truc sans lien avec le vrai flag de ce challenge.