(Linux + MacOS) Fast, minimal LAN discovery using ARP and mDNS. Single binary.
- Active ARP discovery (Linux + macOS)
- Passive ARP listening
- mDNS hostname discovery
- Live watch mode
- JSON output
- Auto interface detection or manual override
- Vendor enrichment via OUI database files (with fallback)
- Safer scan behavior (skips self/network/broadcast targets)
- Timeout-safe packet collection in active and passive modes
Build
go buildARP requires elevated privileges.
Active scan
sudo ./arpio scanPassive scan (listen only)
sudo ./arpio scan --passiveJSON output
sudo ./arpio scan --jsonSelect interface
sudo ./arpio scan --iface en0Disable mDNS
sudo ./arpio scan --mdns=falseSet scan timeout
sudo ./arpio scan --timeout 5sWatch mode (live table)
sudo ./arpio watch
sudo ./arpio watch --iface en0 --interval 2sPassive watch:
sudo ./arpio watch --passiveDisable mDNS in watch mode
sudo ./arpio watch --mdns=falseIP- IPv4 address discovered by ARPMAC- hardware addressVENDOR- resolved from OUI prefix if availableHOSTNAME- inferred from mDNS A/AAAA responses when enabled
Notes
- Linux uses native ARP sockets
- macOS uses pcap for ARP capture and injection
- Results depend on network activity and privileges
- Vendor lookup prefers external OUI data when available:
ARPIO_OUI_DB(explicit file path)/usr/share/arp-scan/ieee-oui.txt/usr/share/ieee-data/oui.txt/usr/share/misc/oui.txt~/.local/share/arpio/oui.txtand~/.config/arpio/oui.txt
- Falls back to built-in OUI prefixes when no file is available
- Supported OUI line formats:
XX-XX-XX (base 16) Vendor NameXX-XX-XX,Vendor NameorXX:XX:XX,Vendor Name
Run local verification:
go test ./...
go build ./...
go vet ./...CI runs the same checks on push and pull request.
License
MIT