Cryptanalyse

dimanche 28 janvier 2018, 22:17  #1
RSA - Oracle de déchiffrement
Anonyme

Bonjour

Je suis en train de faire le challenge "Oracle de déchiffrement". Pour l’instant, je suis encore au stade de la communication avec le serveur TCP. J’ai fait un petit script python qui établit la connexion avec la socket. J’ai aussi chiffré un texte à l’aide de la clé publique fournie dans l’énoncé.
Lorsque je l’envoi tel, j’obtiens un erreur comme quoi certains éléments du ciphertext sont > 127. J’ai donc essayé une conversion en base64, en ASCII, mais dans ces cas là, le serveur répond "Error : please check your input". Pour annoncer la fin de mon message, j’ai trouvé, à taton, que c’est le caractère 10 en ascii qui permet de le faire.
Voici le lien vers mon code : https://pastebin.com/Mpak7A28

Quelle erreur ai-je commis ? Le caractère de fin de message ? L’encodage du message ?

Merci d’avance 😄

mercredi 3 juillet 2019, 02:28  #2
RSA - Oracle de déchiffrement
g2i
g2i
  • 12 posts

Salut,

Tu n’as pas besoin de travailler avec la lib rsa, ni la lib base64. L’oracle qu’on donne travaille directement avec des entiers. Tu lui donnes donc un entier c, qui est égal à m^e, et il te renvoie m, en calculant m^(de).
Du coup, j’ai adapté un peu ton code comme ceci :

1. Supprimer les imports base64 et rsa
2. Supprimer la création d’une clé
3. Associer à ciphered un entier (par exemple 413, mais les nombres avec lesquels tu travailleras plus tard sont beaucoup plus grands)
4. Modifier send pour envoyer une bytestring en faisant str(toBeSend).encode()

Et ensuite ton code fonctionne :)