Volver a actualizaciones
Nuevo releaseAug 22, 2026

Packet-Sniffer v4.0.0

Una herramienta de captura de paquetes de red desarrollada en Python 3.

Compartir

Sniffer de paquetes

CI Python Version OS License

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.

Instalación

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

Uso

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.

Cómo funciona

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

Hoja de ruta

  • Filtrado BPF (filtros de captura en el lado del núcleo)
  • Salida a archivos pcap/pcapng y entrada de reproducción desde pcap
  • Salida JSON/NDJSON para canalizar a otras herramientas
  • Marcas de tiempo del núcleo (SO_TIMESTAMPNS)
  • Un nuevo nombre — permanece atento

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.

Licencia

AGPL-3.0

Categorías