v0.1.0 · early release

Fast port discovery.
Even when the network isn’t.

Portis is an adaptive TCP port scanner for high-latency and unstable networks. It measures first, tunes itself, and hands confirmed ports to nmap.

Early release: Portis is under active development. New features, upgrades, broader testing, and further accuracy and performance tuning are planned for future releases.

portis — 80×24
$ ../portis -ip 10.129.18.76 -a

[portis · adaptive port scanner for slow networks]

[portis]   Scan has started against 10.129.18.76
[portis]   Calibrating against target network...
[portis]   Profile: timeout=287.783082ms workers=628 samples=3
[portis]   Worker utilization: 942/1048518 (0.09%)

[open]     21 (191.851264ms)
[open]     80 (190.741024ms)
[open]     443 (191.855388ms)
[open]     389 (194.502347ms, recovered)
[portis]   65536/65536 (100%) — 4 open, 65532 filtered, 0 closed — 2m1s elapsed

[portis]   Open:21, 80, 443, 389
[portis]   No closed ports found
[portis]   Filtered:65532 hidden (use -vv to list)
[portis]   Done in 2m1.734s

Next step:
   Identify services:    nmap -sC -sV -Pn -p 21,80,443,389 10.129.18.76
01 / WORKFLOW

Measure. Adapt. Discover.

Portis is designed to complement nmap, not replace it.

01

Calibrate

Measures the target before scanning and chooses an initial timeout and worker profile.

02

Discover

Scans TCP ports concurrently, tuned for the observed network rather than a fixed preset.

03

Recheck

Moves uncertain responses through a separate retry path and adapts when replies slow down.

04

Hand off

Outputs the open-port set and suggests an nmap command for deeper enumeration.

02 / PRELIMINARY RESULTS

Built for difficult links.

Observed medians from authorized Hack The Box lab targets over a high-latency VPN.

2.46×faster than nmapWindows · ports 0–1000
2.13×faster than nmapLinux · ports 0–1000
20/20complete runsLinux · ports 0–1000

Early benchmark data, not a universal performance claim. Full-range accuracy remains experimental; see the repository for methodology and limitations.

GET STARTED

One binary. No root required.

Linux AMD64 · IPv4 · TCP connect scanning

$ portis -ip 10.0.0.5 -port 1-1000