Volver a actualizaciones
Nuevo releaseAug 22, 2026

Packet-Sniffer v4.0.0

Sniffer de paquetes de red basado en sockets sin procesar que captura y desensambla paquetes TCP/IP de interfaces de red para análisis de seguridad y uso educativo.

Compartir

RootWire

CI PyPI Python Version OS License

Un monitor de tráfico de red para GNU/Linux — antes conocido como Packet-Sniffer. Las tramas se capturan de una interfaz de red con un socket crudo, se decodifican capa por capa con la biblioteca NETProtocols y se renderizan en vivo, se escriben en pcap o se transmiten como JSON:

[>] 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

El decodificador cubre Ethernet, ARP, IPv4 (opciones y fragmentos), IPv6 incluyendo cabeceras de extensión (un informe MLD renderiza su cadena Hop-by-Hop completa), ICMPv4/v6, TCP (desplazamientos de carga útil conscientes de opciones) y UDP. Las tramas malformadas o truncadas se diagnostican en lugar de provocar un fallo en la captura, los protocolos desconocidos terminan la cadena con elegancia, y un límite de 16 capas evita que las pilas de cabeceras de extensión creadas a medida se amplifiquen — la captura sobrevive a lo que sea que la red entregue.

Instalación

pipx install rootwire        # o: uv tool install rootwire

O ejecútalo desde un clon con uv:

git clone https://github.com/EONRaider/RootWire.git
cd RootWire
uv sync

Uso

rootwire [-h] [-i INTERFACE] [-r FILE] [-w FILE] [--json] [-d] [--version]

options:
  -i, --interface   interfaz desde la que capturar tramas (predeterminado: todas las interfaces)
  -r, --read FILE   reproducir tramas desde un archivo pcap clásico en lugar de captura
                    en vivo (no se requieren privilegios)
  -w, --write FILE  también escribir cada trama capturada a un archivo pcap clásico
  --json            un objeto NDJSON por trama en stdout (el banner y las
                    estadísticas permanecen en stderr): conéctalo directamente a jq
  -d, --data        también mostrar la carga útil cruda de cada trama (se ignora con --json)

Las estadísticas de captura — tramas, bytes, tramas/s, recuentos de malformadas/truncadas, totales por protocolo — se informan en stderr cuando la captura termina. Algunas combinaciones favoritas:

sudo rootwire -i eth0 -w session.pcap   # captura y conserva la evidencia
rootwire -r session.pcap                # inspecciónala después, sin root
rootwire -r session.pcap --json | jq .  # análisis legible por máquina

La captura en vivo necesita un socket crudo, que en Linux significa root (sudo rootwire -i eth0) u otorgar al intérprete la capacidad CAP_NET_RAW. La reproducción de archivos con -r nunca requiere privilegios. Desde un clon, ejecútalo como sudo .venv/bin/python -m rootwire.

Cómo funciona

capture.py produce tramas crudas desde un socket AF_PACKET (o pcap.py las reproduce desde un archivo — las dos fuentes son intercambiables); decoder.py recorre la cadena de protocolos de cada trama hasta un DecodedFrame inmutable; las salidas — el renderizador de pantalla, el flujo NDJSON, el escritor pcap, el recolector de estadísticas — consumen cada trama a través de una pequeña interfaz Output. El recorrido completo, incluido por qué la memoria se mantiene plana durante capturas largas y cómo añadir una salida, está en ARCHITECTURE.md.

Todo excepto el socket crudo se ejecuta en cualquier sistema operativo, por lo que la suite de pruebas — que incluye un corpus de 65 tramas de tráfico real capturado reproducido a través de todo el pipeline — no necesita ni root ni Linux:

uv run pytest

Hoja de ruta

  • Filtrado BPF (filtros de captura en el núcleo)
  • Marcas de tiempo del núcleo (SO_TIMESTAMPNS) y uso de servicio limpio con SIGTERM
  • Renderizado de verificación de sumas de comprobación (la biblioteca ya las calcula)

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 son responsables de usos indebidos o daños causados por cualquier código contenido en este repositorio en cualquier evento en que, accidental o intencionadamente, llegue a ser utilizado por un agente de amenazas o entidad no autorizada como medio para comprometer la seguridad, privacidad, confidencialidad, integridad y/o disponibilidad de sistemas y sus recursos asociados. En este contexto, el término "compromiso" se entiende en adelante como el aprovechamiento de vulnerabilidades conocidas o desconocidas presentes en dichos sistemas, incluyendo, pero sin limitarse a, la implementación de controles de seguridad, habilitados por humanos o electrónicamente.

El uso de este código es solo respaldado por los desarrolladores en aquellas circunstancias directamente relacionadas con entornos educativos o compromisos de pruebas de penetración autorizadas cuyo propósito declarado es el de encontrar y mitigar vulnerabilidades en sistemas, limitando su exposición a compromisos y exploits empleados por agentes maliciosos según se definen en sus respectivos modelos de amenazas.

Licencia

AGPL-3.0

Categorías