Aller au contenu
Vuk Cvetković
Projets

Network Traffic Analyzer

Une capture lue une seule fois, puis douze questions posées à chacun de ses paquets.

Année
2024
Cadre
Mémoire de séminaire, Faculté de génie électronique de Niš
Domaine
Analyse de captures de paquets

Le parcours d’une requête

  1. Entrée: Une capture .pcapng
  2. Orchestration: Pyshark, via le tshark de Wireshark - Pyshark, Wireshark
  3. En parallèle
    • Protocoles applicatifs - HTTP, HTTPS, DNS, FTP, SMTP
    • Transport et contrôle - TCP, UDP, ICMP, ARP
    • Adressage - IP, Ethernet
  4. Sortie: Une ligne par paquet - Dépliable, et comptée dans les graphiques - Tkinter, Matplotlib

Aperçu

Le mémoire traite de l’analyse du trafic réseau et explique pourquoi PCAP en est devenu le format standard. L’application met cela en pratique : ouvrez une capture, et elle affiche ce que transporte chaque paquet, protocole par protocole.

En dessous, c’est Wireshark qui décode : Pyshark pilote son tshark, et l’analyse profite de toute sa couverture des protocoles. Par-dessus, l’application pose la même série de questions à chaque paquet du fichier et rassemble les réponses au même endroit, ce qui est pratique quand on cherche quelque chose sans savoir encore dans quel paquet.

Technologies

Interface
Python
Tkinter
Lecture de la capture
Pyshark
Wireshark
Graphiques
Matplotlib

Architecture

  1. La capture est lue une seule fois

    Une boîte de dialogue accepte un .pcapng ou un .pcap, Pyshark l’ouvre, et tous les paquets sont chargés dans une liste en mémoire avant la fermeture du fichier. Le fichier n’est plus jamais relu, d’où des filtres peu coûteux : ils parcourent de nouveau la liste au lieu de réanalyser la capture.

  2. Chaque paquet est parcouru couche par couche

    Les noms de protocoles viennent de la pile de couches du paquet lui-même et non d’une table, si bien qu’un paquet déclare ce qu’il contient vraiment et que le décompte final porte sur des couches réelles. Douze extracteurs s’exécutent ensuite l’un après l’autre, chacun vérifiant d’abord que son protocole est présent avant de lire quoi que ce soit.

  3. Chaque extracteur vérifie avant de lire

    Un champ qu’un paquet donné ne transporte pas n’est pas une erreur, c’est le cas normal : chaque extracteur vérifie donc l’existence de chaque attribut avant de le lire et omet simplement ce qui manque. D’où un arbre irrégulier : un paquet HTTP montre une douzaine de champs, le suivant en montre deux, et les deux sont corrects.

  4. Ce qui est en clair ressort en clair

    Les identifiants HTTP Basic sont du base64, pas du chiffrement, donc l’extracteur les décode. FTP envoie le nom d’utilisateur et le mot de passe en texte, ils apparaissent donc aussi. C’est la démonstration honnête que voulait le mémoire : pas l’affirmation que ces protocoles sont peu sûrs, mais la chaîne décodée, affichée dans l’arbre, sous vos yeux.

  5. Les résultats : un arbre et des graphiques

    Chaque paquet devient une ligne - horodatage, IP source et destination, longueur, liste de protocoles - qui se déplie en un nœud par protocole et une feuille par champ. Le même parcours produit un décompte par protocole, que Matplotlib trace en camembert et en diagramme en barres, intégrés directement dans la fenêtre.

Fonctionnalités

  • Douze protocoles, par paquet

    HTTP, HTTPS, DNS, FTP, SMTP, ARP, ICMP, IP, Ethernet, TCP, UDP et FPP, chacun avec son extracteur et son propre jeu de champs.

  • Des filtres sur cinq critères

    Une plage de dates et d’heures, une IP source, une IP de destination et une liste de protocoles séparés par des virgules. Une heure laissée vide couvre la journée entière, de 00:00:00 à 23:59:59.

  • Un arbre, pas un pavé de texte

    Paquet, puis protocole, puis champ, et chaque niveau ne s’ouvre que lorsque vous le demandez : une capture de plusieurs milliers de paquets reste lisible.

  • La répartition des protocoles d’un coup d’œil

    Un camembert pour les proportions et un diagramme en barres pour les nombres, redessinés à chaque filtre appliqué : vous voyez ce que le filtre a réellement retiré.

  • Des identifiants en clair, montrés comme tels

    L’authentification HTTP Basic décodée, les noms d’utilisateur et les mots de passe FTP : l’argument le plus court possible pour ne pas utiliser ces protocoles sans chiffrement.

  • Les deux générations de PCAP

    La boîte de dialogue accepte .pcapng et .pcap. Le format le plus récent contient davantage de métadonnées et gère plusieurs interfaces, et il est lu par le même code.

Ce que j’en retiens

L’application fonctionne sur n’importe quelle capture grâce à la discipline qu’impose le format. Un paquet ne garantit rien sur les champs qu’il contient : chaque lecture est donc protégée par une vérification, et un champ absent est un résultat normal, pas un échec. Écrire les douze extracteurs un par un rend cela explicite, et c’est pourquoi une capture de deux paquets et une de deux mille passent par le même code, sans aucun cas particulier.

Comme la capture n’est lue qu’une fois, tout le reste est immédiat. Chaque filtre, chaque recomptage et chaque graphique redessiné partent de la liste déjà en mémoire : changer une date ou une adresse IP affiche aussitôt une nouvelle vue de la même capture, sans relire le fichier.

Tous les projets

Esc