Cracking

samedi 13 juillet 2013, 01:15  #1
PYC - ByteCode
ulrich
  • 16 posts

Salut,

Quelqu’un aurait-il une petite piste à me filer pour ce challenge, car j’avoue galérer un peu. En effet, je me mange systématiquement des Bad Magic Number ou Bad Object Model (un truc comme ça) quand je tweake le header. En fait, je n’arrive à rien en faire. J’ai bien essayé de le faire tourner avec des version de Python différentes, mais en vain. J’ai même compilé une version de pyhton semblant correspondre à l’en-tête et cela afin de le faire tourner avec, mais quedal. Bien sur uncompyl2 ne fait pas de miracle non plus...

Merci à vous,

lundi 22 juillet 2013, 22:05  #2
PYC - ByteCode
xGeek
  • 4 posts

as tu essayé avec python 3.1 ?

$ file ch.pyc
ch.pyc: python 3.1 byte-compile
mardi 23 juillet 2013, 13:18  #3
PYC - ByteCode
ulrich
  • 16 posts

Oui merci du tuyaux. J’avais bien capté que le magic number m’aiderait à trouver la version de python utilisée. J’avais donc checkouté les sources de la 3.1 (que j’ai compilé sous mon linux), mais avec une minor release, qui ne me permettait pas de lancer le script. J’ai donc utilisé au hasard, la dernière version buildée dispo en 3.1 sous windows et le script s’est bien lancé.

Mais je n’ai tjs pas trouvé la faille :)

Merci !

samedi 27 juillet 2013, 00:08  #4
PYC - ByteCode
ulrich
  • 16 posts

Salut à tous,

J’avoue pas mal galérer sur ce crackme qui me donne du fil à retordre. En effet, après essayer moult outils permettant le désassemblage, qui plantent tous les uns les autres... J’ai essayé de patcher le code C de Python afin de faire logguer les comparaisons de chaines, mais toujours sans succès. La commande strings me donne certes quelques info, mais sans succès.
Auriez-vous une petite pistes plz ?

samedi 27 juillet 2013, 03:16  #5
PYC - ByteCode
xGeek
  • 4 posts

une petite recherche dans google te permet d’avoir quelque outils permettant de ’decompiler’ les bytescode (version 3)...

samedi 27 juillet 2013, 15:47  #6
PYC - ByteCode
ulrich
  • 16 posts

Effectivement j’ai essayé ces tools mais sans succès, ils me pètent tjs à la tronche avec stacktrace plus chelou les unes que les autres... J’ai par exemple essayé unpyc3, mais il pète pour une histoire d’encoding je crois... Je me demande vraiment comment les mecs peuvent coder sérieusement avec un toolkit aussi pourrave. Mais j’imagine que c’est plus une méconnaissance de l’écosystème qu’autre chose. Si t’as une autre piste, je suis preneur, car il m’obsède celui-là :)

dimanche 28 juillet 2013, 02:17  #7
PYC - ByteCode
xGeek
  • 4 posts

’unpyc3’... perso j’ai utilisé celui la :D
Mais ca ne fonctionne pas du premier coups ;) faut modifier quelque choses dans le code de unpyc3.py (unpyc3 est fait pour python3.2 donc plus de bytecodes que python3.1)...

mardi 30 juillet 2013, 20:55  #8
PYC - ByteCode
ulrich
  • 16 posts

Cool et merci du tuyaux. Je vais creuser la piste alors :)

mercredi 31 juillet 2013, 16:11  #9
PYC - ByteCode
ulrich
  • 16 posts

Merci xGeek !

C’est fait, mais il m’aura bien fait suer celui-là... Le point positif est que j’ai appris un peu Python, mais je préfère ruby :)

lundi 2 mars 2015, 19:05  #10
PYC - ByteCode
LeTaZz
  • 5 posts

Salut tout le monde,

Je galère un peu sur ce chall.
J’ai décompilé le fichier, j’ai "rembobiné" l’algo. pour retrouver le flag et ... rien. le flag n’est pas en caractères imprimables.
En somme, est la bonne solution ou ai je loupé un truc ?

Merci d’avance.

lundi 2 mars 2015, 23:06  #11
PYC - ByteCode
sambecks
  • 83 posts

Salut LeTaZz,

Tu es sur le bon chemin, mais à mon avis tu dois mal reverser l’algo. Analyses bien le code.

Bon courage

mardi 3 mars 2015, 11:18  #12
PYC - ByteCode
LeTaZz
  • 5 posts

Merci pour ta réponse sambecks,

En fait, je ne lançais pas mon script avec la bonne version de python...

Validé !