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’sPATH
.
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