
Passive recon & attack surface mapper — zero requests sent
██████╗ ███████╗███╗ ██╗███████╗ ██████╗ ██████╗ ██████╗ ███████╗
██╔══██╗██╔════╝████╗ ██║██╔════╝██╔════╝██╔═══██╗██╔══██╗██╔════╝
██████╔╝█████╗ ██╔██╗ ██║███████╗██║ ██║ ██║██████╔╝█████╗
██╔═══╝ ██╔══╝ ██║╚██╗██║╚════██║██║ ██║ ██║██╔═══╝ ██╔══╝
██║ ███████╗██║ ╚████║███████║╚██████╗╚██████╔╝██║ ███████╗
╚═╝ ╚══════╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝
Quick start · Hunt Mode · Workbench · Modes · Exports · vs Burp · Under the hood
PenScope is a Chrome extension. Install it, browse a site you have permission to test, and it silently maps the entire attack surface — every endpoint, every secret, every misconfigured header, every hidden parameter. When you give the word, it sends 36 different probe attacks using your real session cookies and reports back which ones hit.
Or you set scope, click Hunt, and PenScope does the whole thing autonomously while you do something else — drafting full HackerOne-format bounty reports for every Critical and High finding it lands. You wake up to a queue of submittable drafts.
It's the daily driver for bug bounty hunters who want to skip the "set up a proxy, click around in three windows, alt-tab to a payload list" routine and just look at a site. Or stop looking entirely and let the tool hunt for them.
Reads everything, sends nothing — until you tell it to. Set scope, hit Hunt, close the laptop. Wake up to drafted criticals.
Audit-driven refactor across 8 phases. Headline additions:
.env assignments, Vault s./b. prefixes — plus Spring Boot / Rails ActiveRecord / Django DEBUG / ASP.NET YSOD / Express / Apollo / MSSQL response-body detectors.alg, iss, sub, aud, exp, iat, role, scope...). Severity bumps when exp is in the future and the role is admin-shaped.Accessibility.getFullAXTree surfaces sensitive aria-labels (admin/sudo/delete/destroy buttons). Storage.getCookies exposes CHIPS partitioned cookies that chrome.cookies.getAll doesn't.<script type="application/json"> blocks (Next __NEXT_DATA__, Nuxt __NUXT__, Remix __remixContext, Apollo __APOLLO_STATE__) get parsed for endpoints + ID fields, not just regex-scanned.curl button, per-row unauth button (replays the request without cookies, shows side-by-side verdict). Route-table view that collapses /users/123, /users/124 into /users/{id} with counts. Auto-pivot rail for admin.*, api.*, internal.* subdomains.ffuf -w.window.__ps_ctx no longer leaks user's Authorization headers into page context after probe completes. Chain repro commands redact session cookies by default (Red mode has an opt-in toggle for live values). Probe IIFE snapshots fetch/JSON/Promise/atob/btoa/etc. at boot so analytics-instrumented pages can't intercept the probe by overriding globals. Local font vendoring — zero outbound requests on popup open."type":"module". src/ directory tree in place; STACK_ATTACK_PACKS extracted to src/probe/stack-packs.js. Remaining modules are stubs documenting the extraction path.Full per-phase breakdown in CHANGES.md. Migration notes in MIGRATION.md.
1. Download the latest release zip from the Releases page
2. Unzip it
3. Open chrome://extensions, enable Developer mode (top right)
4. Click "Load unpacked" and pick the unzipped folder
Pin the extension. Visit any site. Click the P icon. PenScope was already watching.
PenScope captures 60+ data fields per tab. Here's what that means in practice:
See the full attack surface. Every endpoint, including ones referenced in JavaScript but never actually called. API paths buried in source maps, GraphQL operations reconstructed from POST bodies, hidden admin routes inferred from framework introspection.
Find secrets nobody meant to ship. API keys hardcoded in .js bundles. JWTs in localStorage. AWS credentials in environment dumps. Internal IDs in response bodies. The kind of thing that lands in a P1 report.
Run 36 attack steps in your browser. Auth bypass, BAC, IDOR, CORS reflection, JWT alg=none, SSTI, XXE, CRLF injection, prototype pollution, parameter discovery, API version downgrade. Three aggression levels — careful, medium, full. Custom headers paste in. Stealth mode shuffles the request order so you don't trip a WAF.
Chain individual findings into actual exploits. A JWT in memory is a finding. The same JWT plus an API endpoint that accepts unsigned tokens plus the decoded role being admin is a chain — and PenScope shows you the chain at the top of the report, with confidence score, repro command, and next steps.
Edit and resend any request. Right-click style. Repeater opens in a new tab, full window. Change a parameter. Hit Send. See the response. Drop it into Diff to compare against the baseline.
Fuzz with insertion points. Mark §payload§ anywhere in a request, pick a payload set (40 XSS strings, 30 SQLi, 28 LFI, 18 SSTI, 22 SSRF, 24 command injection, IDs 1-100, auth bypass classics, common usernames), pick an attack mode (Sniper / Cluster bomb / Pitchfork / Battering ram), watch the live result table. Anomaly rows are flagged with a star.