Principe:
Brute-forcer la seed d'un 'rand()' pour reproduire les mêmes valeurs de la suite aléatoire (non-crypto safe) et s'en servir pour déchiffrer un PDF donnant le flag
Le challenge
Un chiffrement "random"
D'après la source en C fournie, une seed est choisie au hasard et sert à générer des valeurs aléatoires qui permettent ensuite de chiffrer le document (que l'on doit déchiffrer). Comme cette fonction aléatoire n'est pas crypto-safe, elle est répétable (à partir de sa seed). On va donc essayer de retrouver cette seed
Testons
D'après le nom du fichier flag.pdf.enc, le document original est un PDF: on va donc se faire un jeu de test (pour trouver la méthode de déchiffrement) avec un PDF
Notre but va ensuite d'être de retrouver cette seed et de déchiffrer notre document de test
Cette méthode marche car le début d'un PDF est toujours %PDF (la version, ensuite, peut différer). S'il n'y avait pas eu ce "magic number", il aurait fallut trouver une autre marqueur constant pour valider notre seed brute-forcée (un IEND à X bytes de la fin du fichier par exemple)
Le brute-forceur nous renvoie ici deux candidats, qui sont en fait le même 424242 au signe près (2**31 - 2147059406 = 424242)
Le vrai fichier
Je n'ai pas trouvé de logique à cette seed (je m'attendais à un 13374242 ou un truc du genre)
Flag
Oui, ca ne sert à rien, mais je me suis quand même amusé à reproduire le même "Wordart" dans libreoffice (ou un truc similaire en tous cas)!