#!/usr/bin/env bash # ───────────────────────────────────────────────────────────── # run.sh - One-command capture for Claude Code / Antigravity # # Usage: # ./run.sh # Start both mitmproxy + tshark # ./run.sh mitm # mitmproxy only (HTTP layer) # ./run.sh tls # tshark only (TLS layer) # ./run.sh tls en0 # tshark on specific interface # ───────────────────────────────────────────────────────────── set -euo pipefail cd "$(dirname "$0")" MODE="${1:-both}" IFACE="${2:-en0}" # Check dependencies check_dep() { if ! command -v "$1" &>/dev/null; then echo "ERROR: $1 not found. Install with: $2" exit 1 fi } mkdir -p ./captures case "$MODE" in mitm|mitmproxy) check_dep mitmproxy "brew install mitmproxy" echo "" echo "Starting mitmproxy on :8080" echo "" echo "To capture Claude Code traffic:" echo " HTTPS_PROXY=http://127.0.0.1:8080 claude login" echo " HTTPS_PROXY=http://127.0.0.1:8080 claude 'hello'" echo "" echo "To capture VS Code / Antigravity traffic:" echo " HTTPS_PROXY=http://127.0.0.1:8080 code ." echo "" mitmdump -s capture_traffic.py \ --set stream_large_bodies=10m \ --set console_eventlog_verbosity=warn \ -p 8080 ;; tls|tshark) check_dep tshark "brew install wireshark" echo "Starting TLS capture (requires sudo)..." sudo bash ./capture_tls.sh "$IFACE" 120 ;; both) check_dep mitmproxy "brew install mitmproxy" check_dep tshark "brew install wireshark" echo "" echo "═══════════════════════════════════════════════" echo " MiniGravity Traffic Capture" echo "═══════════════════════════════════════════════" echo "" echo " Starting two capture layers:" echo " 1. mitmproxy (:8080) → HTTP headers/body" echo " 2. tshark → TLS fingerprints" echo "" echo " Step 1: In another terminal, run:" echo " HTTPS_PROXY=http://127.0.0.1:8080 claude login" echo "" echo " Step 2: After login, run:" echo " HTTPS_PROXY=http://127.0.0.1:8080 claude 'hello'" echo "" echo " Step 3: Press Ctrl+C here when done" echo "═══════════════════════════════════════════════" echo "" # Start tshark in background (needs sudo) echo "[*] Starting tshark (may ask for sudo password)..." sudo bash ./capture_tls.sh "$IFACE" 300 & TSHARK_PID=$! sleep 2 # Start mitmproxy in foreground echo "[*] Starting mitmproxy..." mitmdump -s capture_traffic.py \ --set stream_large_bodies=10m \ --set console_eventlog_verbosity=warn \ -p 8080 # Cleanup tshark on exit sudo kill "$TSHARK_PID" 2>/dev/null || true wait "$TSHARK_PID" 2>/dev/null || true ;; *) echo "Usage: $0 [mitm|tls|both] [interface]" exit 1 ;; esac