portr
What it does (did)
portr was a TUI over a fast TCP SYN scanner. You gave it a CIDR and a port list; it ran the scan in the background and populated a sortable table in real time — host, port, state, service guess, response time. The header line showed scan progress and an ETA.
It was my answer to “I know nmap can do this, but I always want to watch the results come in, sorted by response time, and nmap’s interactive output is … not that.”
Why I made it
I’d been working through a homelab IP cleanup — figuring out what all those machines I’d plugged in over the years were actually running — and I wanted a view that updated as the scan ran. I wrote the TUI first, then a scanner underneath, which in hindsight was the wrong order.
Why it’s archived
Three reasons:
- Raw socket support on macOS got harder between a couple of OS updates and I kept breaking the build.
nmapalready does this well enough for 95% of what I need, and the remaining 5% is better handled bymasscanpiped intojq.- I wasn’t using it myself. When a side project stops being useful to its author, it mostly stops being maintained. Better to say so on the README than pretend.
What I still think was right
The live-updating TUI for a port scan is still the right interface, and no one has really built a good one. If I were to try again I’d skip the raw sockets entirely, use plain connect() scans with aggressive concurrency (which is plenty fast for a /24), and focus on the UX.
Install
The source is frozen at /src/portr/. I won’t ship binaries anymore. The README points people at nmap --stats-every 10s as a decent substitute.