Skip to main content

Automated reconnaissance tool for penetration testing

Project description

๐Ÿ›ก๏ธ ReconProbe

Automated reconnaissance tool for penetration testing

Python 3.10+ Tests Codecov License: MIT Version

ReconProbe is a comprehensive, modular reconnaissance framework that automates the full penetration testing recon workflow โ€” from subdomain enumeration and port scanning to vulnerability assessment, OSINT gathering, and professional reporting.


Features

๐Ÿ” Reconnaissance Pipeline (18 Phases)

Phase Module Description
1 Subdomain Enumeration Passive sources (crt.sh, CertSpotter, VirusTotal, SecurityTrails) + brute-force
2 Port Scanning Multi-threaded TCP, masscan integration, top-1000 ports, service version detection, OS fingerprinting
3 HTTP Probing Service discovery, tech fingerprinting (30+ technologies), status code analysis
4 Enrichment Shodan IP enrichment, NVD CVE lookup for detected technologies
5 Web Crawling BFS crawler with scope enforcement, depth limiting, interesting finding extraction
6 Directory Brute-Force Multi-threaded, smart 404 detection, custom extensions
7 Screenshots Playwright-based headless browser screenshots
8 Reporting JSON, Markdown, and interactive HTML dashboard with Chart.js
9 Vulnerability Scan CVE mapping (100+ CVEs, 15+ services) + default credential checking (30+ creds)
10 SSL/TLS Audit Certificate validation, protocol/cipher scanning, security headers, graded (A-F)
11 Subdomain Takeover DNS resolution + HTTP signature matching (40+ cloud providers)
12 WAF Detection Passive header/cookie fingerprinting + active malicious payload probing (15+ WAFs)
13 Exploit Suggestions 150+ exploit entries mapped to services, Searchsploit integration
14 Payload Generation Reverse shells: Python, Bash, PowerShell, Netcat, PHP, Perl, Ruby, MSFVenom
15 Loot Collection Credentials, API keys, tokens, hashes โ€” organized by target/severity
16 MSF Script Generation Auto-generate Metasploit resource (.rc) scripts from scan results
17 Advanced OSINT GitHub dorking, Google dorking, email harvesting, WHOIS, social footprinting, breach checks, tech stack OSINT
18 Reporting Automation CVSS v3.1 scoring, executive summaries, PDF reports, CSV/XLSX exports

โšก Key Capabilities

  • Batch mode โ€” Scan multiple targets concurrently from a file
  • Checkpoint/resume โ€” Interrupted scans pick up where they left off
  • Proxy/Tor support โ€” Route traffic through HTTP proxies or SOCKS5 (Tor)
  • Rate limiting โ€” Configurable delay or requests-per-second
  • REST API โ€” FastAPI-based server for remote scan submission and monitoring
  • Scheduled scanning โ€” YAML-configurable recurring scans
  • Webhook notifications โ€” Slack, Discord, and email alerts on scan completion
  • Docker support โ€” Multi-stage Docker image for easy deployment
  • CI/CD ready โ€” GitHub Actions workflow with lint, test, type-check, and Docker publish

Installation

Universal install (works on every OS)

pip install reconprobe

That's it โ€” works on Linux, macOS, and Windows with just Python 3.10+.

The core install is intentionally lightweight โ€” only pure-Python dependencies (httpx, rich, beautifulsoup4, dnspython, pyyaml). No Docker, no system packages, no browsers required.

Install with optional extras

ReconProbe uses optional dependency groups so you only install what you need:

# Install everything
pip install "reconprobe[full]"

# Or install individual feature groups:
pip install "reconprobe[screenshots]"   # Playwright browser screenshots
pip install "reconprobe[reporting]"    # PDF (fpdf2) + XLSX (openpyxl) exports
pip install "reconprobe[api]"          # FastAPI REST API server
pip install "reconprobe[webhooks]"     # Slack/Discord/Email notifications

If you try a feature without the dependency installed, ReconProbe shows a clear install hint:

$ reconprobe example.com --serve
Error: FastAPI + uvicorn are required for server mode.
  Install with: pip install reconprobe[api]

