A cross-platform Python orchestrator to automate installation and execution of ProjectDiscovery reconnaissance tools:
- Bootstraps Go (if missing) on Linux or Windows
- Installs Subfinder, HTTPX, URLFinder, Nuclei + Nuclei-Templates
- Runs a unified pipeline:
- Passive subdomain discovery (Subfinder)
- HTTP service probing (HTTPX)
- URL extraction (URLFinder)
- Vulnerability scanning (Nuclei)
- Outputs simple, newline-separated text files per domain under output/<domain>/
- Zero capital: No external dependencies beyond Python 3.6+, curl/choco, and internet access.
- Cross-platform: Automatic Go install for Linux (tarball) and Windows (Chocolatey).
- One-stop recon: From subdomains to vulnerabilities with a single command.
- Easy parsing: All outputs in plain .txt for rapid grepping or chaining into other tools.
- Python 3.6+ (python3 --version)
- Linux: curl, sudo
- Windows: Chocolatey
- Git (optional, for cloning)
Linux
# Clone the repo
git clone https://github.com/SnB0y/PD.git
cd PD
# Make the script executable
chmod +x PD.py
Windows
Download PD.py
Install Go (if missing) and all ProjectDiscovery tools + Nuclei templates:
python3 PD.py --install-tools
This will:
- Check for go version.
- Install Go via curl/tarball (Linux) or Chocolatey (Windows).
- go install Subfinder, HTTPX, URLFinder, Nuclei.
- Fetch the latest Nuclei-Templates (nuclei -update-templates).
- Inject your Go workspace’s bin/ into the script’s PATH.
python3 PD.py --domain example.com
Create domains.txt (one domain per line), then:
python3 PD.py --domains domains.txt
After enumeration, you’ll find:
output/
└── example.com/
├── subfinder.txt # Discovered subdomains
├── httpx.txt # Hosts with HTTP/S services
├── urlfinder.txt # Extracted URLs
└── nuclei.txt # Vulnerabilities found by Nuclei
- Nuclei filters: add -severity, -tags, or custom templates.
- Concurrency: tweak -c flags for HTTPX, Nuclei, etc.
- Integrations: pipe outputs into your CI/CD, dashboards, or notification bots.
- Re-enable: bring back Katana or Naabu stages by uncommenting or re-adding their blocks.
This project is licensed under the MIT License. See LICENSE for details.
- Fork it!
- Create your feature branch: git checkout -b feature/awesome
- Commit your changes: git commit -m "Add awesome feature"
- Push to your branch: git push origin feature/awesome
- Open a Pull Request.
- ProjectDiscovery for the tools & templates
- The open-source community for ongoing security research inspiration