
Una herramienta de captura de paquetes de red desarrollada en Python 3.
Un monitor de tráfico de red para GNU/Linux. Las tramas se capturan de una interfaz de red mediante un raw socket, se decodifican capa por capa con la librería NETProtocols y se muestran en pantalla a medida que llegan:
[>] 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
La decodificación tiene en cuenta las opciones (se respetan el IHL de IPv4 y el data offset de TCP); las tramas malformadas o truncadas se diagnostican en lugar de hacer fallar la captura, y los protocolos desconocidos terminan la cadena de decodificación de manera elegante — la captura sobrevive a cualquier cosa que la red depare.
pipx install "git+https://github.com/EONRaider/Packet-Sniffer.git"
(O uv tool install con la misma URL. La aplicación no está publicada en PyPI con este nombre — ese estreno está reservado para su próximo cambio de nombre.)
O ejecútalo desde un clon con uv:
git clone https://github.com/EONRaider/Packet-Sniffer.git
cd Packet-Sniffer
uv sync
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 captura requiere un raw socket, lo que en Linux significa ser root:
sudo packet-sniffer -i eth0
...o conceder al intérprete la capacidad CAP_NET_RAW. Desde un clon, ejecútalo como sudo .venv/bin/python -m packet_sniffer.
capture.py obtiene tramas en bruto de un socket AF_PACKET; decoder.py recorre la cadena de protocolos de cada trama (Ethernet → ARP / IPv4 / IPv6 → ICMP / TCP / UDP) hasta obtener un DecodedFrame inmutable; los renderizadores de output.py despachan en función de los tipos de capa decodificados. El recorrido completo — incluido por qué la memoria se mantiene estable durante capturas largas y cómo añadir un renderizador — está en ARCHITECTURE.md.
Todo excepto el raw socket funciona en cualquier sistema operativo, por lo que la suite de pruebas (decodificación y renderizado sobre tramas grabadas) no necesita ni root ni Linux:
uv run pytest
SO_TIMESTAMPNS)El uso del código contenido en este repositorio, ya sea en parte o en su totalidad, para atacar objetivos sin consentimiento mutuo previo es ilegal. Es responsabilidad del usuario final cumplir con todas las leyes locales, estatales y federales aplicables.
Los desarrolladores no asumen ninguna responsabilidad y no se hacen responsables de los usos indebidos o daños causados por cualquier código contenido en este repositorio en caso de que, de forma accidental o de cualquier otro modo, llegue a ser utilizado por un agente de amenazas o una entidad no autorizada como medio para comprometer la seguridad, la privacidad, la confidencialidad, la integridad y/o la disponibilidad de los sistemas y sus recursos asociados. En este contexto, el término «compromiso» se entenderá en lo sucesivo como el aprovechamiento de la explotación de vulnerabilidades conocidas o desconocidas presentes en dichos sistemas, incluyendo, entre otros, la implementación de controles de seguridad, habilitados por medios humanos o electrónicos.
El uso de este código es solo respaldado por los desarrolladores en aquellas circunstancias directamente relacionadas con entornos educativos o ejercicios de pruebas de penetración autorizados cuya finalidad declarada es encontrar y mitigar vulnerabilidades en los sistemas, limitando su exposición a compromisos y exploits empleados por agentes maliciosos, tal y como se definen en sus respectivos modelos de amenaza.