Whosthere – modernes TUI-basiertes LAN-Erkundungstool, geschrieben in Go
(github.com/ramonvermeulen)- Whosthere ist ein in Go geschriebenes Erkundungstool für lokale Netzwerke mit einer intuitiven Terminal User Interface (TUI)
- Geräte im LAN können erkannt und untersucht werden, sodass sich die Netzwerkstruktur besser verstehen lässt
- Unterstützt Linux, macOS und Windows
- Nutzt mDNS und einen SSDP-Scanner sowie TCP/UDP-Verbindungsversuche, um den ARP-Cache zu füllen und Geräte zu identifizieren
- Auch ohne Administratorrechte kann der ARP-Cache verwendet werden, um eine Geräteliste zu sammeln
- Für erkannte Geräte werden per OUI (Organizationally Unique Identifier)-Lookup Herstellerinformationen angezeigt
- Apache-2.0-Lizenz
Hauptfunktionen
- Modern TUI: Bietet eine intuitive Oberfläche zur Navigation durch erkannte Geräte
- Fast & Concurrent: Liefert schnelle Ergebnisse, indem mehrere Erkundungsmethoden gleichzeitig ausgeführt werden
- No Elevated Privileges Required: Kann mit normalen Benutzerrechten ausgeführt werden
- Device Enrichment: Zeigt Herstellerinformationen per OUI-Lookup an
- Integrated Port Scanner: Enthält eine Port-Scan-Funktion für erkannte Hosts (es wird empfohlen, nur autorisierte Geräte zu scannen)
- Daemon Mode with HTTP API: Ermöglicht den Hintergrundbetrieb und die Integration mit externen Tools
- Theming & Configuration: Anpassung von Theme und Verhalten über eine YAML-Konfigurationsdatei
Verwendung
- TUI starten:
whosthere - HTTP-API-Daemon-Modus starten:
whosthere daemon --port 8080GET /devices: Gibt eine Liste aller erkannten Geräte zurückGET /device/{ip}: Gibt Detailinformationen zu einem bestimmten Gerät zurückGET /health: Zustandsprüfung
1 Kommentare
Hacker-News-Kommentare
Jemand hat ein LAN-Discovery-TUI-Tool in Go gebaut. Es heißt Whosthere und wurde so entwickelt, dass sich Geräte im lokalen Netzwerk ohne Administratorrechte erkennen lassen.
Es kombiniert mDNS, SSDP, ARP-Cache und OUI-Lookups zur Gerätesuche und unterstützt eine schnelle, tastaturzentrierte UI auf Basis von tview, einen integrierten Port-Scanner, einen HTTP-API-Daemon-Modus und YAML-Konfigurationsdateien.
Das Projekt entstand, um gleichzeitig Go und Networking zu lernen, und wurde von TUI-Apps wie lazygit, k9s und dive inspiriert.
Die Installation ist über Homebrew oder
go installmöglich, unterstützt werden Linux und macOS.Die Ergebnisse in meinem Netzwerk:
Es gibt das bekannte Sprichwort: „Wer sich nicht an nmap erinnern kann, ist dazu verdammt, es schlecht neu zu bauen.“
Geteilt wurde ein Beispielbefehl, der ohne Root-Rechte einen
/24-Scan in unter 10 Sekunden abschließt.Siehe die offizielle nmap-Dokumentation.
Vor fünf Jahren hat jemand mit derselben Idee schon ein ähnliches CLI-Tool gebaut, sogar mit praktisch demselben Namen: die polnische Version von „whosthere“, nämlich ktotu.
Link zum ktotu-Projekt
Diese Version ist deutlich ausgereifter, und Go war dafür eine gute Wahl. Es wurde gefragt, ob die Idee vielleicht mit KI erzeugt wurde.
Insgesamt ein gut gemachtes Tool. Es wäre praktisch, wenn man mit der Option
-idie zu scannende Schnittstelle angeben könnte.Auf meinem Laptop funktionierte nur der erste Scan richtig, danach waren keine ARP-Anfragen mehr zu sehen.
Die Schnittstelle kann in der YAML-Datei konfiguriert werden; künftig soll das auch per Kommandozeilen-Flag möglich sein.
Mit dem Namen „whogoesthere“ wäre es vielleicht noch lustiger gewesen.
Es wurde gefragt, ob die Go-Standardbibliothek bei TUI-Funktionen besonders stark ist. In letzter Zeit scheinen neue TUIs fast alle in Go geschrieben zu sein.
Mit dem Namen „Whose LAN is it anyway?“ wäre es noch wortwitziger gewesen.
Starkes technisches Können. Das wirkt wie der echte Weg zum Engineer.
Netzwerkverkehr kann man damit zwar nicht direkt sehen, aber man begegnet oft Leuten, die Probleme ohne solche Tools diagnostizieren wollen.
In der Praxis sind Tools wie nmap, wireshark, LLDP und CDP unverzichtbar; für große Netzwerke wurde Netdisco empfohlen.
Es ist interessant, dass „moderne TUIs“ am Ende oft doch nur die Nostalgie von Turbo Vision, Clipper und curses wiederaufleben lassen.
Es wurde gefragt, ob das schon mit Tailscale getestet wurde. Das könnte sehr nützlich sein, allerdings unterstützt Tailscale mDNS bislang nicht.
Zugehöriger Issue-Link