Created by: Amin Damon
PortaGo is a high-performance, concurrent TCP/UDP port scanner written in Go. It features a beautiful interactive CLI, intelligent banner grabbing, OS fingerprinting, risk classification, and multi-format export β all designed for professional security auditing and network analysis.
- π Concurrency: High-performance worker pool β scan 65 535 ports in seconds.
- π TCP + UDP: Choose TCP-only, UDP-only, or simultaneous dual-protocol scanning.
- π Retry logic: Configurable per-port retry to reduce false negatives on flaky networks.
- β‘ Context-aware: Ctrl+C gracefully stops the scan and outputs partial results.
- π Banner Grabbing: Reads raw service banners plus HTTP HEAD fallback for web servers.
- π·οΈ Service Detection: Identifies 30+ well-known services from port number and banner content.
- π₯οΈ OS Fingerprinting: Heuristic OS guessing based on the combination of open ports (Windows, Linux, macOS, Network gear, Printers).
β οΈ Risk Classification: Every open port is automatically ratedHIGH,MEDIUM, orLOWrisk with a color-coded summary table.- π DNS Resolution: Automatically resolves hostnames to IP addresses before scanning.
- π Rich Terminal Table: Color-coded results with service name, latency, risk badge, and truncated banner.
- π JSON Export: Structured, pretty-printed JSON report including metadata, OS guess, and risk summary.
- π CSV Export: Flat CSV for direct import into Excel, Splunk, or other tools.
- πΎ Full Scan Report: Optionally save a complete JSON report alongside any primary output format.
- π₯οΈ Interactive CLI: Guided menus powered by
surveyβ zero flags required. - π Live Progress Bar: Real-time progress with ETA and elapsed time.
- π Verbose Mode: Toggle display of closed ports for full-visibility auditing.
- π¨ ANSI Colors: Risk badges, banners, and summaries beautifully colorized in terminal.
- Go 1.21 or higher
git clone https://github.com/aminDamon/PortaGo.git
cd PortaGo
go build -o portago .go get github.com/AlecAivazis/survey/v2
go get github.com/schollz/progressbar/v3Run the binary to launch the fully interactive configuration wizard:
./portago- Target β Enter an IP address or hostname (e.g.
192.168.1.1orexample.com). - Scan Profile β Choose from:
Fast (1-1024)β Common ports, done in seconds.Full (1-65535)β Complete port sweep.Top 100β Same as Fast; focuses the common range.Custom Rangeβ Enter any start/end port.
- Protocol β
TCP only,UDP only, orTCP + UDP. - Concurrency β Default 200. Increase for speed, decrease for stealth.
- Banner/Service Probing β Grab service banners for richer detection.
- OS Fingerprinting β Heuristic OS detection from port combination.
- Verbose Mode β Show closed ports alongside open ones.
- Output Format β Terminal table, JSON file, or CSV file.
- Save Full Report β Optionally dump a complete JSON audit report.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SCAN REPORT β Target: 192.168.1.1 (192.168.1.1)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
PORT PROTO SERVICE RISK LATENCY BANNER
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[!!!] 22 TCP SSH HIGH 3ms SSH-2.0-OpenSSH_8.9
[!] 80 TCP HTTP MEDIUM 2ms HTTP/1.1 200 OK Server: nginx
[i] 443 TCP HTTPS LOW 4ms
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Open ports: 3 | Total scanned: 1024 | Duration: 4.231s
RISK SUMMARY
HIGH Ports: 22
MEDIUM Ports: 80
LOW Ports: 443
{
"target": "192.168.1.1",
"resolved_ip": "192.168.1.1",
"started_at": "2025-06-01T14:00:00Z",
"completed_at": "2025-06-01T14:00:04Z",
"duration": "4.231s",
"port_range": "1-1024",
"total_ports": 1024,
"open_count": 3,
"os_guess": "Linux/Unix (likely web server)",
"risk_summary": {
"high_risk_ports": [22],
"medium_risk_ports": [80],
"low_risk_ports": [443]
},
"results": [
{
"port": 22,
"protocol": "tcp",
"state": "Open",
"service": "SSH",
"banner": "SSH-2.0-OpenSSH_8.9",
"risk": "HIGH",
"latency": "3ms"
}
]
}Port,Protocol,State,Service,Risk,Latency,Banner
22,tcp,Open,SSH,HIGH,3ms,SSH-2.0-OpenSSH_8.9
80,tcp,Open,HTTP,MEDIUM,2ms,HTTP/1.1 200 OK
PortaGo automatically classifies every open port into one of three risk tiers:
| Risk | Ports | Indicator |
|---|---|---|
| HIGH | 21, 23, 135, 139, 445, 1433, 1521, 3389, 5900, 27017 | [!!!] |
| MEDIUM | 22, 25, 53, 110, 143, 3306, 5432, 6379, 9200 | [!] |
| LOW | All other open ports | [i] |
PortaGo uses a heuristic engine to guess the target OS from the combination of detected open ports:
| Detected Ports | OS Guess |
|---|---|
| 3389 + 445 + 135 | Windows (Server / Desktop) |
| 22 + 80 (no 445) | Linux/Unix (web server) |
| 548 or 5000 | macOS / Apple device |
| 23 | Network device / Embedded Linux |
| 9100 | Printer / Network peripheral |
PortaGo recognizes 35+ well-known services out of the box:
FTP, SSH, Telnet, SMTP, DNS, HTTP, POP3, IMAP, HTTPS,
SMB, RDP, MySQL, PostgreSQL, MSSQL, Oracle, MongoDB,
Redis, Elasticsearch, VNC, NFS, RPC, IRC, K8s-API,
Jupyter, HTTP-Alt, HTTPS-Alt, SOCKS, and more.
Press Ctrl+C at any time during a scan. PortaGo will:
- Stop feeding new ports to workers.
- Allow in-flight scans to complete.
- Output all results collected so far.
main()
ββ interactivePrompt() # Guided CLI wizard
ββ resolveTarget() # DNS resolution
ββ runScan() # Orchestrator
ββ tcpWorker() Γ N # TCP worker pool
ββ udpWorker() Γ N # UDP worker pool (when enabled)
ββ scanTCP() # Dial + banner grab
ββ scanUDP() # UDP probe
ββ results channel # Collects ScanResult structs
ββ renderSummaryTable() # Terminal output
ββ writeJSONOutput() # JSON export
ββ writeCSVOutput() # CSV export
ββ buildReport() # Full audit report
This tool is intended solely for authorized security auditing, penetration testing, and educational purposes. You must have explicit written permission from the system owner before scanning any network or device you do not own.
The author (Amin Damon) and contributors are not responsible for any misuse, damage, or illegal activities performed with this tool. Scanning targets without authorization violates computer fraud laws in most jurisdictions. Use responsibly and ethically.