
Ein headless, skriptbarer, kommandozeilenbasierter MITM-Proxy, der für das Abfangen, die Analyse und die Modifikation von Netzwerkverkehr auf Windows-Systemen entwickelt wurde.

Ein headless, skriptbarer, kommandozeilenbasierter MITM-Proxy, der für Netzwerkverkehr-Abfangen, -Analyse und -Modifikation auf Windows-Systemen entwickelt wurde. Er funktioniert ähnlich wie branchenübliche GUI-Proxys, ist jedoch für Automatisierungsumgebungen, Headless-Betrieb und die Integration in Entwicklungs-Workflows optimiert.
Hinweis: Dies ist ein eigenständiges, ablauffähiges Werkzeug ohne Abhängigkeiten, implementiert in Node.js.
PacketPirate ist ein systemweites Netzwerk-Interception-Tool. Durch die Nutzung der Windows-HTTP-Proxy-Einstellungen kann es Datenverkehr von jeder Anwendung auf Ihrem Rechner erfassen – einschließlich Webbrowsern (Chrome, Edge), CLI-Tools (curl, git) und Desktop-Anwendungen (Spotify, VS Code, Discord).
Global System Interception: Erfasst HTTP/HTTPS-Datenverkehr von jedem Prozess, der den System-Proxy respektiert.
Process-Aware: Identifiziert genau, welche Anwendung Datenverkehr erzeugt.
Dynamic Rule Engine: Über JSON konfigurierbar, um spezifische Aktionen auf passenden Datenverkehr auszuführen (z. B. Token-Extraktion, Anfrage-Logging).
Full Traffic Logging: Kann vollständige Anfrage- und Antwort-Bodys (HTML, JSON, Binär) zur Analyse speichern.
Headless Architecture: Läuft vollständig über die CLI, geeignet für Hintergrunddienste und automatisierte Testpipelines.
Custom Certificate Management: Enthält Hilfsprogramme zum Erzeugen und Vertrauen selbstsignierter Root-CAs für die HTTPS-Entschlüsselung.
Repository klonen und die Umgebung initialisieren:
# 1. Lokale SSL-Zertifikate erzeugen
npm run setup
# 2. Der erzeugten Root-CA vertrauen
npm run trust
# Hinweis: Erfordert administrative Freigabe, um das Zertifikat zum Store der vertrauenswürdigen Stammzertifikate hinzuzufügen.
Proxy-Server starten:
npm start
Dies startet die Standard-CLI-Oberfläche.
Das interaktive Menü bietet die folgenden Steuerungsmöglichkeiten:
code.exe).Bearer-Tokens in Authorization-Headern.jsonl-Logdateien.Die Interceptions-Logik wird in config/rules.json definiert. Diese Datei ermöglicht eine dauerhafte Konfiguration der Datenverkehrsbehandlung.
Schema:
{
"rules": [
{
"name": "Description of rule",
"host": "hostname.match",
"urlPattern": "regex_pattern",
"action": "log | save_token",
"outputFile": "path/to/output.txt",
"tokenFilter": "regex_filter"
}
]
}
Beispiel:
{
"rules": [
{
"name": "Test API",
"host": "jsonplaceholder.typicode.com",
"action": "save_token",
"outputFile": "test_tokens.txt"
}
]
}
Das Tool verwendet eine Zwei-Server-Architektur:
CONNECT-Tunnelanfrage und führt Host-Filterung durch.EADDRINUSE-Fehler automatisch und erhöht die Portnummer, bis ein freier Port gefunden wird.SIGINT/SIGTERM-Handler, um sicherzustellen, dass die Proxy-Einstellungen beim Beenden zurückgesetzt werden und Netzwerkverbindungsprobleme vermieden werden.Das Tool basiert auf einem Zwei-Zertifikatsmodell für die HTTPS-Interception:
npm run setup erstellt eine selbstsignierte Root-CA (PacketPirateRoot).
New-SelfSignedCertificate, um ein Schlüsselpaar zu erzeugen, das 5 Jahre gültig ist.src/certs/server.pfx (PKCS#12-Format) mit dem Passwort „headless“ exportiert.npm run trust fügt diese Root-CA in den Windows-Store CurrentUser\Root ein.
CurrentUser statt auf LocalMachine begrenzen wir den Vertrauensradius auf Ihr spezifisches Benutzerprofil und reduzieren so das systemweite Risiko.security.enterprise_roots.enabled), um den Windows-Vertrauensspeicher zu respektieren.npm run untrust bietet eine saubere Deinstallation.
Dieses Projekt ist ein praktisches Beispiel für Systemprogrammierung mit Node.js. Es geht über typische Webserver hinaus und interagiert auf niedrigerer Ebene mit dem Betriebssystem und dem Netzwerk-Stack.
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

Das standardmäßige http-Modul von Node.js kann die CONNECT-Methode (für HTTPS-Tunnel) und normalen HTTPS-Datenverkehr nicht einfach auf derselben Serverinstanz verarbeiten.
CONNECT-Anfrage. Er fungiert als simpler TCP-Pipe.netstat-Hack)Woher wissen wir, welche App Datenverkehr sendet? Die TCP-Pakete selbst haben kein „Prozess-ID“-Etikett.
netstat -ano auf, um herauszufinden, welche PID Port 54321 besitzt.Wir verwenden Node.js-Streams, um Daten effizient zu verarbeiten. Anstatt zu warten, bis die vollständige 10-MB-Antwort heruntergeladen ist, bevor wir sie anzeigen, „forken“ wir den Stream:
PassThrough-Streams und ermöglicht Echtzeit-Überwachung mit minimaler zusätzlicher Latenz.GNU GPL v3.0
FriendlyName („PacketPirateRoot“), sodass andere Benutzerzertifikate nie berührt werden.