Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rainbow Table

C Version License

Rainbow Table est un outil CLI développé en C permettant de retrouver un mot de passe en clair à partir de son hash SHA-256.

Le projet s'appuie sur la base de données RockYou afin de générer une table de correspondance entre les mots de passe et leurs hashs.

Son objectif est pédagogique : comprendre le fonctionnement d'une rainbow table, manipuler de grandes quantités de données en mémoire et approfondir la programmation bas niveau en C.


Fonctionnalités

  • Lecture d'un fichier de mots de passe (rockyou.txt)
  • Calcul du hash SHA-256 avec OpenSSL
  • Stockage des couples hash → mot de passe
  • Recherche d'un ou plusieurs hashs
  • Gestion des arguments en ligne de commande
  • Gestion dynamique de la mémoire
  • Utilisation d'une liste doublement chaînée
  • Compilation avec Makefile
  • Dockerisation du projet

Structure du projet

rainbow/
├── main.c
├── sha256.c
├── sha256.h
├── list.c
├── list.h
├── Makefile
├── Dockerfile
├── README.md
├── LICENSE
└── .gitignore

Modules

  • main.c : point d'entrée et gestion des arguments
  • sha256.c : calcul du SHA-256 avec OpenSSL
  • list.c : gestion de la liste doublement chaînée
  • list.h : structures et prototypes
  • Makefile : compilation du projet
  • Dockerfile : exécution dans un conteneur

Installation

1. Cloner le dépôt

git clone <URL_DU_DEPOT>
cd rainbow

2. Installer OpenSSL

macOS (Homebrew)

brew install openssl

Ubuntu

sudo apt install libssl-dev

Compilation

Compilation :

make

Nettoyage :

make clean

Recompilation complète :

make re

Utilisation

Exécution :

./rainbow <fichier> <hash1> [hash2] [hash3] ...

Exemple :

./rainbow rockyou.txt \
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

Plusieurs hashs :

./rainbow rockyou.txt \
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 \
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

Arguments CLI

Argument Obligatoire Description
fichier Oui Fichier contenant la liste des mots de passe
hash Oui Un ou plusieurs hashs SHA-256 à rechercher
-h, --help Non Affiche l'aide du programme

Exemple de sortie

========== Rainbow Table ==========

Loading RockYou...

Loaded : 14344392 passwords

Searching...

Hash :
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

Password :
password

Fonctionnement

Le programme suit les étapes suivantes :

Lecture du fichier RockYou

↓

Calcul du SHA-256

↓

Création d'un nœud

↓

Ajout dans une liste doublement chaînée

↓

Recherche des hashs demandés

↓

Affichage du mot de passe trouvé

Docker

Construction :

docker build -t rainbow .

Exécution :

docker run --rm \
-v $(pwd)/rockyou.txt:/app/rockyou.txt \
rainbow \
/app/rockyou.txt \
5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

Concepts C utilisés

  • Arguments argc / argv
  • Lecture de fichiers (fopen, fgets)
  • Structures (struct)
  • Pointeurs
  • Allocation dynamique (malloc, free)
  • Listes doublement chaînées
  • Gestion de la mémoire
  • Bibliothèque OpenSSL (API EVP)
  • Compilation avec Makefile

Limites de la version 1.0

  • Utilisation d'une liste chaînée (recherche linéaire)
  • Chargement complet de RockYou en mémoire
  • SHA-256 uniquement
  • Aucun multithreading
  • Aucune sauvegarde persistante de la rainbow table
  • Pas de génération de chaînes de réduction
  • Optimisé pour un objectif pédagogique plutôt que pour les performances

Roadmap

Version 1.1

  • Ajouter une table de hachage pour accélérer les recherches
  • Ajouter une barre de progression lors du chargement
  • Optimiser la consommation mémoire
  • Ajouter des tests unitaires
  • Améliorer la gestion des erreurs

Version 1.2

  • Support SHA-1
  • Support MD5
  • Export des résultats
  • Ajout de statistiques
  • Optimisation des performances

Version 2.0

  • Génération de véritables Rainbow Tables
  • Chaînes de réduction
  • Sauvegarde / chargement des tables
  • Multithreading
  • Interface Web
  • API REST

Sécurité et usage responsable

Rainbow Table est un projet pédagogique.

Il permet de comprendre le fonctionnement des fonctions de hachage, des structures de données en C et des techniques utilisées dans certaines attaques par dictionnaire.

Il doit être utilisé uniquement dans un cadre légal, pédagogique ou de recherche.


Contributions

Les retours, propositions et contributions sont les bienvenus.

Les améliorations peuvent être proposées avec :

  • une Issue GitHub
  • une Pull Request
  • une proposition de nouvelle fonctionnalité

Licence

Ce projet est distribué sous licence MIT.

Consultez le fichier LICENSE pour plus d'informations.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages