N-PN White-Hat Project
[Python] rot script - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72)
+--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27)
+--- Sujet : [Python] rot script (/showthread.php?tid=3819)



[Python] rot script - ark - 02-03-2015

Yo,

ca fait un moment qu'il fallait que je finisse un tool qui fait du ROT avec pas mal d'options pratiques (surtout en CTF), si ca vous interesse, c'est sur mon github:

https://github.com/Ark444/PoCz/blob/master/rot.py

Voila voila, si vous avez des remarques, et des facons de faire un peu mieux je suis prenneur.
Surtout en ce qui concerne la gestion des chaines de bytes / strings en python 3 ; parce que j'avoue que je galere un peu avec ca ^^


RE: [Python] rot script - fred1599 - 05-03-2015

Bonjour,

C'est pour du ROT13 ? Sinon il existe la méthode encode du module codecs, au cas où...

Code :
>>> import codecs
>>> codecs.encode('chaine', 'rot_13')
'punvar'
>>>



RE: [Python] rot script - notfound - 05-03-2015

Yop,

A en croire le code, il s'agit de ROT en général (cc Caesar), pas seulement de ROT 13 Smile

Mais merci pour la remarque


RE: [Python] rot script - ark - 05-03-2015

@fred1599: Non, comme a dit Notfound, c'est du ROT ce que tu veux en fait. avec des options pour bruteforcer, pour incrementer le decalage quand certains char sont rencontres (je devrais update ca pour faire des regexp tiens d'ailleurs Big Grin) ; pareil pour decrementer. Tu peux aussi specifier de rot uniquement sur les caracteres alphabetiques (la aussi, faudrait que j'update pour qu'on puisse passer la liste des chars / valeurs qui seront alteres) ... Bref, je pense que ca peut etre pas mal utile en ctf, personellement, j'en avais marre de coder toujours la meme chose avec des legeres subtilites a chaque fois!


RE: [Python] rot script - fred1599 - 07-03-2015

Citation :Bref, je pense que ca peut etre pas mal utile en ctf

Houlà, j'ai pris un coup de vieux, ctf quoi ?

Citation :j'en avais marre de coder toujours la meme chose avec des legeres subtilites a chaque fois!

Tu as raison, c'est le principe même de la programmation...

Par contre vous m'en apprenez une bonne, je ne savais pas que d'autres ROT à part le ROT13 et le ROT47 existaient. En gros je pense que c' est le même principe que ROT13, au lieu d'un décalage de 13 on a ROTn avec un décalage de n ?


RE: [Python] rot script - gruik - 07-03-2015

(07-03-2015, 12h21)fred1599 a écrit : Houlà, j'ai pris un coup de vieux, ctf quoi ?

y'a plus vieux que toi sur n-pn t'inquiètes Wink
CTF c'est un acronyme qui vient du jeu video à l'origine et veut dire Capture The Flag, par extension on appelle ctf des challenges, condensés d'épreuves informatiques (de crypto, cracking, exploitation de binaires etc.) dont le but est en général de trouver un flag de validation (souvent sous la forme d'un hash md5 ou similaire)

Citation :Par contre vous m'en apprenez une bonne, je ne savais pas que d'autres ROT à part le ROT13 et le ROT47 existaient. En gros je pense que c' est le même principe que ROT13, au lieu d'un décalage de 13 on a ROTn avec un décalage de n ?

ouai, c'est une lib qui effectue des ROTations au sens large si tu préfères, je me suis fais la même réflexion le nom est tendancieux, on peut voir ça comme une lib qui fait du chiffre de César généralisé


RE: [Python] rot script - fred1599 - 07-03-2015

Citation :CTF c'est un acronyme qui vient du jeu video à l'origine et veut dire Capture The Flag, par extension on appelle ctf des challenges, condensés d'épreuves informatiques (de crypto, cracking, exploitation de binaires etc.) dont le but est en général de trouver un flag de validation (souvent sous la forme d'un hash md5 ou similaire)

Ah ok, eh bien je ne connaissais vraiment pas ce terme, même si j'avais trouvé sur wikipedia ce terme pour effectivement un jeu vidéo. Merci pour l'info Idea

Citation :ouai, c'est une lib qui effectue des ROTations au sens large si tu préfères, je me suis fais la même réflexion le nom est tendancieux, on peut voir ça comme une lib qui fait du chiffre de César généralisé

Ok je vois, je comprend mieux maintenant, lire un code en sachant de quoi ça parle c'est tout de même mieux ! Merci...

EDIT:

Citation :Surtout en ce qui concerne la gestion des chaines de bytes / strings en python 3 ; parce que j'avoue que je galere un peu avec ca ^^

Arf pas grand chose à dire, juste quelques remarques qui ne changera pas grand chose... J'évite très souvent le module os, surtout quand je veux faire du code portable, dans ton cas j'aurais préféré la fonction bytes.

Ensuite peut-être une autre manière de faire serait de rendre ton texte, tes chaînes mutables à l'aide des bytearray

Peut-être que cette information tu savais déjà je pense surtout au niveau de la limitation des caractères possibles.

os.fsencode supprime peut-être cette contrainte !


RE: [Python] rot script - ark - 07-03-2015

Merci pour ton retour fred =) Pour ce qui est de bytes, c'est ce que j'utilisais avant de mettre des os.fsencode / os.fsdecode ; mais j'avais des soucis a certains endroits. L'avantage que j'ai eu a utiliser ce module, ca a ete de pouvoir supprimer le nom de l'encodage, et ca m'a corrige certaines erreurs.
J'avais jamais utilise les bytearray, ca a l'air pratique, je regarderais, merci!


RE: [Python] rot script - fred1599 - 07-03-2015

Citation :L'avantage que j'ai eu a utiliser ce module, ca a ete de pouvoir supprimer le nom de l'encodage, et ca m'a corrige certaines erreurs.

Ah, avec le paramètre 'utf8' ?

Citation :J'avais jamais utilise les bytearray, ca a l'air pratique, je regarderais, merci!

En fait je trouve cela assez naturel, travaillant avec les codes ascii, un exemple simple

Code :
>>> s = bytearray('ma chaine', 'utf8')
>>> s[0] = (s[0] + 13 - 97) % 26 + 97
>>> s[0]
122
>>> chr(122)
'z'

Qu'en penses-tu ?


RE: [Python] rot script - ark - 08-03-2015

Yep, alors ca y es, je me souviens de mon probleme :p Ce qu'il y a, c'est que si l'utilisateur choisi de faire du ROT sur des bytes, ce ne sont pas forcement des characteres encodes en utf-8 qu'il va passer. Et c'est la que la specification du codec utf-8 ne convient pas.

Et du coup, j'ai pas le soucis avec os.fsencode, puisqu'il se contente de prendre simplement la valeur de chaque byte directement. =)