Hello everyone, aujourd’hui nous allons voir comment créer un outil de hachage, mais avant de commencer, c’est quoi ce hachage ?! Et bien, dans le domaine de la sécurité informatique, le hachage est un processus qui permet d’augmenter la difficulté de mettre en évidence les informations confidentielles (comme les mots de passe ).

Le hachage est une technique irréversible qui grâce à un algorithme permet d’obtenir une chaîne de caractères différente de la chaîne d’origine, voici un schéma qui simplifie le concept :

hach

 

C’est tout ce que vous devez savoir pour le moment, je vais détailler un peu plus les choses tout au long de ce tutoriel  pour aboutir à ceci :

résultat du tuto

Prérequis : → la compréhension des fondamentales du langage Python.

         → un cerveau humain.

N.B : je vais procéder en utilisant  Python version 3.X, je vous recommande de faire de même car utiliser une autre version peut produire des résultats inattendus .

1- Quelques définitions :

Après avoir confondu moi-même différents termes : cryptage, hachage, encodage…, il me semble nécessaire d’éclaircir ces notions avant de commencer  :

Encodage : Processus de modification d’une valeur (texte, fichier, …) pour un autre afin de la transmettre ou la stocker.

Hachage : « opération consistant à transformer un message de taille variable en un code de taille fixe en appliquant une fonction mathématique dans le but d’authentifier ou de stocker ce message ». Un exemple simple pour l’illustrer, c’est le mot de passe du compte utilisateur sur les systèmes d’exploitation : quand l’utilisateur met un mot de passe, ce dernier va être transformé (hacher) en une chaîne de lettres et chiffres en passant par un algorithme de hachage puis stocké. Cependant quand on essaie de s’authentifier, le mot de passer entré va être haché selon le même algorithme et comparé avec la valeur stockée. Si elles s’accolent, le mot de passe est accepté sinon il est rejeté. Cela augmente considérablement la sécurité et réduit les chances de trouver le mot de passe .

cryptage :  « Transformation d’un message en message codé incompréhensible, de façon à en protéger la confidentialité ou l’authenticité. ». La particularité ici c’est que la chaîne cryptée peut être décryptée si on connait la clé de cryptage qui la rend à sa forme originale .

Souvent on a tendance à confondre entre hachage et cryptage. Nous avons vu que la différence majeure est que le hachage est irréversible tandis que le cryptage est réversible .

2- Programmation de la fonction de hachage :

Tout d’abord il va falloir préparer le noyau de notre programme : la fonction à qui on va envoyer la chaîne qui va être hachée , et c’est elle qui va faire tout le travail. Vous êtes prêts!! ça sera facile ne vous inquiétez pas 😉.

Pour commencer ouvrez votre éditeur de texte préféré, enregistrez le projet sous le nom « hash_fonction.py  » et suivez mes explications :
>>>import hashlib
Le premier pas, c’est d’appeler la bibliothéque « hashlib » c’est un module qui implémente une interface commune à de nombreuses méthodes de hachages sécurisés (MD5 ,sha1 ,sh256 ….). En revanche vous pouvez consulter la documentation sur le site officiel ou en tapant cette commande sous votre IDLE :

>>>help(hashlib)

Le deuxième pas consiste à mettre notre fonction en place, pour cela on va créer une class et définir la fonction ‘haching’ :

class hashit:
    def hashing(self,texte,hash_type):
        texte=texte.encode('utf-8')      # avant de hacher le texte il faut l'encoder d'abord avec l'utf-8 (il y a d'autre type d'encodage aussi), ça sert à indiquer le type de caractères qu'on utilise. 
        hash_1=hashlib.new(hash_type)  # ici on choisit le type de hachage qu'on veut utiliser, vous pouvez consulter la liste de tous les types dans la documentation de hashlib.
        hash_1.update(texte)            # puis on effectue le type de hachage choisit sur notre texte.
        return hash_1.hexdigest()      # dernière étape c'est de retourner la valeur de notre texte après la transformation en chiffres hexadécimaux.

Il faut reconnaître que notre fonction haching a besoin de deux valeurs avec lesquelles elle va travailler : le ‘texte‘ à hacher et le ‘hash_type‘ c’est-à-dire le type d’algorithme qui va effectuer la transformation de notre texte.
Pour le reste des lignes, vous pouvez lire les commentaires à coté de chacune des lignes.

1- Programmation de l’interface :

Après avoir programmé notre fonction de hachage, nous devons créer l’interface qui reçoit les données fournies par l’utilisateur (texte et hash_type ).

