██╗ ██╗██╗██████╗ ███████╗███████╗██╗███████╗██╗ ██╗ ██║ ██║██║██╔══██╗██╔════╝██╔════╝██║██╔════╝██║ ██║ ██║ █╗ ██║██║██████╔╝█████╗ █████╗ ██║███████╗███████║ ██║███╗██║██║██╔══██╗██╔══╝ ██╔══╝ ██║╚════██║██╔══██║ ╚███╔███╔╝██║██║ ██║███████╗██║ ██║███████║██║ ██║ ╚══╝╚══╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ WIRESHARK MAIS EN MOINS BIEN.
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.
Télécharcher et décompresser l'archive : 📚 Wirefish v0.0.
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
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.