From source

git clone https://github.com/Yash-Patil-1/reconprobe.git
cd reconprobe
pip install -e "."         # Core only
# or
pip install -e ".[full]"   # Everything

Docker (optional)

If you prefer containerized deployment:

docker pull ghcr.io/yash-patil-1/reconprobe:latest
docker run --rm -v $(pwd)/reports:/reports ghcr.io/yash-patil-1/reconprobe:latest example.com -o /reports
docker run --rm -p 8000:8000 ghcr.io/yash-patil-1/reconprobe:latest --serve

Requirements

  • Python 3.10+ (all platforms)
  • Optional: playwright for screenshots (playwright install chromium)
  • Optional: fpdf2 for PDF reports
  • Optional: openpyxl for XLSX exports
  • Optional: masscan for high-speed port scanning (Linux only)

Quick Start

# Basic scan
reconprobe example.com

# Full assessment with all modules enabled
reconprobe example.com \
  --vuln-scan --ssl-audit --takeover --waf-detect \
  --exploit-suggest --payload-gen --loot --msf-gen \
  --osint --html --pdf --csv --xlsx --exec-summary \
  -o ./reports/example_com

# With crawling + directory brute-force
reconprobe example.com --crawl --crawl-depth 3 --dirbuster -o ./reports

# Multi-target batch scan
echo "example.com" > targets.txt
echo "example.org" >> targets.txt
reconprobe --targets-file targets.txt --max-concurrency 5 -o ./batch_reports

# REST API server
reconprobe --serve --port 8000

# Scheduled scanning
cat > schedule.yaml << 'EOF'
schedules:
  - name: "Daily scan"
    target: "example.com"
    interval_hours: 24
    flags:
      vuln_scan: true
      ssl_audit: true
      osint: true
    output_dir: "./reports/daily"
EOF
reconprobe --schedule schedule.yaml

CLI Reference

Basic Options

Flag Description
domain Target domain to scan
-p, --ports Ports to scan (80,443 or 1-1000)
-o, --output Output directory for reports
--no-brute-force Skip subdomain brute-force
--wordlist Custom subdomain wordlist
--list-ports Display common ports reference
-V, --version Show version

Scanning Performance

Flag Default Description
--masscan โ€” Use masscan for high-speed scanning
--masscan-rate 1000 Packets per second for masscan
--max-subdomain-workers 50 Threads for subdomain brute-force
--max-port-workers 100 Threads for port scanning
--port-timeout 2.0s Port scan timeout
--delay 0.0s Delay between requests
--rate-limit โ€” Max requests/second

Proxy & Anonymity

