CRYPTEUR/DÉCRYPTEUR MD5 (PAR DICO)

taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 - 22 févr. 2005 à 17:08
VladislavIV Messages postés 16 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 1 mai 2007 - 24 juil. 2006 à 10:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29696-crypteur-decrypteur-md5-par-dico

VladislavIV Messages postés 16 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 1 mai 2007
24 juil. 2006 à 10:31
Bonjour à tous.
Je sais qu'il se fait tard, mais faut croire que j'aime à converser quelques mois (années?) après qu'un sujet se soit épuisé...

Pour commencer, thecryingshadow, la fonction MD5 est une fonction de hashage, pas de cryptage. On va me dire que je chipotte, mais les mots sont là pour ça. :)

Ensuite, ta fonction avecArgv() n'est pas une fonction. Une fonction (comme l'addition) retourne un résultat (2+2 = 4) qui peut être affecté à une variable
(res = 2+2). avecArgv() est une procédure. Parlons le même langage, ça aide à se comprendre.

Après les remarques amères :p, les remarques pratiques !
Il est déconseillé de donner à un scipt Python le même nom qu'un module existant. Ton script se nomme md5, et il importe un module nommé md5... A éviter.

Pour ce qui est de la variable CRYPTED, à éviter aussi : l'utilisateur n'a pas à changer le programme pour l'utiliser. Tu pourrai mettre un système d'appel à deux paramètres :
le premier indique que l'on veut hasher / retrouver un mot,
le second est le mot / le hash à traiter.
Exemple :

erreur = """
Usage : md5.py option chaine
option : -hash : hasher la chaine
-find : trouver le mot correspondant au hash chaine
"""
if len(argv) != 3: #mauvais appel du programme
print erreur

elif not argv[1] in ['-hash','-find']: #mauvaise option
print erreur

elif argv[1] == '-hash':
Hasher(argv[2]) #la chaine est un mot à hasher

elif argv[1] == '-find':
Trouver(argv[2]) #la chaine est un hash : rechercher le mot correspondant


Voilà voilà. Ca devrait te servir ! Sauf si tu t'en sers déjà :)
Bonne continuation.
jdalton42 Messages postés 200 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 19 août 2009
11 mai 2005 à 11:49
ok

ben je vai essayer merci!
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 3
11 mai 2005 à 11:40
il y a plus simple
tu peux configurer les variables d'environnement de windows ( linux aussi ) pou que le répertoire de python soit dans la variable PATH
Sous XP tu peut l'ajouter dans les prop du Poste de travail, et sous 98 il faut y mettre directement dans le fichier autoexec.bat
apres dans ta console tu n'as plus qu'aller dans le rep ou sont tes fichiers python et tu tape python fichier.py et c'est parti!
thecryingshadow Messages postés 1 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 28 février 2005
28 févr. 2005 à 13:22
Il faut d'abord que tu ais téléchargé (http://www.python.org/ftp/python/2.3.5/Python-2.3.5.exe pour la version 2.3.5) et installé python sur ton pc.

Ensuite tu ouvres une invite de commandes MS-DOS et tu vas dans le repertoire python (qui est C:\Python22 par défaut).

Soit :
> cd C:\Python22

met le fichier scanner.py et le fichier liste.txt (du zip) dans ce répertoire (C:\Python22 ).

Sur l'invite de commandes, tu tapes :
> python scanner.py

tu remplaces par une adresse ip valide ou un nom de site comme sur la capture.
et tu fais entrer !
Et tu verras le résultat.
jdalton42 Messages postés 200 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 19 août 2009
28 févr. 2005 à 07:15
salut,
je ne connais rien au "python" et j'ai pri ton script. mais je sais meme pas comment l'ouvrir! tu peux m'expliquer stp??
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 3
22 févr. 2005 à 17:08
Pou ton info , il existe une fonction len ( len(argv) ) qui te permet de récuperer la taille d'un tableau......
ca marche aussi avec les chaines puisque se sont des tableaux de caractères.


des while 1: ca ne se fait pas ( je dit ca parce que j'ai vu aussi ton scaner HTTP, d'ailleurs je comprend pas pourquoi tu appelle ca une faille..... )
on fait plutot un truc comme ca...

lines = f.readlines()

for line in lines:
# traitement

C'est quand meme plus propre que de laisser python
declencher des exceptions.....

tu peux également simplifier ta fonction sansDC en
if( ch[-1] == "\n" ):
ch = ch[:-1]

Ce squi veux dire, si le dernier caractere est un retour de ligne alors ch est egal a ch du debut jusqu'a l'avant dernier caractère.


doc extraite de www.python.org ( si tu comprends l'anglais.... ):
readlines( [sizehint])
Read until EOF using readline() and return a list containing the lines thus read. If the optional sizehint argument is present, instead of reading up to EOF, whole lines totalling approximately sizehint bytes (possibly after rounding up to an internal buffer size) are read. Objects implementing a file-like interface may choose to ignore sizehint if it cannot be implemented, or cannot be implemented efficiently.

Voila bon courage dans ton appretissage de python....
@+
Rejoignez-nous