Pentest Toolkit orchestrates leading open-source scanning utilities to automate reconnaissance and vulnerability discovery.
- ✔️ Unified CLI for Subfinder, Httpx, Nuclei, Nmap, TestSSL and more
- ✔️ JSON, HTML and PDF reporting
- ✔️ Extensible plugin system for custom tools and notifiers
- ✔️ Slack, Teams and Discord alerts
- ✔️ Docker container and AWS Lambda compatible
- ✔️ Distributed mode for horizontal scaling
pip install pentest-toolkitgit clone https://github.com/psychevus/pentest-toolkit.git
cd pentest-toolkit
pip install -r requirements.txt -r requirements-dev.txtdocker run --rm psychevus/pentest-toolkit --helpDeploy lambda_function.py with the PentestToolkitLambda IAM role and at least 2 minute timeout.
python main.py --target example.com --tools subfinder,httpxGenerated reports appear under output/ in JSON and optional HTML/PDF formats.
| Flag | Description |
|---|---|
--target |
Target domain or IP |
--tools |
Comma separated list of modules |
--report |
html, pdf, markdown or summary |
--auto-install |
Attempt to install missing tools |
--notify |
Send findings via Slack, Teams or Discord |
--pipeline |
Feed one tool's output into the next |
--distributed |
Offload work to remote runners |
--ws-port |
WebSocket port for live results |
subfinder --> httpx --> nuclei --> nmap --> testssl.sh
The toolkit loads each module dynamically and passes results through the pipeline above.
Place Python modules inside plugins/ or set PENTEST_TOOLKIT_PLUGIN_DIR to load external plugins. Each plugin subclasses Module or Notifier to register automatically.
[
{"type": "subdomain", "host": "api.example.com", "ip": "1.2.3.4"},
{"type": "httpx", "url": "https://api.example.com", "status": 200}
]HTML and PDF reports contain the same data in a user friendly format. See the output/ directory for examples.
Use --notify slack or --notify teams to push findings. Payloads contain the JSON above and links to reports.
docker run --rm -e PENTEST_TOOLKIT_PLUGIN_DIR=/plugins psychevus/pentest-toolkit target.comUpload the repo with lambda_function.py as the entrypoint. Grant the function network permissions and set the timeout high enough for scanning.
- Install deps with
pip install -r requirements.txt -r requirements-dev.txt - Run
ruff check .andpytest -q - Open a pull request explaining your changes
This project is licensed under the MIT license.
Maintained by psychevus. Consider sponsoring development if you find it useful.
