A pentester's browser that combines an intercepting proxy, system tool execution, and real-time traffic analysis — all controlled from a Chrome side panel extension.
To use GreyTab, you need to download the appropriate browser binaries and extract them to the project directory.
Extract the downloaded archive so that the ungoogled-chromium folder sits in the root of the project.
GreyTab includes an installer script for Linux systems that sets up an isolated Python environment and creates desktop shortcuts.
chmod +x install.sh
./install.shAfter running the installer, you can launch GreyTab from anywhere using the generated system command:
greytabAlternatively, you can launch it directly using the launcher script:
python3 launcher.pyChrome Extension (Side Panel) <-> FastAPI Backend <-> System Tools
^ ^
WebSocket mitmproxy (8080)
(real-time events) (HTTP/HTTPS intercept)
| Component | Description |
|---|---|
Launcher (launcher.py) |
Entry point — starts backend, proxy, and chromium |
API (core/api.py) |
FastAPI server with REST + WebSocket on port 8443 |
Proxy (core/proxy.py) |
mitmproxy addon for traffic interception |
Tool Runner (core/tools.py) |
Async subprocess manager for pentesting tools |
Logger (core/logger.py) |
SQLite database for traffic logs and findings |
Extension (extension/) |
Chrome Manifest V3 side panel |
- Intercepting Proxy — all browser traffic flows through mitmproxy, logged and analyzable
- WebSocket logging — every WS frame is captured into the session DB
- Match & Replace rules — regex rules applied inline by the proxy (request or response, header/body/url/method/status), with optional host filter
- Site map view — host → path tree built live from logged traffic
- History overlay — per-row highlight and comment, persisted in SQLite
- Auto Scanner — XSS, SQLi, path traversal, LFI, open redirect, SSTI, CMDi, CRLF, SSRF, CORS, and OAST; each family lives in its own module under
core/detectors/ - Scan from a captured request — right-click any History row, or hit the ⚡ icon, to run the scanner on that exact request without crawling
- Repeater — multi-tab raw HTTP editor with response render, line-diff between consecutive sends, and one-click "Explain"/"Explain Diff" via the AI hook
- Intruder — Sniper, Battering Ram, Pitchfork (zip), and Cluster Bomb (cartesian) attack modes; payload-file upload; grep-extract regex column that surfaces a captured value per row
- Race-condition tester — fire N parallel requests and inspect the timeline/status/length distribution
- Login macros — record a sequence of requests with regex/header extraction, replay before each scan, surface captured tokens
- Token watcher — auto-capture access tokens from
Set-Cookieor JSON response bodies and inject them as a header on subsequent requests - JWT inspector — JWTs in any logged request/response surface as a chip; one click decodes; backend endpoint can re-sign HS256 or strip to
alg=nonefor testing - GraphQL detection — requests are flagged in real time;
POST /api/graphql/introspectfetches the schema
- Tool Execution — run ffuf, sqlmap, xsser, nuclei, nikto, whatweb, etc. directly from the side panel
- Custom Tools — add your own commands through the Options tab; persisted in
data/custom_tools.json - Custom Scripts — drop
.py/.sh/.rb/.plintoscripts/ - Wordlist Management — place wordlists in
wordlists/; Intruder & ffuf pick them up
- Exports —
findings.html,findings.csv,findings.md, and full HAR 1.2 traffic dump - Session save/load —
.pbxproject files capture history, repeater tabs, intruder state, and scanner output
Configure under Settings → AI Agent. Supported providers: OpenAI, Anthropic, Google Gemini, Ollama, or any custom endpoint.
- Finding triage — verdict + confidence + follow-up tests for each scanner finding
- Explain request — plain-English summary of any captured exchange
- Suggest payloads — feeds tailored payloads straight into Intruder
- Explain diff — narrate the difference between two Repeater responses
Ctrl+R→ send selected History row to RepeaterCtrl+I→ send to IntruderCtrl+F→ focus History search (toggle "regex" for full regex matching)j/k→ move selection up/down in History
Built-in support for: ffuf, sqlmap, xsser, nuclei, nikto, whatweb, wfuzz, gobuster, httpx, curl
Any system command can be executed via the "Raw Command" mode.
GreyTab/
├── launcher.py # Main entry point
├── install.sh # Installation script
├── requirements.txt # Pinned Python deps
├── core/
│ ├── __init__.py # Single source of truth for __version__
│ ├── api.py # FastAPI backend
│ ├── config.py # Configuration
│ ├── logger.py # SQLite logger (http_log, ws_log, findings, etc.)
│ ├── proxy.py # mitmproxy addon (request/response/ws hooks)
│ ├── tools.py # Subprocess tool runner
│ ├── scanner.py # Scanner orchestration / crawler
│ ├── ai_agent.py # Multi-provider AI client
│ ├── extras.py # Rules, JWT, GraphQL, exports, macros
│ └── detectors/ # One module per vuln family (xss, sqli, ssrf…)
├── extension/
│ ├── manifest.json
│ ├── background.js # Service worker (WS client, API proxy)
│ ├── sidepanel.html # Panel UI
│ ├── sidepanel.css
│ └── js/ # core, history, repeater, tools, proxy, decoder…
├── tests/ # pytest smoke suite (run with `pytest`)
├── ungoogled-chromium-*/ # Portable chromium (download required)
├── profile/ # Chrome user profile
├── sessions/ # Audit session data
├── logs/ # SQLite database
├── data/ # User config, rules, macros, custom tools
├── scripts/ # Custom scripts
└── wordlists/ # Fuzzing wordlists
pip install -r requirements.txt pytest pytest-asyncio
pytestThe suite stands up the FastAPI app in-process (no real proxy thread, no real socket) and exercises the new endpoints — rules, JWT, macros, exports, sitemap, race tester, log metadata.
- Python 3.10+
- ungoogled-chromium (download via links above)
- System pentesting tools (ffuf, sqlmap, nuclei, etc.) installed and in PATH
GreyTab allows you to connect an external AI Agent to automatically analyze HTTP traffic, detect vulnerabilities, and suggest potential attack vectors.
- Open the GreyTab extension side panel in your browser.
- Navigate to the AutoScanner tab.
- Expand the AI Agent Integration section.
- Select your preferred AI provider (e.g., OpenAI, Anthropic, Custom Proxy).
- Enter your API Key and the exact Model ID you wish to use.
- (Optional) Customize the System Prompt to guide the AI's analysis behavior.
- Save the settings. The engine will now query the AI for complex vulnerability assessments during scans.
You can extend GreyTab by adding your own scripts or system tools to the runner.
Tools are managed by the core/tools.py runner. If you install a new system tool (e.g., a Go-based scanner) and want to integrate its output into the UI:
- Ensure the binary is in your system's
PATH. - Access the Options tab in the GreyTab side panel.
- Add your tool, define the target, and pass any necessary arguments (like
-uor-w). - The output will be intercepted and displayed in real-time in the browser.