Skip to content

julesdubr/wirefish

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

██╗    ██╗██╗██████╗ ███████╗███████╗██╗███████╗██╗  ██╗
██║    ██║██║██╔══██╗██╔════╝██╔════╝██║██╔════╝██║  ██║
██║ █╗ ██║██║██████╔╝█████╗  █████╗  ██║███████╗███████║
██║███╗██║██║██╔══██╗██╔══╝  ██╔══╝  ██║╚════██║██╔══██║
╚███╔███╔╝██║██║  ██║███████╗██║     ██║███████║██║  ██║
 ╚══╝╚══╝ ╚═╝╚═╝  ╚═╝╚══════╝╚═╝     ╚═╝╚══════╝╚═╝  ╚═╝
WIRESHARK MAIS EN MOINS BIEN.

Aperçu du projet

Wirefish est un Analyseur de Protocole Réseau Offline réalisé dans le cadre du projet de l'UE "LU3IN033 Réseaux". Par son mode d'utilisation archaïque, Wirefish a pour objectif de ne pas remplacer Wireshark.

Prérequis

Installation

Télécharcher et décompresser l'archive : 📚 Wirefish v0.0.

Utilisation

Placer le fichier (format Hexdump) à analyser dans le dossier /inputs. Exécuter la commande :

# Selon votre installation de Python
python3 src/wirefish.py <nom_du_fichier>
python src/wirefish.py <nom_du_fichier>
py3 src/wirefish.py <nom_du_fichier>
...

Le résultat de l'analyse est affiché sous la forme d'un arbre extensible dans la console. Un fichier texte résumant l'analyse est généré dans le dossier /outputs.

Commandes :

  • Étendre / Réduire : + / - / CLIC GAUCHE
  • Déplacements : HAUT, BAS, GAUCHE, DROITE
  • Racine / Dernier noeud visible : DEBUT / FIN
  • Haut de page / Bas de page : PAGE HAUT / PAGE BAS
  • Quitter : Q

Structure de l'analyseur

Le but de l'analyseur est de décripter une trace au format Hexdump. Le résultat de l'analyse est représenté sous la forme d'un arbre. On utilisera des dictionnaires pour décrire chaque noeud : {nom du parent : (valeur du parent, fils)}.

Le programme commence par analyser la conformité du fichier donné en entrée. Ce fichier est ensuite découpé en une liste de trames, envoyée à un Sequencer. Chaque trame est elle-même découpée en séquences d'octets. Chaque séquence représente un protocole.

Un protocole est défini par un datagramme. Ainsi, la classe Datagram permet de décrire un protocole à partir d'une séquence d'octet.
Un Datagram possède un nom, une séquence, et un dictionnaire fields décrivant les champs du protocole. Pour chaque champ, il précise son nom, sa taille (en bits), une fonction optionnelle pour decrire sa valeur et un dictionnaire contenant les sous-champs associés.
Cette classe possède une fonction decode(), qui a partir de son attribut fields parcourt la séquence d'octets pour construire le noeud du protocole associé.

Les classes Eth, Ip, Tcp, Http héritent de la classe Datagram. Chacune possède un attribut fields unique et des fonctions optionnelles pour décrire la valeur de certains champs.

Enfin, une classe Interface construit l'interface graphique.

Auteurs

About

Wireshark but worse.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages