A fast, multi-threaded port scanner with vulnerability hints — wrapped in a sleek Graphite Mist GUI.
Scan thousands of ports in seconds · Grab service banners · Get instant security hints · Export results to CSV
| Feature | Description |
|---|---|
| 🔍 DNS Resolution | Resolve any domain to its IP before scanning |
| ⚡ Multi-Threaded Scanning | Up to 1000 concurrent threads for blazing-fast scans |
| 🏷️ Banner Grabbing | Identifies running services with HTTP-aware probing |
| 🛡️ Vulnerability Hints | Instant security recommendations per open port |
| 📊 Live Progress | Real-time progress bar and scrolling log output |
| 📁 CSV Export | One-click export of all scan results |
| 🎨 Graphite Mist Theme | Dark, hacker-aesthetic GUI built with Tkinter |
# Clone the repository
git clone https://github.com/your-username/Port-Vulnerability-Checker.git
cd Port-Vulnerability-Checker
# Launch the scanner
python main.pyNote: No external dependencies required — runs on Python's standard library only.
- Enter a domain (e.g.
example.com) and click Resolve Domain - Configure scan options — port range, thread count, timeout
- Click ▶ Start Scan and watch results stream in live
- Review results — open ports, service hints, and banners in the table
- Click ⬇ Export CSV to save your findings
The codebase follows a clean modular architecture with separation of concerns:
Port-Vulnerability-Checker/
│
├── main.py # Entry point
│
└── port_vuln/ # Core package
├── __init__.py # Package metadata
├── config.py # Constants, colours, defaults
├── network.py # DNS resolution, TCP probing, banners
├── vuln_hints.py # Security hint engine
├── scanner.py # Multi-threaded scan engine
│
└── gui/ # GUI sub-package
├── __init__.py
├── styles.py # Graphite Mist ttk theme
├── controls.py # Input panel widget
├── results.py # Results table + log widget
└── app.py # Main window orchestrator
┌─────────────────────────────────────────────────────┐
│ main.py │
│ (entry point) │
└──────────────────────┬──────────────────────────────┘
│
┌────────▼────────┐
│ gui/app.py │ ◄── Orchestrator
│ (App class) │
└──┬──────────┬───┘
│ │
┌────────────▼──┐ ┌────▼───────────┐
│ gui/controls │ │ gui/results │
│ (user input) │ │ (table + log) │
└───────────────┘ └────────────────┘
│
┌────────▼────────┐
│ scanner.py │ ◄── Thread pool engine
└──┬──────────┬───┘
│ │
┌────────▼───┐ ┌────▼──────────┐
│ network.py │ │ vuln_hints.py │
│ (sockets) │ │ (security) │
└────────────┘ └───────────────┘
│
┌──────▼──────┐
│ config.py │ ◄── Shared constants
└─────────────┘
All defaults live in port_vuln/config.py:
| Constant | Default | Description |
|---|---|---|
DEFAULT_TIMEOUT |
1.0s |
Socket connection timeout |
MAX_THREAD_CAP |
1000 |
Maximum concurrent threads |
QUEUE_POLL_MS |
120ms |
GUI queue polling interval |
The scanner provides instant security hints for common services:
| Port | Service | Hint |
|---|---|---|
| 21 | FTP | Check for anonymous login |
| 22 | SSH | Use key-based authentication |
| 23 | Telnet | Replace with SSH |
| 80 / 8080 | HTTP | Prefer HTTPS |
| 443 | HTTPS | Check TLS configuration |
Banner analysis also detects Apache and nginx with tailored recommendations.
💡 The hint engine in
vuln_hints.pyis designed to be easily extensible — add your own rules or plug in a CVE database.
Contributions are welcome! The modular architecture makes it easy to:
- Add new vulnerability rules → edit
vuln_hints.py - Support new protocols → extend
network.py - Customize the theme → tweak
gui/styles.pyandconfig.py - Add new UI panels → create a widget in
gui/and wire it ingui/app.py