BLA
BLA는 오픈소스 Blue Defense MCP와 CLI로, 소프트웨어 자산을 자동 AI 리버스 엔지니어링으로부터 보호합니다
리버스 엔지니어링용 MITM 프록시, LLM 출력·다국어 코드생성·서명 추론·요청 재생·플러그인·데스크톱 GUI 제공
MITM proxy for reverse engineering — LLM-ready output, multi-language codegen, sign algorithm inference, request replay, plugin system, native desktop GUI (Wails + Svelte)
보안Go · SvelteGitHub @overkazaf온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
MITM proxy built for reverse engineering LLM-ready output · multi-language codegen · sign algorithm inference · native desktop GUI Existing tools (Burp Suite, mitmproxy, HTTP Toolkit) are built for web security testing — not for reverse engineering mobile apps. Cap fills the gap: [README 설치·사용 부분 발췌] Install Full build with GUI (Wails + Svelte)README 전문 보기 ↗
Existing tools (Burp Suite, mitmproxy, HTTP Toolkit) are built for web security testing — not for reverse engineering mobile apps. Cap fills the gap:
| Capability | Burp Suite | mitmproxy | HTTP Toolkit | cap |
|---|---|---|---|---|
| CLI-first automation | ✗ GUI only | ✓ mitmdump | ✗ GUI only | ✓ |
| Native desktop GUI | ✗ Java/Swing | △ mitmweb (basic) | ✓ Electron | ✓ Wails (native) |
| LLM/Agent-ready output | ✗ XML/HAR | △ HAR (verbose) | △ HAR | ✓ compact JSONL |
| Multi-language codegen | ✗ | △ curl + Python | ✗ | ✓ 5 languages |
| Sign param auto-detect | ✗ | ✗ | ✗ | ✓ |
| Sign algorithm inference | ✗ | ✗ | ✗ | ✓ MD5/SHA/HMAC |
| Static analysis mapping | ✗ | ✗ | ✗ | ✓ jadx → URL |
| One-cmd Android setup | ✗ | ✗ | △ app-based | ✓ ADB direct |
| Cert inject (Android 10+) | ✗ manual | ✗ manual | ✓ | ✓ mount --bind + Magisk |
| WebSocket capture | ✓ | ✓ | ✓ | ✓ |
| SSE stream capture | ✗ | △ | ✗ | ✓ |
| Request replay + diff | ✓ Repeater | ✗ | ✗ | ✓ |
| Embedded terminal | ✗ | ✗ | ✗ | ✓ multi-tab PTY |
| API auto-grouping | ✗ | ✗ | ✗ | ✓ host + path prefix |
| Flow comparison | ✗ | ✗ | ✗ | ✓ side-by-side diff |
| Sequence replay | ✗ | ✗ | ✗ | ✓ token propagation |
| Protobuf decode | ✗ addon | △ addon | ✗ | ✓ schema-less |
| Traffic dashboard | ✗ | ✗ | ✗ | ✓ P95/timeline/errors |
| HAR/Charles import | ✓ | ✓ | ✓ | ✓ |
| Plugin system | ✓ BApp | ✓ addon | ✗ | ✓ live editor |
| Single binary | ✗ JVM | ✗ Python | ✗ Electron | ✓ Go |
| Open source | ✗ ($449/yr) | ✓ | △ core only | ✓ MIT |
flowchart TB
subgraph Client["Client Layer"]
CLI["cap CLI<br/>(cobra)"]
GUI["cap GUI<br/>(Wails native)"]
TTY["Embedded Terminal<br/>(PTY)"]
end
subgraph Core["Core Engine"]
PROXY["MITM Proxy<br/>(goproxy)"]
STORE["Flow Store<br/>(SQLite WAL)"]
REPLAY["Request Replay<br/>+ Diff Engine"]
end
subgraph Analysis["Analysis Layer"]
SIGN["Sign Inference<br/>(MD5/SHA/HMAC)"]
CONTEXT["Source Mapper<br/>(jadx scanner)"]
DETECT["Param Detector<br/>(sign/ts/nonce)"]
end
subgraph Export["Export Layer"]
CODEGEN["Code Generator<br/>(curl/py/go/java/js)"]
AGENT["Agent Exporter<br/>(compact JSONL)"]
end
subgraph Capture["Capture Layer"]
WS["WebSocket<br/>Frame Parser"]
SSE["SSE Stream<br/>Parser"]
end
subgraph Device["Device Layer"]
ADB["Android ADB<br/>(proxy + cert)"]
end
CLI --> PROXY
GUI --> PROXY
GUI --> TTY
PROXY --> STORE
PROXY --> WS
PROXY --> SSE
WS --> STORE
SSE --> STORE
STORE --> CODEGEN
STORE --> AGENT
STORE --> SIGN
STORE --> REPLAY
CONTEXT --> STORE
DETECT --> STORE
ADB --> PROXY
style Client fill:#2d5aa0,color:#fff
style Core fill:#1a6b3c,color:#fff
style Analysis fill:#8b5e3c,color:#fff
style Export fill:#6b3a8a,color:#fff
style Capture fill:#8a3a3a,color:#fff
style Device fill:#3a6b8a,color:#fff
sequenceDiagram
participant Phone as Android Device
participant Proxy as cap Proxy
participant Store as SQLite
participant Detect as Param Detector
participant Sign as Sign Inference
participant Export as Exporter
Phone->>Proxy: HTTP/HTTPS request
Proxy->>Proxy: MITM intercept
Proxy->>Store: Save Flow
Proxy->>Phone: Forward to server
Phone-->>Proxy: Response
Proxy-->>Store: Update Flow (response)
Proxy-->>Phone: Forward response
Store->>Detect: Analyze params
Detect-->>Store: Tag sign_params
Store->>Sign: Analyze sign values
Sign-->>Store: Algorithm guess
Store->>Export: cap export
Export-->>Export: cURL / Python / JSONL
flowchart LR
types["types<br/>Flow, WSFrame, SSEEvent"]
store["store<br/>Store interface"]
sqlite["store/sqlite<br/>SQLite impl"]
proxy["proxy<br/>MITM core"]
android["android<br/>ADB setup"]
context["context<br/>jadx mapper"]
codegen["export/codegen<br/>5 languages"]
agent["export/agent<br/>JSONL"]
sign["sign<br/>inference"]
replay["replay<br/>replay + diff"]
capture["capture<br/>WS + SSE"]
cli["cli<br/>cobra commands"]
gui["gui<br/>Wails desktop"]
sqlite --> store --> types
proxy --> types
android -.-> proxy
context --> types
codegen --> types
agent --> types
sign --> types
replay --> types
capture --> types
cli --> proxy & sqlite & codegen & agent & android & context
gui --> proxy & sqlite & codegen & agent & android & sign & replay
style types fill:#e8b4b8
style cli fill:#b4cce8
style gui fill:#b4cce8
Three-strategy CA cert installation for modern Android:
cap export --flow f1 --lang curl # cURL command
cap export --flow f1 --lang python # requests library
cap export --flow f1 --lang go # net/http
cap export --flow f1 --lang java # OkHttp3
cap export --flow f1 --lang js # fetch API
{"ts":1696200000,"method":"POST","url":"https://api.com/login","req_headers":{"Content-Type":"application/json"},"req_body":{"user":"test","sign":"a3b2c1"},"status":200,"resp_body":{"token":"eyJ..."},"sign_params":["sign","ts"],"latency_ms":120}
Analyzes sign parameters across multiple requests to guess the algorithm:
# Scan jadx decompiled output
cap context import --jadx ./jadx-output/
# Captured flows now show source references:
# POST /api/v1/login → com/example/api/LoginApi.java:42 (method: login)
Scans for:
@POST, @GET, etc.)Request.Builder patternsNative Wails-based desktop app (Go + Svelte, single binary, no Electron):
Automatically groups captured flows by host and path prefix — see your target app's full API structure at a glance.
Select two flows and see a structured side-by-side diff: URL, headers, JSON body keys, latency percentage change.
Record a sequence of flows (login → fetch → submit), save it, replay with automatic token/cookie propagation between steps.
Schema-less protobuf decoder — automatically detects and decodes binary protobuf responses without needing a .proto file.
Aggregated statistics: requests by host/status/method, P95 latency, error rate, top slowest endpoints, per-minute timeline.
Import existing captures from HAR files or Charles proxy XML exports — zero migration friction.
Built-in plugin editor with 3 example plugins. Write JavaScript-style analysis scripts, test against captured flows, save and toggle on/off.
git clone https://github.com/overkazaf/cap.git
cd cap
go build -o cap ./cmd/cap
./cap --help
# Prerequisites
# - Go 1.21+
# - Node.js 18+
# - Xcode Command Line Tools (macOS): xcode-select --install
# 1. Clone
git clone https://github.com/overkazaf/cap.git
cd cap
# 2. Build frontend
cd frontend
npm install
npx vite build
cd ..
# 3. Copy frontend assets for embedding
cp -r frontend/dist cmd/cap/frontend/dist
# 4. Build Go binary with Wails (macOS)
CGO_LDFLAGS="-framework UniformTypeIdentifiers" \
go build -tags desktop,production -o cap ./cmd/cap
# 5. Run
./cap gui # Desktop GUI
./cap start # CLI proxy only
# Same steps but without the CGO_LDFLAGS framework flag:
go build -tags desktop,production -o cap ./cmd/cap
Requirements:
libgtk-3-dev libwebkit2gtk-4.0-dev (for Wails WebView)# 1. Start proxy (listens on all interfaces)
cap start -a 0.0.0.0:8080
# 2. Connect Android device
cap android connect
# 3. Use the phone — traffic flows through cap
# 4. View captured requests
cap flows
# 5. Export for analysis
cap export --flow f1 --lang all # code in 5 languages
cap export --format agent | llm chat # feed to your LLM
# 6. Or use the GUI
cap gui
internal/
├── types/ Flow, WSFrame, SSEEvent structs
├── proxy/ goproxy MITM, CA cert gen, header filter
├── store/sqlite/ SQLite with WAL, filtering, JSON codec
├── export/
│ ├── codegen/ Go templates → curl/python/go/java/js
│ └── agent/ Compact JSONL + sign param detection
├── android/ ADB device setup, 3-strategy cert install
├── context/ jadx scanner, Retrofit/OkHttp parser, URL matcher
├── sign/ Length analysis, pattern matching, brute-force verify
├── replay/ HTTP replay, request modification, response diff
├── capture/ WebSocket frame parser, SSE stream parser
├── compare/ Side-by-side flow comparison with structured diff
├── grouping/ API auto-grouping by host + path prefix
├── importer/ HAR and Charles proxy XML import
├── proto/ Schema-less protobuf wire format decoder
├── sequence/ Request sequence record/replay with variable propagation
├── stats/ Traffic statistics (P95, error rate, timeline)
├── plugin/ Plugin engine with save/load/toggle
├── wailsgui/ Wails backend bindings for all modules
├── cli/ Cobra commands: start/flows/export/android/gui
└── gui/ Legacy Fyne GUI (deprecated, use Wails)
frontend/ Svelte SPA (Capture, Flows, Terminal, Plugins, Settings)
MIT
Issues and PRs welcome. See CONTRIBUTING.md for guidelines.