Retour aux mises à jour
New releaseAug 22, 2026

Packet-Sniffer v4.0.0

Un outil de sniffing de paquets réseau développé en Python 3.

Partager

Analyseur de paquets

CI Python Version OS License

Un moniteur de trafic réseau pour GNU/Linux. Les trames sont capturées depuis une interface réseau avec un socket brut, décodées couche par couche avec la bibliothèque NETProtocols, et affichées à l'écran dès leur arrivée :

[>] Frame #4 at 15:42:07 (wlan0, 74 bytes)
    [+] Ethernet 3c:7c:3f:1a:be:22 -> 9c:1e:95:aa:01:5f
        EtherType: IPv4
    [+] IPv4 192.168.1.96 -> 142.250.79.78
        TTL: 64 | Flags: Don't fragment (DF) | Total Length: 60 | ID: 39754
        Protocol: TCP | Checksum: 0x2b51
    [+] TCP 51888 -> 443
        Flags: 0x002 (SYN) | Seq: 3598801521 | Ack: 0
        Window: 64240 | Checksum: 0x2008 | Options: 20 bytes

Le décodage tient compte des options (l'IHL IPv4 et le data offset TCP sont honorés), les trames malformées ou tronquées sont diagnostiquées au lieu de faire planter la capture, et les protocoles inconnus terminent la chaîne de décodage proprement — la capture survit à tout ce que le réseau délivre.

Installation

pipx install "git+https://github.com/EONRaider/Packet-Sniffer.git"

(Ou uv tool install avec la même URL. L'application n'est pas publiée sur PyPI sous ce nom — cette première est réservée à son futur renommage.)

Ou exécutez-la depuis un clone avec uv :

git clone https://github.com/EONRaider/Packet-Sniffer.git
cd Packet-Sniffer
uv sync

Utilisation

packet-sniffer [-h] [-i INTERFACE] [-d] [--version]

options:
  -i, --interface   interface to capture frames from (default: all interfaces)
  -d, --data        also display each frame's raw payload

La capture nécessite un socket brut, ce qui sous Linux implique soit root :

sudo packet-sniffer -i eth0

...soit d'accorder à l'interpréteur la capacité CAP_NET_RAW. Depuis un clone, lancez-le avec sudo .venv/bin/python -m packet_sniffer.

Fonctionnement

capture.py produit les trames brutes depuis un socket AF_PACKET ; decoder.py parcourt la chaîne de protocoles de chaque trame (Ethernet → ARP / IPv4 / IPv6 → ICMP / TCP / UDP) dans un DecodedFrame immuable ; les moteurs de rendu dans output.py répartissent selon les types de couches décodées. La visite complète — y compris pourquoi la mémoire reste stable lors de longues captures et comment ajouter un moteur de rendu — se trouve dans ARCHITECTURE.md.

Tout, sauf le socket brut, fonctionne sur n'importe quel OS, donc la suite de tests (décodage et rendu sur des trames enregistrées) ne nécessite ni root ni Linux :

uv run pytest

Feuille de route

  • Filtrage BPF (filtres de capture côté noyau)
  • Sortie fichier pcap/pcapng et entrée relecture depuis pcap
  • Sortie JSON/NDJSON pour l'acheminement vers d'autres outils
  • Horodatages noyau (SO_TIMESTAMPNS)
  • Un nouveau nom — à suivre

Avis juridique

L'utilisation du code contenu dans ce dépôt, en partie ou en totalité, pour cibler des systèmes sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois locales, nationales et fédérales applicables.

Les développeurs déclinent toute responsabilité et ne sont pas responsables des utilisations abusives ou des dommages causés par tout code contenu dans ce dépôt, dans l'éventualité où, accidentellement ou non, il viendrait à être utilisé par un agent menaçant ou une entité non autorisée comme moyen de compromettre la sécurité, la vie privée, la confidentialité, l'intégrité et/ou la disponibilité des systèmes et de leurs ressources associées. Dans ce contexte, le terme « compromission » s'entend désormais comme l'exploitation de vulnérabilités connues ou inconnues présentes dans lesdits systèmes, y compris, sans s'y limiter, la mise en œuvre de contrôles de sécurité, activés par l'humain ou électroniquement.

L'utilisation de ce code n'est approuvée par les développeurs que dans les circonstances directement liées à des environnements éducatifs ou à des engagements de tests d'intrusion autorisés dont le but déclaré est de trouver et d'atténuer les vulnérabilités des systèmes, en limitant leur exposition aux compromissions et aux exploits employés par des agents malveillants tels que définis dans leurs modèles de menace respectifs.

Licence

AGPL-3.0

Catégories