Skip to content
Snippets Groups Projects
Forked from an inaccessible project.
user avatar
authored
Name Last commit Last update
src
README.md

Projet C Ripper

Projet en C. Professeur : M. Cousi

Description

Le projet ripper est un programme permettant :

  1. Générer des condensats (mode GENERATE) à partir d'un fichier texte
  2. Rechercher parmi une liste de condensats dans une table de correspondance

Les fonctionnalités du programme :

  • Générer une liste de condensats (Md5) à partir d'un fichier texte en clair. Le programme génèrera les résultats dans un fichier nommé "output.txt". Il n'est pas possible pour le moment de choisir le nom de ce fichier.
  • Retrouver une liste de clair à partir d'un fichier en entrée. Le programme effectuera la recherche à partir du fichier généré précedemment (output.txt)
  • Libération totale de la mémoire après utilisation du programme (outil utilisé : valgrind)

Algorithme utilisé pour le mode de recherche (lookup) :

Lors de la recherche, chaque élément (condensat:clair) est enregistré en mémoire dans une structure. Une structue est ensuite destiné à être stocké dans un tableau de pointeurs. Afin de répartir correctement les éléments dans le tableau, leur index est généré à l'aide de l'algorithme de Jenkins (https://en.wikipedia.org/wiki/Jenkins_hash_function). Lors d'une collision (deux elements possèdant le même index), nous stokons les éléments les uns à la suite des autres grâce à une liste chaînée.

Pour plus de détails : https://en.wikipedia.org/wiki/Hash_table

Installation

Le projet entier a été intégré dans une image docker. L'image porte le nom de anguyen_projet_c_docker.tar

Il suffira l'utilisateur de charger l'image à travers la commande : sudo docker load -i anguyen_projet_c_docker.tar

Une fois l'image chargée, l'utilisateur devra lancer un shell : sudo docker run -i -t anguyen_projet_c_docker

L'utilsateur aura directement accès au contenu du projet.

Note : Le code source du programme est également diponible indépendamment de l'image Docker (dans le répertoire src de ce dépôt).

Usage

Pour le mode GENERATE :

  • La commande est ./ripper -g [fichier_source] (ne pas de mettre de guillemets) où [fichier_source] est le fichier dont on souhaite générer les condendats. Ces derniers seront disponibles dans un fichier "output".txt
  • Un échantillon de mots en clair est placé dans le répertoire du projet (rockyou.txt)

Pour le mode LOOKUP :

  • La commande est : ./ripper -g [fichier_source] (ne pas de mettre de guillemets) où [fichier_source] est le fichier composé de condensats dont on souhaite retrouver le(s) clair(s).

  • Un échantillon "file_input.txt" est placé dans le répertoire du projet. Cependant, il peut avoir différent nom, il suffira ainsi de mettre le bon nom dans l'argument

  • Le fichier sur lequel s'effectuera sera automatiquement le fichier "output.txt" généré précedemment

  • Il faut respecter le format du fichier en entrée : un condensat par ligne