Flag Description
--proxy Proxy URL (http://..., socks5://...)
--tor Route through Tor (SOCKS5 localhost:9050)

Advanced Scanning

Flag Description
--version-detection Service version fingerprinting
--os-fingerprint OS detection via TTL/TCP window
--top-1000 Scan top 1000 TCP ports
--advanced-subdomains Zone transfer + permutations + recursive
--screenshots Browser screenshots (requires Playwright)
--crawl Web crawling
--dirbuster Directory brute-force

Vulnerability Assessment

Flag Description
--vuln-scan CVE mapping + default credential check
--no-credential-check Skip credential verification
--ssl-audit SSL/TLS deep audit
--ssl-ports Custom SSL ports (default: 443,8443,9443)
--takeover Subdomain takeover detection
--waf-detect WAF detection & fingerprinting

Exploitation

Flag Default Description
--exploit-suggest โ€” Exploit suggestion engine
--payload-gen โ€” Generate reverse shell payloads
--payload-type auto Payload type
--payload-encode โ€” Base64 encode payloads
--loot โ€” Collect loot from scan results
--msf-gen โ€” Generate MSF resource scripts
--lhost 127.0.0.1 Local host for payloads
--lport 4444 Local port for payloads

OSINT

Flag Description
--osint Enable all OSINT modules
--github-token GitHub PAT for authenticated searches
--no-github-dork Skip GitHub dorking
--no-google-dorks Skip Google dorking
--no-email-harvest Skip email harvesting
--no-whois Skip WHOIS lookup
--no-social Skip social footprinting
--no-breach-check Skip breach database checks
--no-tech-osint Skip tech stack OSINT

Reporting

Flag Description
--html Interactive HTML dashboard (Chart.js)
--pdf Professional PDF report (requires fpdf2)
--csv CSV findings export
--xlsx XLSX workbook export (requires openpyxl)
--exec-summary Executive summary text file

Automation

Flag Description
--serve Start REST API server
--host API server bind address
--port API server port
--schedule YAML schedule file for recurring scans
--schedule-once Run due scans once and exit
--webhook-slack Slack webhook URL
--webhook-discord Discord webhook URL
--webhook-email SMTP connection string

REST API

When started with --serve, ReconProbe exposes a FastAPI-based REST API.

reconprobe --serve --host 0.0.0.0 --port 8000

Endpoints

Method Path Description
GET /health Health check with version, uptime, active jobs
POST /scan Submit a new scan job
GET /scan/{job_id} Get scan job status
GET /scan/{job_id}/result Get scan job results
GET /scan/{job_id}/cancel Cancel a pending job
GET /jobs List recent scan jobs (max 50)

Example

# Submit a scan
curl -X POST http://localhost:8000/scan \
  -H "Content-Type: application/json" \
  -d '{"domain": "example.com", "flags": {"vuln_scan": true, "osint": true}}'

# Check status
curl http://localhost:8000/scan/{job_id}

# Get results
curl http://localhost:8000/scan/{job_id}/result

Scheduled Scanning

Define recurring scans in a YAML file:

schedules:
  - name: "Nightly full scan"
    target: "example.com"
    interval_hours: 24
    flags:
      vuln_scan: true
      ssl_audit: true
      takeover: true
      waf_detect: true
      osint: true
      pdf: true
      csv: true
    output_dir: "./reports/example_com"

  - name: "Weekly OSINT"
    target: "example.org"
    interval_hours: 168
    flags:
      osint: true
      no_http_probe: true
      no_brute_force: true
    output_dir: "./reports/example_org"

Run the scheduler:

reconprobe --schedule scan_schedule.yaml

Outputs

ReconProbe generates structured reports in multiple formats:

  • JSON โ€” Complete machine-readable scan data
  • Markdown โ€” Human-readable formatted report
  • HTML โ€” Interactive dashboard with Chart.js visualizations (6 chart types, collapsible sections, dark theme)
  • PDF โ€” Professional security assessment report
  • CSV โ€” Flat findings export for spreadsheet analysis
  • XLSX โ€” Multi-sheet workbook with styled headers and severity coloring
  • Executive Summary โ€” Condensed risk assessment with prioritized recommendations
  • MSF Resource Script โ€” Ready-to-run Metasploit .rc script

Environment Variables

Variable Description
SHODAN_API_KEY Shodan API key for IP enrichment
NVD_API_KEY NVD API key (higher rate limits)
VT_API_KEY VirusTotal API key
ST_API_KEY SecurityTrails API key
GITHUB_TOKEN GitHub personal access token

Project Structure

reconprobe/
โ”œโ”€โ”€ reconprobe/
โ”‚   โ”œโ”€โ”€ __init__.py         # Package metadata, version
โ”‚   โ”œโ”€โ”€ __main__.py         # python -m reconprobe entry point
โ”‚   โ”œโ”€โ”€ cli.py              # CLI argument parser & main()
โ”‚   โ”œโ”€โ”€ runner.py           # 18-phase scan orchestrator
โ”‚   โ”œโ”€โ”€ subdomain.py        # Subdomain enumeration
โ”‚   โ”œโ”€โ”€ scanner.py          # Port scanning
โ”‚   โ”œโ”€โ”€ http_probe.py       # HTTP probing & fingerprinting
โ”‚   โ”œโ”€โ”€ enrichment.py       # Shodan + NVD enrichment
โ”‚   โ”œโ”€โ”€ screenshot.py       # Playwright screenshots
โ”‚   โ”œโ”€โ”€ crawler.py          # Web crawling
โ”‚   โ”œโ”€โ”€ dirbuster.py        # Directory brute-force
โ”‚   โ”œโ”€โ”€ vuln_scan.py        # CVE mapping + default creds
โ”‚   โ”œโ”€โ”€ ssl_audit.py        # SSL/TLS deep audit
โ”‚   โ”œโ”€โ”€ takeover.py         # Subdomain takeover detection
โ”‚   โ”œโ”€โ”€ waf_detect.py       # WAF detection & fingerprinting
โ”‚   โ”œโ”€โ”€ exploit_suggest.py  # Exploit suggestion engine
โ”‚   โ”œโ”€โ”€ payload_gen.py      # Payload generation
โ”‚   โ”œโ”€โ”€ loot.py             # Loot collection
โ”‚   โ”œโ”€โ”€ msf_gen.py          # MSF resource script generator
โ”‚   โ”œโ”€โ”€ osint.py            # Advanced OSINT
โ”‚   โ”œโ”€โ”€ reporting.py        # Reporting automation (CVSS, PDF, CSV, XLSX)
โ”‚   โ”œโ”€โ”€ reporter.py         # JSON + Markdown report builder
โ”‚   โ”œโ”€โ”€ html_reporter.py    # Interactive HTML dashboard
โ”‚   โ”œโ”€โ”€ webhook.py          # Slack/Discord/Email notifications
โ”‚   โ”œโ”€โ”€ scheduler.py        # YAML-based scheduled scanning
โ”‚   โ”œโ”€โ”€ api.py              # FastAPI REST API
โ”‚   โ”œโ”€โ”€ batch.py            # Multi-target batch scanning
โ”‚   โ”œโ”€โ”€ checkpoint.py       # Scan checkpoint/resume
โ”‚   โ””โ”€โ”€ utils.py            # DNS, validation, common ports
โ”œโ”€โ”€ tests/                  # Comprehensive test suite (469+ tests)
โ”œโ”€โ”€ wordlists/
โ”‚   โ”œโ”€โ”€ subdomains.txt      # Subdomain brute-force wordlist
โ”‚   โ””โ”€โ”€ paths.txt           # Path discovery wordlist
โ”œโ”€โ”€ Dockerfile              # Multi-stage Docker build
โ”œโ”€โ”€ pyproject.toml          # Project configuration
โ”œโ”€โ”€ MANIFEST.in             # Packaging manifest
โ”œโ”€โ”€ setup.py                # PyPI setup script
โ”œโ”€โ”€ Makefile                # Build/test/clean targets
โ”œโ”€โ”€ CHANGELOG.md            # Release history
โ”œโ”€โ”€ LICENSE                 # MIT License
โ””โ”€โ”€ README.md               # This file

License

This project is licensed under the MIT License โ€” see the LICENSE file for details.


Author

Yash Patil โ€” Cybersecurity Analyst | Penetration Tester

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

reconprobe-0.8.0.tar.gz (191.5 kB view details)

Uploaded Source

Built Distribution

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

reconprobe-0.8.0-py3-none-any.whl (161.7 kB view details)

Uploaded Python 3

File details

Details for the file reconprobe-0.8.0.tar.gz.

File metadata

  • Download URL: reconprobe-0.8.0.tar.gz
  • Upload date:
  • Size: 191.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for reconprobe-0.8.0.tar.gz
Algorithm Hash digest
SHA256 1520e43826a29bbb223fb6014d89c58dc3a1cd0c34d9448b7103835ca1f5b8e9
MD5 fe32cb9b69fd59ae489b470e24fbd201
BLAKE2b-256 aed6b443e4e13a5e74aac3f5ed3b479894f002db581d9c01ec626ac1536ef962

See more details on using hashes here.

File details

Details for the file reconprobe-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: reconprobe-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 161.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for reconprobe-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d002e688b32de9c9f3ccb494b8933cfc7578901ebeb415171a50860fb8601192
MD5 3b7db81749d22594ac428add8f6a03c4
BLAKE2b-256 c584739e71b80f8fe6b497a8e66fbe4f61c16b1dfbb8362bafadd9d5cb545188

See more details on using hashes here.

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