shadowgate


Nameshadowgate JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummaryAdmin panel finder and directory brute-forcer (async HTTPX/Typer).
upload_time2025-10-23 20:20:51
maintainerNone
docs_urlNone
authorAli Moghimi
requires_python>=3.10
licenseMIT
keywords security pentest admin-finder recon httpx cli
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ShadowGate

[![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
[![Repo](https://img.shields.io/badge/github-alimghmi%2FShadowGate-lightgrey.svg)](https://github.com/alimghmi/ShadowGate)

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.

---

<!-- ## Badges & Demo

![demo placeholder](docs/demo.gif)

--- -->

## Installation

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

Or (future):

```bash
pip install shadowgate
```

Requirements: **Python 3.10+**

---

## Quickstart

Basic CLI syntax:

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

Example:

```bash
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:

```bash
# 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:

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

---

## Logging & Debugging

Control verbosity with `-v`:

```bash
# 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:

```bash
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](https://typer.tiangolo.com), [Rich](https://github.com/Textualize/rich)

---

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "shadowgate",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "security, pentest, admin-finder, recon, httpx, cli",
    "author": "Ali Moghimi",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/b1/5a/db1bf88f6b3ea30ffc071723bdfdc336d75b14de57b92463273422c24fa1/shadowgate-0.1.1.tar.gz",
    "platform": null,
    "description": "# ShadowGate\n\n[![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![Repo](https://img.shields.io/badge/github-alimghmi%2FShadowGate-lightgrey.svg)](https://github.com/alimghmi/ShadowGate)\n\nShadowGate is a fast, async-driven web reconnaissance and exposure scanner for detecting admin panels, login interfaces, and misconfigured endpoints across single or multiple targets \u2014 built for professional penetration testers and security researchers.\n\n> \u26a0\ufe0f **Authorized testing only.** You must have explicit permission to scan any target.\n\n---\n\n## Overview\n\nShadowGate combines concurrency, user-agent rotation, proxy routing, and response classification to efficiently identify potentially exposed web interfaces.  \nIt provides structured output (NDJSON/JSON/CSV) suitable for pipelines and automation.\n\nKey features:\n- Async scanning engine for high-speed probing.\n- Multiple routing modes: direct, proxy list, Tor.\n- Customizable wordlists, user-agents, and status-code filters.\n- Progress bar and interactive output using **Rich**.\n- Machine-readable formats: `ndjson`, `json`, `csv`.\n- Legal disclaimers and safety controls to discourage misuse.\n\n---\n\n<!-- ## Badges & Demo\n\n![demo placeholder](docs/demo.gif)\n\n--- -->\n\n## Installation\n\n```bash\ngit clone https://github.com/alimghmi/ShadowGate.git\ncd ShadowGate\npip install -e .\n```\n\nOr (future):\n\n```bash\npip install shadowgate\n```\n\nRequirements: **Python 3.10+**\n\n---\n\n## Quickstart\n\nBasic CLI syntax:\n\n```bash\npython -m shadowgate.cli [GLOBAL FLAGS] COMMAND [OPTIONS]\n```\n\nExample:\n\n```bash\npython -m shadowgate.cli scan -t https://example.com --assume-legal\n```\n\n### Global options\n\n- `-v`, `-vv` \u2014 Increase verbosity (info/debug).\n- `--quiet` \u2014 Suppress non-error logs.\n- `--version` \u2014 Show version and exit.\n\n---\n\n## Commands\n\n### `scan`\n\nProbe target(s) for exposed admin/login panels.\n\nExamples:\n\n```bash\n# Single target\nshadowgate scan -t example.com --assume-legal\n\n# Multiple targets\nshadowgate scan --targets targets.txt --assume-legal\n\n# Custom wordlist and user agents\nshadowgate scan -t example.com --wordlist common.txt --random-ua --assume-legal\n\n# Save results to file (JSON)\nshadowgate scan -t example.com --out json --output results.json --assume-legal\n\n# Route traffic via Tor\nshadowgate scan -t example.com --tor --assume-legal\n```\n\nOptions summary (high level):\n\n- `-t, --target` : Single URL or domain\n- `--targets` : File with one target per line\n- `--wordlist` : Override built-in wordlist\n- `--useragents` : Override built-in user-agents\n- `--proxies` / `--proxy` : File or inline proxy(s)\n- `--tor` : Route traffic via Tor\n- `--status-codes` : Acceptable response codes (e.g., `200,3xx,401-403`)\n- `--rps` : Requests per second (default: 10)\n- `--concurrency` : Number of in-flight requests\n- `--timeout` : Per-request timeout (seconds)\n- `--retries` : Retry attempts\n- `--follow-redirects` : Follow HTTP redirects\n- `--random-ua` : Rotate User-Agent headers\n- `--insecure` : Disable TLS verification (warning shown)\n- `--out` : Output format (`ndjson`, `json`, `csv`, `table`)\n- `--output` : Save results to file\n- `--assume-legal` : Confirm you have authorization\n\n---\n\n## Output formats\n\n- `ndjson` \u2014 Newline-delimited JSON (recommended for pipelines)\n- `json` \u2014 Pretty JSON\n- `csv` \u2014 Spreadsheet-compatible\n- `table` \u2014 Human-readable Rich table\n\nExample NDJSON line:\n\n```json\n{\"url\":\"https://example.com/admin/\",\"status\":200,\"ok\":true,\"error\":null,\"elapsed\":0.123}\n```\n\n---\n\n## Logging & Debugging\n\nControl verbosity with `-v`:\n\n```bash\n# Info-level logs\nshadowgate -v scan -t example.com --assume-legal\n\n# Debug with tracebacks\nshadowgate -vv scan -t example.com --assume-legal\n```\n\nLogs and progress/status output are written to STDERR; scan results are emitted to STDOUT (so they can be piped or saved).\n\n---\n\n## Architecture (brief)\n\n- `cli.py` \u2014 Typer-based CLI with Rich output and logging controls.\n- `engine.py` \u2014 Asynchronous scanning engine handling requests, rate-limiting, and result collection.\n- `utils.py` \u2014 Wordlists, user-agents, helper utilities.\n- `wordlists/` \u2014 Default wordlists and payloads.\n\nThe CLI isolates control-plane logs (stderr) from data-plane output (stdout), enabling safe automation and piping.\n\n---\n\n## Legal & Ethics\n\nShadowGate is intended **for authorized security testing and research only**. Unauthorized scanning may be illegal and unethical. Always obtain written permission before testing.\n\nUse the bundled legal command to show the short disclaimer:\n\n```bash\nshadowgate legal\n```\n\n---\n\n## Contributing\n\nContributions are welcome.\n\n1. Fork the repository\n2. Create a branch (`git checkout -b feature/your-feature`)\n3. Open a Pull Request\n\nPlease include tests and documentation for new features.\n\n---\n\n## License\n\nMIT License \u00a9 Ali Moghimi  \nSee `LICENSE` for details.\n\n---\n\n## Acknowledgements & References\n\n- Inspired by tools like `ffuf`, `dirsearch`, and `nmap`.\n- Built with: [Typer](https://typer.tiangolo.com), [Rich](https://github.com/Textualize/rich)\n\n---\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Admin panel finder and directory brute-forcer (async HTTPX/Typer).",
    "version": "0.1.1",
    "project_urls": {
        "Homepage": "https://github.com/yourusername/shadowgate",
        "Issues": "https://github.com/yourusername/shadowgate/issues",
        "Repository": "https://github.com/yourusername/shadowgate"
    },
    "split_keywords": [
        "security",
        " pentest",
        " admin-finder",
        " recon",
        " httpx",
        " cli"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "64b75b2706aa5823400d6167b0412c1a6edfbd3addd0a5a6d0799a794bcc135a",
                "md5": "8d43fceeb05557eae2ea559695800155",
                "sha256": "caa4cd2b173d7bde76aac192383f84b2ceb6bb6acb69181d577ea7f79a425bba"
            },
            "downloads": -1,
            "filename": "shadowgate-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8d43fceeb05557eae2ea559695800155",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 35673,
            "upload_time": "2025-10-23T20:20:50",
            "upload_time_iso_8601": "2025-10-23T20:20:50.288013Z",
            "url": "https://files.pythonhosted.org/packages/64/b7/5b2706aa5823400d6167b0412c1a6edfbd3addd0a5a6d0799a794bcc135a/shadowgate-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b15adb1bf88f6b3ea30ffc071723bdfdc336d75b14de57b92463273422c24fa1",
                "md5": "3ff13f5affd9da6a49293b6fb121215c",
                "sha256": "9f84ad8829de77fa992167164bfdb81620f3c54de755fd9388451634f24998f7"
            },
            "downloads": -1,
            "filename": "shadowgate-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "3ff13f5affd9da6a49293b6fb121215c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 40157,
            "upload_time": "2025-10-23T20:20:51",
            "upload_time_iso_8601": "2025-10-23T20:20:51.402446Z",
            "url": "https://files.pythonhosted.org/packages/b1/5a/db1bf88f6b3ea30ffc071723bdfdc336d75b14de57b92463273422c24fa1/shadowgate-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-23 20:20:51",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "yourusername",
    "github_project": "shadowgate",
    "github_not_found": true,
    "lcname": "shadowgate"
}
        
Elapsed time: 2.90952s