A small, non-exploitative vulnerability scanner I put together written in Python.
Performs TCP connect port scanning, banner grabbing, basic HTTP checks, and TLS certificate expiry checks.
- TCP connect port scanning (pure Python socket)
- Banner grabbing
- Basic HTTP checks (Server header, directory indexing detection)
- TLS certificate retrieval and expiry check
- Concurrent scanning with threads
- JSON output for easy analysis
- Python 3.8+
pip install -r requirements.txt(onlyrequestsrequired)
git clone https://github.com/<you>/simple-vuln-scanner.git
cd simple-vuln-scanner
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtSingle host:
python3 vuln_scanner.py --target example.com --ports 22,80,443 --output results.jsonCIDR range:
python3 vuln_scanner.py -t 192.168.1.0/28 -p 22-1024 -o small_range.jsonHelp:
python3 vuln_scanner.py -h- Is the TCP port open
- Banner text returned by the service (may contain version info)
- For HTTP: status code, headers, and if the root appears to be a directory listing
- For HTTPS: certificate expiry and issuer/subject details
- Simple banner heuristics from signatures.json
- Currently uses connect-scans; adding SYN scans would require raw sockets / elevated privileges or integrating nmap.
- No active vulnerability exploitation (by design). You can add safe lookups to NVD or public vulnerability feeds for non-actionable reporting (be careful about giving exploit details).
- Add a nicer HTML dashboard (GitHub Pages) to present results visually.
- Add adaptor for masscan/nmap if allowed in your environment (note: system packages required).
- Add logging, CSV export, scheduled scanning (cron), or integration with a small SIEM/dash.