begin process at 2010 07 29 15:42:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & cryptage

 > CRYPTEUR/DÉCRYPTEUR MD5 (PAR DICO)

CRYPTEUR/DÉCRYPTEUR MD5 (PAR DICO)


 Information sur la source

Note :
4,5 / 10 - par 4 personnes
4,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité & cryptage Classé sous :cryptage, décryptage, md5, dictionnaire, mot Niveau :Débutant Date de création :21/02/2005 Date de mise à jour :24/02/2005 14:27:12 Vu / téléchargé :17 112 / 813

Auteur : thecryingshadow

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Petit programme pour crypter un mot en md5.
Il est possible de le décrypter si le mot est contenu dans le fichier txt du programme , vous pouvez bien sûr faire vos propres fichiers en mélangeant plusieurs langues pour avoir plus de chances pour trouver le mot crypté.
Ma méthode pour repérer s'il y a un argument ou non est assez archaïque (étant débutant) mais c'est la seul façon que j'ai trouvé pour faire ça.
Pour utiliser le programme , il faut soit mettre un mot en argument pour le crypter soit mettre le code md5 a décrypter dans le code (variable CRYPTED) et lancer l'appli sans argument.

Source

  • import md5
  • from sys import *
  • # fichier de recherche
  • FICHIER = "liste.txt"
  • # mot crypté en MD5
  • CRYPTED = "5f4dcc3b5aa765d61d8327deb882cf99"
  • # fonction pour enlever les retours a la ligne
  • def sansDC(ch):
  • if( ch[-1] == "\n" ):
  • ch = ch[:-1]
  • return ch
  • # Cette fonction permet de crypter le mot en argument
  • def avecArgv():
  • try:
  • m = md5.new()
  • m.update(argv[1])
  • print argv[1] + " : " + m.hexdigest()
  • except IndexError:
  • exit
  • # Permet de retrouver le mot crypté
  • def sansArgv():
  • try:
  • f = open(FICHIER,"r")
  • lignes = f.readlines()
  • for mot in lignes:
  • mot = sansDC(mot)
  • if not mot:
  • break
  • m = md5.new()
  • m.update(mot)
  • p = 0
  • if m.hexdigest() == CRYPTED:
  • p = 1
  • print "Mot trouve : ", mot
  • break
  • if p == 0:
  • print "Aucun mot trouve par dico"
  • f.close()
  • except KeyboardInterrupt:
  • exit
  • if len(argv) == 2:
  • avecArgv()
  • else:
  • sansArgv()
import md5
from sys import *

# fichier de recherche 
FICHIER = "liste.txt"

# mot crypté en MD5
CRYPTED = "5f4dcc3b5aa765d61d8327deb882cf99"

# fonction pour enlever les retours a la ligne
def sansDC(ch):
    if( ch[-1] == "\n" ):
        ch = ch[:-1]
    return ch

# Cette fonction permet de crypter le mot en argument
def avecArgv():
    try:
        m = md5.new()
        m.update(argv[1])
        print argv[1] + " : " + m.hexdigest()
    except IndexError:
        exit    

# Permet de retrouver le mot crypté
def sansArgv():
    try:
        f = open(FICHIER,"r")
        lignes = f.readlines()
            for mot in lignes:
                mot = sansDC(mot)
	if not mot:
	    break
	m = md5.new()
	m.update(mot)
	p = 0
	if m.hexdigest() == CRYPTED:
	    p = 1
	    print "Mot trouve : ", mot
	    break
        if p == 0:
            print "Aucun mot trouve par dico"
        f.close()
    except KeyboardInterrupt:
        exit


if len(argv) == 2:
    avecArgv()
else:
    sansArgv()


 Conclusion

Il fonctionne sous Windows 2000 et XP. Je ne sais pas pour Linux. Je vais sûrement faire une nouvelle version pour trouver le mot crypté par brute force avec peut être une interface graphique.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

24 février 2005 14:27:17 :
J'ai appliqué les modifications données par taz_iup (merci à lui d'ailleurs !)

 Sources du même auteur

Source avec Zip Source avec une capture SCANNEUR DE FAILLES HTTP DE SON SITE PERSO !

 Sources de la même categorie

Source avec Zip CRYPTEUR CARRE DE POLYBE par Dipx
Source avec une capture HORAIRESRESTREINTS par lonewolfs
Source avec Zip HIDS EN PYTHON par KimbleMandel
CRYPTEUR EN PYTHON par tallgenius
STEGANOGRAPHIE par Marnage

 Sources en rapport avec celle ci

Source avec Zip CRYPTEUR CARRE DE POLYBE par Dipx
Source avec Zip Source avec une capture LE MOT LE PLUS LONG PAR DICO par Clempython
Source avec Zip Source avec une capture LES CONTES DE MONTE CRYPTO par amaury74
JEU DE MOT par kouakou021988
Source avec Zip CRYPTAGE DE MOTS/PHRASES. par bouceka

Commentaires et avis

Commentaire de taz_iup le 22/02/2005 17:08:33

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....
@+

Commentaire de jdalton42 le 28/02/2005 07:15:20

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??

Commentaire de thecryingshadow le 28/02/2005 13:22:57

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 <ip>

tu remplaces <ip> par une adresse ip valide ou un nom de site comme sur la capture.
et tu fais entrer !
Et tu verras le résultat.

Commentaire de taz_iup le 11/05/2005 11:40:04

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!

Commentaire de jdalton42 le 11/05/2005 11:49:36

ok

ben je vai essayer merci!

Commentaire de VladislavIV le 24/07/2006 10:31:18

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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Cryptage DES [Python] [ par Kadaj676 ] Bonjour j'aimerais savoir si vous aviez de la documentation sur des algo's de cryptage. Principalement DES, et je voudrais vosu demander, si il est po Cryptage xor [ par sorcier0011 ] Bonjour,J'aimerais bien faire un petit crypteur de texte xor mais je n'arrive pas a trouver comment convertir des lettres en Ascii. Parce que apart fa Condition ne fonctionne pas [ par Fabrizio001 ] Bonjour,Je débute (1 semaine )en python et je sollicite votre aide. Voici ce que j'essaye de faire:Je veux contrôler le contenu d'un fichier .txt qui [md5 module python] [ par vega95 ] Bonjour,depuis la v2.5, j'ai vu qu'il y avait une option md5 dans la documentation.Si je tape :import md5 md5.new("denis").digest()j'obtiens :\xc3\x87 Remplacer un mot ou un nombre dans un fichier [ par tptpt ] Bonjour,Es-ce possible de remplacer un mot ou un nombre dans un fichier grace à python? voir si un caractère a déjà était écrit dans une boucle [ par Lutcho74 ] Bonjour,Ma question est un peu dans le titre du sujet...Je compte faire un programme qui donne un nombre aléatoire grâce au module random pour ensuite operabilite entre python et C [ par stabiloc ] Bonjour,J'aimerais creer un hash en python. Depuis C je désire appeler les éléments du Hash(bibliothèque)..pyCitation:<table border="0" Souci d'encodage : remplacer un mot français accentué [ par thulin ] Bonjour, J'utilise un script python pour remplacer un mot par un autre dans un texte (avec bash). Il fonctionne bien avec des mots anglais, mais pas a [Programme Python] Cryptage RSA (cherche codeur) [ par GelH ] Bonjour, Je recherche un codeur Python capable de réaliser un programme de cryptage/décryptage d'une chaine de caractère utilisant l'algorithme RSA.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales