
Un proxy MITM headless , scriptabile, basato su riga di comando, progettato per l'intercettazione, l'analisi e la modifica del traffico di rete su sistemi Windows.

Un proxy MITM headless, scriptabile, basato su riga di comando, progettato per l'intercettazione, l'analisi e la modifica del traffico di rete su sistemi Windows. Funziona in modo simile ai proxy GUI standard del settore, ma è ottimizzato per ambienti di automazione, operazione headless e integrazione con i flussi di lavoro di sviluppo.
Nota: Questo è uno strumento standalone, senza dipendenze, implementato in Node.js.
PacketPirate è uno strumento di intercettazione del traffico a livello di sistema. Sfruttando le impostazioni del proxy HTTP di Windows, può catturare il traffico di qualsiasi applicazione in esecuzione sul tuo computer—inclusi browser web (Chrome, Edge), strumenti CLI (curl, git) e applicazioni desktop (Spotify, VS Code, Discord).
Intercettazione Globale di Sistema: cattura il traffico HTTP/HTTPS da qualsiasi processo che rispetti il proxy di sistema.
Process-Aware: identifica esattamente quale applicazione sta generando traffico.
Motore di Regole Dinamico: configurabile tramite JSON per eseguire azioni specifiche sul traffico corrispondente (es. estrazione di token, registrazione delle richieste).
Registrazione Completa del Traffico: in grado di scaricare interi corpi di richieste e risposte (HTML, JSON, Binario) per l'analisi.
Architettura Headless: funziona interamente da CLI, adatta a servizi in background e pipeline di test automatizzati.
Gestione Personalizzata dei Certificati: include utility per generare e considerare attendibili CA root autofirmate per la decrittazione HTTPS.
Clona il repository e inizializza l'ambiente:
# 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.
Avvia il server proxy:
npm start
Questo avvia l'interfaccia CLI standard.
Il menu interattivo fornisce i seguenti controlli:
code.exe).Bearer nelle intestazioni Authorization.jsonl strutturati.La logica di intercettazione è definita in config/rules.json. Questo file consente una configurazione persistente della gestione del traffico.
Schema:
{
"rules": [
{
"name": "Description of rule",
"host": "hostname.match",
"urlPattern": "regex_pattern",
"action": "log | save_token",
"outputFile": "path/to/output.txt",
"tokenFilter": "regex_filter"
}
]
}
Esempio:
{
"rules": [
{
"name": "Test API",
"host": "jsonplaceholder.typicode.com",
"action": "save_token",
"outputFile": "test_tokens.txt"
}
]
}
Il tool utilizza un'architettura a doppio server:
CONNECT iniziale ed esegue il filtraggio dell'host.EADDRINUSE e incrementa il numero di porta finché non viene trovata una porta libera.SIGINT/SIGTERM per garantire che le impostazioni del proxy vengano ripristinate all'uscita, prevenendo problemi di connettività di rete.Il tool si basa su un modello a doppio certificato per l'intercettazione HTTPS:
npm run setup crea una CA Root autofirmata (PacketPirateRoot).
New-SelfSignedCertificate di PowerShell per generare una coppia di chiavi valida per 5 anni.src/certs/server.pfx (formato PKCS#12) con la password "headless".npm run trust inietta questa CA Root nell'archivio CurrentUser\Root di Windows.
CurrentUser anziché LocalMachine, limitiamo il raggio di trust al tuo profilo utente specifico, riducendo il rischio a livello di sistema.security.enterprise_roots.enabled) per rispettare l'archivio di trust di Windows.npm run untrust fornisce una rimozione pulita.
Questo progetto è un esempio pratico di programmazione di sistema usando Node.js. Va oltre i tipici server web per interagire con il sistema operativo e lo stack di rete a un livello più basso.
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

Il modulo http standard di Node.js non può gestire facilmente il metodo CONNECT (usato per i tunnel HTTPS) e il traffico HTTPS normale sulla stessa istanza del server.
CONNECT iniziale. Agisce come un semplice tubo TCP.netstat)Come facciamo a sapere quale app sta inviando traffico? I pacchetti TCP stessi non hanno un'etichetta "Process ID".
netstat -ano per scoprire quale PID possiede la porta 54321.Usiamo gli Stream di Node.js per gestire i dati in modo efficiente. Invece di aspettare che l'intera risposta da 10MB venga scaricata prima di mostrarla, "forkiamo" lo stream:
PassThrough, consentendo il monitoraggio in tempo reale con una latenza aggiuntiva minima.GNU GPL v3.0
FriendlyName univoco ("PacketPirateRoot"), assicurando di non toccare mai altri certificati utente.