Skip to content

nyxr

Blazing fast network scanner. Fast discovery, evidence-backed service identification. One CLI, REST API and web UI.

ver v0.17.1 lang Go lic MIT macOSLinuxWindows
quickstart — zsh
brew install matusso/tap/nyxr
nyxr scan --profile tcp-common 192.0.2.10
192.0.2.10:22 tcp svc ssh 100% OpenSSH 9.6p1
192.0.2.10:443 tcp svc https 100% nginx 1.27.2 | TLS 1.3
nyxr serve
web UI listening on http://127.0.0.1:8484

nyxr finds open ports quickly, then works out what is actually running on them, and keeps the bytes that prove it. Point it at an IP, a hostname, a CIDR or a range. Every scan ends up in an inventory you can query later.

Evidence, not guessesA service is claimed only from a matched response. Every result carries a confidence, a reason and the raw exchange.
UDP done properlyProtocol payloads, per-scan transaction tokens and ICMP correlation. Silence stays open|filtered, never “open”.
Safe for fragile networksThe ot-safe profile enforces allowlists, low rates and read-only Modbus and EtherNet/IP identity reads.
Unprivileged by defaultConnect scans, identification, storage and the web UI need no root. Raw packet I/O lives in a narrow nyxr-packetd helper.
Everything is keptEvery scan lands in a local SQLite inventory you can query and rescan, with optional pcapng evidence.
Correlated assetsValidated MAC, SNMP, SMB and SSH identities link addresses into assets, with an audit trail.

Install

Works on macOS and Linux (amd64, arm64):

brew install matusso/tap/nyxr
brew upgrade nyxr        # later, to get the newest release

Or tap once and install by name:

brew tap matusso/tap
brew install nyxr

Shell completion for bash, zsh, fish and PowerShell: nyxr completion <shell>.

Downloads

release v0.17.1 · verify with SHA256SUMS · all releases →

Usage

nyxr scan 192.0.2.10                                # top 100 TCP ports, unprivileged
nyxr scan --profile tcp-common 192.0.2.0/24         # identify the services behind open ports
nyxr scan --profile udp-common 192.0.2.10           # UDP with protocol payloads
nyxr scan --profile web --json 192.0.2.10           # TLS and HTTP details as JSON
nyxr scan --profile windows 192.0.2.10              # SMB, RDP, MSRPC, LDAP/AD and Kerberos
nyxr scan --dry-run --profile tcp-full 10.0.0.0/24  # show the plan, send nothing

nyxr history --assets --open                        # what is open right now, per host
nyxr serve                                          # web UI at http://127.0.0.1:8484

Ports accept lists, ranges and sets such as top100, top1000, web, udp, database, windows or all. Run nyxr profiles for the full catalogue.

Build an inventory, then interrogate only what is open

nyxr scan --profile tcp-basic --ports top1000 192.0.2.0/24
nyxr scan --known-open 192.0.2.0/24
nyxr history --assets --open --scope 192.0.2.0/24

Find databases that answer without credentials

Response-validated probes for Redis, Memcached, PostgreSQL, MongoDB, Neo4j, Cassandra, SQL Server, MySQL, Elasticsearch and ClickHouse:

nyxr scan --profile database 192.0.2.0/24

Explain a packet capture

nyxr decode --all capture.pcapng
nyxr decode --tui capture.pcapng    # step through packets with a note on every header field

Run it as a team service

sudo setcap cap_net_raw,cap_net_admin+ep /usr/local/bin/nyxr-packetd
nyxr-packetd --socket /run/nyxr/packetd.sock --interface eth0 &
NYXR_API_TOKEN=$(openssl rand -hex 16) \
  nyxr serve --listen 0.0.0.0:8484 --packetd /run/nyxr/packetd.sock
Scan only networks you own or are authorised to test. nyxr is pre-1.0 and under active development.