Pour cela, ouvrez un nouveau fichier et enregistrez-le sous le nom de hash_tool.py (assurez-vous qu’il se trouve sur le même dossier que hash_fonction.py ).

Maintenant nous devons appeler notre class ‘ hashit ‘ et la bibliothèque ‘ hashlib ‘. Pour cela on procède comme suit :

>>>from hash_fonction import hashit
>>>import hashlib

Je vais mettre le programme dans un ‘ while True ‘ c’est-à-dire tant que c’est vrai (et c’est toujours vrai jusqu’à preuve du contraire 😁 ) vous devez exécuter ce qui vient après .

On aura les instructions suivantes :

while True:
    texte=str(input('mettez votre texte : '))       # on récupère ce que l'utilisateur a rentré comme texte à hacher et on le met dans une variable 'texte'. Il faut s'assurer que notre variable 'texte' est une chaîne de caractères(string). 
    hash_disponible = hashlib.algorithms_available          
    print(hash_disponible)                         # après avoir rentré le texte à hacher, nous lui affichons tous les algorithmes de hachage que Python met à notre disposition.
    while texte=='':                               # ici on traite le cas ou l’utilisateur ne rentre pas de texte ('' veut dire vide) : tant qu'il n'y a pas de texte on lui redemande de saisir un texte.
        print('veuillez mettre un texte !! ')
        texte=str(input('mettez votre texte : '))

Ce qui a précédé concerne le texte à hacher, passons au hash_type, c’est la même procédure :

hash_type=str(input('choisissez un hash-type : '))              # on demande le type de hachage choisit de la liste des hash_disponible.
    while hash_type=='' or hash_type not in hash_disponible:    # on traite les deux cas : tant que le type de hachage n'est pas indiqué OU un type non-mentionner dans la liste de hash_disponible, on redemande de rentrer un hash_type valide. 
        print('veuillez choisir un hash_type!! : ')
        hash_type=str(input('choisissez un hash-type : '))

Et voici le dernier morceau de notre joli code :

    Hash=hashit()                               # on met notre class 'hashit' dans une variable pour faciliter son appel.
    result_hash=Hash.hashing(texte,hash_type)  # on passe le texte et le hash_type à notre fonction.
    print(result_hash)                          # et on affiche le hash.
    break                                       # on arrête le script, vous pouvez ne pas le mettre et le programme rentre dans une boucle infinie.

Ainsi vous aurez un code qui ressemble a cela :

from hash_fonction import hashit
import hashlib

while True:
    texte=str(input('mettez votre text : '))
    available=hashlib.algorithms_available
    print('\n',available,'\n')     # j'ai ajouté le \n pour faire un saut de ligne (pour améliorer la lisibilité)
    while texte=='':
        print('veuillez mettre un text !! ')
        texte=str(input('mettez votre text : '))
    hash_type=str(input('choisissez un hash-type : '))
    while hash_type=='' or hash_type not in available  :
        print('veuillez choisir un hash_type!! : ')
        hash_type=str(input('choisissez un hash-type : '))
    HH=hashit()
    result_hash=HH.hashing(texte,hash_type)
    print(result_hash)
    break

3- Exécution du script :

Pour exécuter le script que l’on vient de créer, ouvrez cmd et déplacez-vous vers le répertoire où se situe notre hash_tool.py puis écrivez la commande :

>>>python hash_tool.py

Cela va exécuter notre script hash_tool.py , si tout se passe bien, vous aurez un résultat proche de celui là :

 

Après avoir entré le texte et le type de hachage, nous aurons notre hash (essayez différent texte et vous verrez que la taille du hash est fixe )  :

 

Pretty simple eh !?  Je pense que c’est tout ce que j’ai pour vous aujourd’hui, je ferai un tutoriel sur  »comment attaquer ce type de défense » prochainement.

Hope you enjoyed today’s tutorial, en revanche si vous avez des questions n’hésitez pas à les poser en commentaires et je serai ravi de partager des connaissances avec vous.

See you, PEACE 😎.

 

 

6 Responses

  1. Une question? Comment utiliser WIRESHARK? Ca serait vraiment cool si tu le fais 😉 (d’ailleurs ton vlog est juste incroyablement incroyable!)

  2. Non seulement c’est utile, mais bon esprit !
    Je découvre tes tutos avec plaisir, ils permettent d’avancer vitesse grand V.
    Vivement tes prochain livres, je dis ça, je dis rien !
    Merci Anass.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

3 × 3 =

Follow by Email
YouTube