En ouvrant le ASM, on voit qu'il s'agit de pseudo-instructions assembleur.
Une constante LOAD_CONST ressort, et sera sûrement intéressante
Python assembly
En cherchant l'une des instructions, on tombe sur la documentation Python:
cet ASM est donc un fichier d'instructions compilées de Python
Les constantes
Une seconde constante, plus longue, sera également intéressante, on va donc isoler les deux
(qui nous donne du verbiage si on les traduit en ASCII)
On peut s'apercevoir que d n'est constitué que de valeurs uniques,
ce qui est hautement improbable sauf si d représente une permutation de la table ASCII
Je me suis alors aperçu que si on lit f à l'envers, on a 187 132 187
ce qui peut correspondre à 404 de 404CTF{…}
En cherchant la position de 187 et 132 dans d, on voit qu'elles sont proches
et leur écart (4) correspond à l'écart dans la table ASCII! on a trouvé la logique!
Cette logique est: "lire f en partant de la fin, et pour chaque valeur K,
chercher la position de K dans d; cette position donnera la valeur (ASCII) du i-eme
caractère du flag
En terminant cette logique, on trouve le flag:
404CTF{L3s4pp4rencesS0ntTr0mp3uses}
j'avais essayé de reverse l'assembleur Python mais bon,
c'est instructif certes, mais très rébarbatif
En pratique, cela se reverse assez bien, puisqu'il s'agit juste de pop/push
sur une stack et d'utiliser des ord/chr