Skip to main content

Admin panel finder and directory brute-forcer (async HTTPX/Typer).

Project description

ShadowGate

Python License: MIT Repo

ShadowGate is a fast, async-driven web reconnaissance and exposure scanner for detecting admin panels, login interfaces, and misconfigured endpoints across single or multiple targets — built for professional penetration testers and security researchers.

⚠️ Authorized testing only. You must have explicit permission to scan any target.


Overview

ShadowGate combines concurrency, user-agent rotation, proxy routing, and response classification to efficiently identify potentially exposed web interfaces.
It provides structured output (NDJSON/JSON/CSV) suitable for pipelines and automation.

Key features:

  • Async scanning engine for high-speed probing.
  • Multiple routing modes: direct, proxy list, Tor.
  • Customizable wordlists, user-agents, and status-code filters.
  • Progress bar and interactive output using Rich.
  • Machine-readable formats: ndjson, json, csv.
  • Legal disclaimers and safety controls to discourage misuse.

Installation

git clone https://github.com/alimghmi/ShadowGate.git
cd ShadowGate
pip install -e .

Or (future):

pip install shadowgate

Requirements: Python 3.10+


Quickstart

Basic CLI syntax:

python -m shadowgate.cli [GLOBAL FLAGS] COMMAND [OPTIONS]

Example:

python -m shadowgate.cli scan -t https://example.com --assume-legal

Global options

  • -v, -vv — Increase verbosity (info/debug).
  • --quiet — Suppress non-error logs.
  • --version — Show version and exit.

Commands

scan

Probe target(s) for exposed admin/login panels.

Examples:

# Single target
shadowgate scan -t example.com --assume-legal

# Multiple targets
shadowgate scan --targets targets.txt --assume-legal

# Custom wordlist and user agents
shadowgate scan -t example.com --wordlist common.txt --random-ua --assume-legal

# Save results to file (JSON)
shadowgate scan -t example.com --out json --output results.json --assume-legal

# Route traffic via Tor
shadowgate scan -t example.com --tor --assume-legal

Options summary (high level):

  • -t, --target : Single URL or domain
  • --targets : File with one target per line
  • --wordlist : Override built-in wordlist
  • --useragents : Override built-in user-agents
  • --proxies / --proxy : File or inline proxy(s)
  • --tor : Route traffic via Tor
  • --status-codes : Acceptable response codes (e.g., 200,3xx,401-403)
  • --rps : Requests per second (default: 10)
  • --concurrency : Number of in-flight requests
  • --timeout : Per-request timeout (seconds)
  • --retries : Retry attempts
  • --follow-redirects : Follow HTTP redirects
  • --random-ua : Rotate User-Agent headers
  • --insecure : Disable TLS verification (warning shown)
  • --out : Output format (ndjson, json, csv, table)
  • --output : Save results to file
  • --assume-legal : Confirm you have authorization

Output formats

  • ndjson — Newline-delimited JSON (recommended for pipelines)
  • json — Pretty JSON
  • csv — Spreadsheet-compatible
  • table — Human-readable Rich table

Example NDJSON line:

{"url":"https://example.com/admin/","status":200,"ok":true,"error":null,"elapsed":0.123}

Logging & Debugging

Control verbosity with -v:

# Info-level logs
shadowgate -v scan -t example.com --assume-legal

# Debug with tracebacks
shadowgate -vv scan -t example.com --assume-legal

Logs and progress/status output are written to STDERR; scan results are emitted to STDOUT (so they can be piped or saved).


Architecture (brief)

  • cli.py — Typer-based CLI with Rich output and logging controls.
  • engine.py — Asynchronous scanning engine handling requests, rate-limiting, and result collection.
  • utils.py — Wordlists, user-agents, helper utilities.
  • wordlists/ — Default wordlists and payloads.

The CLI isolates control-plane logs (stderr) from data-plane output (stdout), enabling safe automation and piping.


Legal & Ethics

ShadowGate is intended for authorized security testing and research only. Unauthorized scanning may be illegal and unethical. Always obtain written permission before testing.

Use the bundled legal command to show the short disclaimer:

shadowgate legal

Contributing

Contributions are welcome.

  1. Fork the repository
  2. Create a branch (git checkout -b feature/your-feature)
  3. Open a Pull Request

Please include tests and documentation for new features.


License

MIT License © Ali Moghimi
See LICENSE for details.


Acknowledgements & References

  • Inspired by tools like ffuf, dirsearch, and nmap.
  • Built with: Typer, Rich

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shadowgate-0.1.0.tar.gz (39.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shadowgate-0.1.0-py3-none-any.whl (35.6 kB view details)

Uploaded Python 3

File details

Details for the file shadowgate-0.1.0.tar.gz.

File metadata

  • Download URL: shadowgate-0.1.0.tar.gz
  • Upload date:
  • Size: 39.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shadowgate-0.1.0.tar.gz
Algorithm Hash digest
SHA256 66cbc3971b2f2483cd6c113e10d26a4692695331bafb8c09d4045369a8e00ba2
MD5 e9c15b325a467bf4fa1d6c9135e639d5
BLAKE2b-256 f35c2f2b6730f310a4c24c8d4b0609d76b3fc8ca4c53aca274cbc5a0435a7d68

See more details on using hashes here.

Provenance

The following attestation bundles were made for shadowgate-0.1.0.tar.gz:

Publisher: release.yaml on alimghmi/ShadowGate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shadowgate-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: shadowgate-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 35.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shadowgate-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9d09f1f4ed8ca4491047535fee0873ffd1701286adda4468072770715aa29da8
MD5 687e7da7a7e745bf54765434116e5a36
BLAKE2b-256 a27da69b462d872accec4a8516a55c455128cc26b2629beb6aa2ddb180714fd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for shadowgate-0.1.0-py3-none-any.whl:

Publisher: release.yaml on alimghmi/ShadowGate

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page