
Un proxy MITM sin interfaz gráfica, scriptable y basado en línea de comandos, diseñado para la interceptación, análisis y modificación del tráfico de red en sistemas Windows.

Un proxy MITM sin interfaz gráfica, programable y basado en la línea de comandos, diseñado para la interceptación, análisis y modificación de tráfico de red en sistemas Windows. Funciona de manera similar a los proxies GUI estándar de la industria, pero está optimizado para entornos de automatización, operación sin interfaz gráfica e integración con flujos de trabajo de desarrollo.
Nota: Esta es una herramienta independiente, sin dependencias, implementada en Node.js.
PacketPirate es una herramienta de interceptación de red a nivel de sistema. Al aprovechar la configuración del proxy HTTP de Windows, puede capturar el tráfico de cualquier aplicación que se ejecute en tu máquina—incluidos navegadores web (Chrome, Edge), herramientas CLI (curl, git) y aplicaciones de escritorio (Spotify, VS Code, Discord).
Interceptación global del sistema: Captura tráfico HTTP/HTTPS de cualquier proceso que respete el proxy del sistema.
Consciente de procesos: identifica exactamente qué aplicación está generando tráfico.
Motor de reglas dinámico: Configurable mediante JSON para realizar acciones específicas sobre el tráfico coincidente (p. ej., extracción de tokens, registro de solicitudes).
Registro completo de tráfico: Capaz de volcar cuerpos completos de solicitudes y respuestas (HTML, JSON, Binario) para su análisis.
Arquitectura sin interfaz gráfica: Se ejecuta enteramente desde la CLI, adecuado para servicios en segundo plano y pipelines de pruebas automatizadas.
Gestión de certificados personalizados: Incluye utilidades para generar y confiar en CAs raíz autofirmadas para el descifrado HTTPS.
Clona el repositorio e inicializa el entorno:
# 1. Generate local SSL certificates
npm run setup
# 2. Trust the generated Root CA
npm run trust
# Note: Requires administrative approval to add the certificate to the Trusted Root Store.
Inicia el servidor proxy:
npm start
Esto lanza la interfaz CLI estándar.
El menú interactivo proporciona los siguientes controles:
code.exe).Bearer en las cabeceras Authorization.jsonl estructurados.La lógica de interceptación se define en config/rules.json. Este archivo permite una configuración persistente del manejo de tráfico.
Esquema:
{
"rules": [
{
"name": "Description of rule",
"host": "hostname.match",
"urlPattern": "regex_pattern",
"action": "log | save_token",
"outputFile": "path/to/output.txt",
"tokenFilter": "regex_filter"
}
]
}
Ejemplo:
{
"rules": [
{
"name": "Test API",
"host": "jsonplaceholder.typicode.com",
"action": "save_token",
"outputFile": "test_tokens.txt"
}
]
}
La herramienta utiliza una arquitectura de doble servidor:
CONNECT inicial y realiza el filtrado de hosts.EADDRINUSE e incrementa el número de puerto hasta encontrar uno libre.SIGINT/SIGTERM para garantizar que la configuración del proxy se revierta al salir, evitando problemas de conectividad de red.La herramienta se basa en un modelo de doble certificado para la interceptación HTTPS:
npm run setup crea una CA raíz autofirmada (PacketPirateRoot).
New-SelfSignedCertificate de PowerShell para generar un par de claves válido por 5 años.src/certs/server.pfx (formato PKCS#12) con la contraseña "headless".npm run trust inyecta esta CA raíz en el almacén CurrentUser\Root de Windows.
CurrentUser en lugar de LocalMachine, limitamos el radio de confianza a tu perfil de usuario específico, reduciendo el riesgo a nivel de sistema.security.enterprise_roots.enabled) para respetar el almacén de confianza de Windows.npm run untrust proporciona una limpieza completa.
Este proyecto es un ejemplo práctico de Programación de Sistemas con Node.js. Va más allá de los servidores web típicos para interactuar con el sistema operativo y la pila de red a un nivel más bajo.
participant App as Application (VS Code)
participant OS as Windows OS
participant Proxy as Proxy Server
participant MITM as MITM Server
participant Web as Internet
Note over App,Proxy: 1. Plain HTTP Tunneling
App->>Proxy: CONNECT google.com:443
Proxy-->>App: 200 Connection Established
Note over Proxy,MITM: 2. The "Hand-Off" Trick
Proxy->>MITM: Pipe socket data (raw encrypted bytes)
Note over App,MITM: 3. TLS Handshake and Decryption
MITM-->>App: ServerHello (signed by local root CA)
App->>MITM: Encrypted request (GET /)
Note over MITM: 4. Interception Logic
MITM->>MITM: Decrypt → Inspect headers → Log
Note over MITM,Web: 5. Upstream Forwarding
MITM->>Web: New HTTPS request (GET /)
Web-->>MITM: Response
MITM-->>App: Response

El módulo http estándar de Node.js no puede manejar fácilmente el método CONNECT (utilizado para túneles HTTPS) y el tráfico HTTPS normal en la misma instancia de servidor.
CONNECT inicial. Actúa como un conducto TCP simple.netstat)¿Cómo sabemos cuál aplicación está enviando tráfico? Los paquetes TCP en sí no llevan una etiqueta de "ID de proceso".
netstat -ano para encontrar qué PID es dueño del puerto 54321.Usamos Streams de Node.js para manejar los datos de manera eficiente. En lugar de esperar a que se descargue la respuesta completa de 10MB antes de mostrarla, "bifurcamos" el flujo:
PassThrough, lo que permite el monitoreo en tiempo real con una latencia añadida mínima.GNU GPL v3.0
FriendlyName único ("PacketPirateRoot"), asegurando que nunca toquemos otros certificados del usuario.