
Werkzeug zur Erkennung von lokalen Netzwerken mit einer interaktiven Terminal-Benutzeroberfläche (TUI), geschrieben in Go. Entdecken, erkunden und verstehen Sie Ihr LAN auf intuitive Weise. Klopf Klopf.. wer ist da? 🚪
Ein Tool zur Erkennung von Geräten im lokalen Netzwerk mit einer interaktiven Terminal-Benutzeroberfläche (TUI), geschrieben in Go. Entdecken, erkunden und verstehen Sie Ihr LAN auf intuitive Weise.
Whosthere führt nicht privilegierte, gleichzeitige Scans mit mDNS- und SSDP-Scannern durch. Zusätzlich durchsucht es das lokale Subnetz, indem es TCP/UDP-Verbindungen versucht, um die ARP-Auflösung auszulösen, und liest dann den ARP-Cache, um Geräte in Ihrem lokalen Netzwerk zu identifizieren. Diese Technik befüllt den ARP-Cache, ohne dass erhöhte Rechte erforderlich sind. Alle entdeckten Geräte werden mit OUI-Nachschlagen angereichert, um gegebenenfalls Hersteller anzuzeigen.
Whosthere bietet eine freundliche, intuitive Möglichkeit, die Frage zu beantworten, die sich jeder Netzwerkadministrator stellt: „Wer ist da in meinem Netzwerk?“

Über Homebrew mit brew:
brew install whosthere
Auf NixOS mit nix:
nix profile install nixpkgs#whosthere
Auf Arch Linux mit yay:
yay -S whosthere-bin
Wenn Ihr Paketmanager nicht aufgeführt ist, können Sie es immer mit Go installieren:
go install github.com/ramonvermeulen/whosthere@latest
Oder aus dem Quellcode erstellen:
git clone https://github.com/ramonvermeulen/whosthere.git
cd whosthere
make build
Zusätzlich können Sie vorgefertigte Binärdateien von der Releases-Seite herunterladen.
Führen Sie die TUI für die interaktive Erkennung aus:
whosthere
Als CLI ausführen, um einen einzelnen Scan durchzuführen und Ergebnisse auszugeben:
whosthere scan -t 5
Ergebnisse in eine JSON-Datei ausgeben:
whosthere scan -t 5 --json --pretty > devices.json
Als Daemon mit HTTP-API ausführen:
whosthere daemon --port=8080
Zusätzliche Befehlszeilenoptionen finden Sie mit:
whosthere --help
Whosthere unterstützt mehrere Konfigurationsmethoden mit folgender Priorität (höchste zu niedrigste):
whosthere --help für verfügbare Flags.WHOSTHERE__. Siehe Konfiguration über Umgebungsvariablen.DefaultConfig() in config.go.Whosthere sucht die Konfigurationsdatei in der folgenden Reihenfolge und verwendet die zuerst gefundene:
--config-Flag oder die Umgebungsvariable WHOSTHERE_CONFIG angegeben wurde$XDG_CONFIG_HOME/whosthere/config.yaml (falls XDG_CONFIG_HOME gesetzt ist)~/.config/whosthere/config.yaml (Standardpfad)Beispielkonfiguration:
# Uncomment the next line to configure a specific network interface - uses OS default if not set
# network_interface: eth0
# When enabled, devices from all network interfaces are shown and persist when switching interfaces
# Note: if two interfaces share the same subnet (e.g. both use 192.168.1.x), devices may get merged
# since they are identified by IP address. Use with caution on overlapping subnets.
all_interfaces: false
# How often to run discovery scans
scan_interval: 20s
# Maximum timeout for each scan, recommended to be less than the scan interval
scan_timeout: 10s
scanners:
mdns:
enabled: true
ssdp:
enabled: true
arp:
enabled: true
sweeper:
enabled: true
interval: 5m
timeout: 20s
port_scanner:
timeout: 5s
# List of TCP ports to scan on discovered devices
tcp: [21, 22, 23, 25, 80, 110, 135, 139, 143, 389, 443, 445, 993, 995, 1433, 1521, 3306, 3389, 5432, 5900, 8080, 8443, 9000, 9090, 9200, 9300, 10000, 27017]
splash:
enabled: true
delay: 1s
theme:
# When disabled, the TUI will use the terminal it's default ANSI colors
# Also see the NO_COLOR environment variable to completely disable ANSI colors
enabled: true
# See the complete list of available themes at https://github.com/ramonvermeulen/whosthere/tree/main/internal/ui/theme/theme.go
# Set name to "custom" to use the custom colors below
# For any color that is not configured it will take the default theme value as fallback
name: default
# Disable ANSI colors completely, overrides theme.enabled
# Can also be set via NO_COLOR or WHOSTHERE__THEME__NO_COLOR environment variables
# no_color: false
# Custom theme colors (uncomment and set name: custom to use)
# primitive_background_color: "#000a1a"
# contrast_background_color: "#001a33"
# more_contrast_background_color: "#003366"
# border_color: "#0088ff"
# title_color: "#00ffff"
# graphics_color: "#00ffaa"
# primary_text_color: "#cceeff"
# secondary_text_color: "#6699ff"
# tertiary_text_color: "#ffaa00"
# inverse_text_color: "#000a1a"
# contrast_secondary_text_color: "#88ddff"
Jede Konfigurationsoption, die in der YAML-Konfiguration verfügbar ist, kann über Umgebungsvariablen mit dem Präfix WHOSTHERE__ gesetzt werden (beachten Sie den doppelten Unterstrich). Verschachtelte Konfigurationsschlüssel werden durch doppelte Unterstriche getrennt, und die Schlüssel sind nicht case-sensitiv.
Beispiele:
WHOSTHERE__SPLASH__ENABLED=false - Deaktiviert den Startbildschirm, entspricht splash.enabled: false in der YAML-KonfigurationWHOSTHERE__SPLASH__DELAY=2s - Setzt die Verzögerung des Startbildschirms auf 2 Sekunden, entspricht splash.delay: 2s in der YAML-KonfigurationWHOSTHERE__SCAN_INTERVAL=30s - Setzt das Scan-Intervall auf 30 Sekunden, entspricht scan_interval: 30s in der YAML-KonfigurationWHOSTHERE__SCANNERS__MDNS__ENABLED=false - Deaktiviert den mDNS-Scanner, entspricht scanners.mdns.enabled: false in der YAML-KonfigurationWHOSTHERE__PORT_SCANNER__TCP=80,443,8080 - Setzt benutzerdefinierte TCP-Ports zum Scannen, entspricht port_scanner.tcp: [80, 443, 8080] in der YAML-KonfigurationWHOSTHERE__THEME__NAME=cyberpunk - Setzt das Design auf Cyberpunk, entspricht in der YAML-KonfigurationWenn Whosthere im Daemon-Modus ausgeführt wird, stellt es eine sehr einfache HTTP-API mit den folgenden Endpunkten bereit:
| Methode | Endpunkt | Beschreibung |
|---|---|---|
| GET | /devices | Liste aller entdeckten Geräte abrufen |
Das Design kann über die Konfigurationsdatei oder zur Laufzeit über die Tastenkombination CTRL+t konfiguriert werden. Eine vollständige Liste der verfügbaren Designs finden Sie hier. Sie können gerne einen PR öffnen, um Ihr eigenes Design hinzuzufügen!
Beispiel für eine Design-Konfiguration:
theme:
enabled: true
name: cyberpunk
Wenn der name auf custom gesetzt ist, können die anderen Farboptionen verwendet werden, um ein eigenes benutzerdefiniertes Design zu erstellen. Wenn die Option enabled auf false gesetzt ist, verwendet die TUI die Standard-ANSI-Farben des Terminals. Wenn die Umgebungsvariable NO_COLOR gesetzt ist, werden alle ANSI-Farben deaktiviert.
Protokolle werden in das Statusverzeichnis der Anwendung geschrieben:
$XDG_STATE_HOME/whosthere/app.log (falls XDG_STATE_HOME gesetzt ist)~/.local/state/whosthere/app.log (Fallback Linux/MacOS)%LOCALAPPDATA%/whosthere/app.log (Fallback Windows)Wenn nicht im TUI-Modus ausgeführt, werden Protokolle auch auf der Konsole ausgegeben.
Whosthere wird auf folgenden Plattformen unterstützt:
Damit die Zwischenablage-Funktionalität funktioniert, wird ein Fork von go-clipboard verwendet. Stellen Sie sicher, dass das entsprechende Kopierwerkzeug für Ihr Betriebssystem installiert ist:
| Betriebssystem | Unterstützte Kopierwerkzeuge |
|---|---|
| Darwin | pbcopy |
Whosthere ist für die Verwendung in Netzwerken vorgesehen, für die Sie die Erlaubnis zur Netzwerkerkennung und -abfrage haben, wie z. B. Ihr eigenes Heimnetzwerk. Die unbefugte Abfrage von Netzwerken kann illegal und unethisch sein. Holen Sie stets die entsprechende Genehmigung ein, bevor Sie dieses Tool in einem Netzwerk verwenden.
Dieses Tool wurde hauptsächlich zu Bildungszwecken und zur Erkundung von Heimnetzwerken entwickelt. Obwohl es funktional und nützlich ist, sollte es nicht als professionelle Netzwerküberwachungslösung angesehen werden. Die Ergebnisse basieren auf nicht privilegierten Scan-Techniken und sind möglicherweise nicht vollständig. Für kritische Netzwerkanalysen oder Sicherheitsbewertungen sollten Sie etablierte professionelle Tools mit formellem Support in Betracht ziehen.
Beiträge und Vorschläge wie Feature-Anfragen, Fehlermeldungen oder Verbesserungen sind willkommen! Eröffnen Sie gerne Issues oder reichen Sie Pull-Requests im GitHub-Repository ein. Bitte besprechen Sie größere Änderungen vor der Implementierung in einem GitHub-Issue.
| Taste | Aktion |
|---|
/ | Regex-Suche starten |
k | Hoch |
j | Runter |
g | Zum Anfang gehen |
G | Zum Ende gehen |
y | IP des ausgewählten Geräts kopieren |
Y | MAC des ausgewählten Geräts kopieren |
enter | Gerätedetails anzeigen |
CTRL+t | Designauswahl umschalten |
CTRL+i | Schnittstellenauswahl umschalten |
CTRL+c/q | Anwendung beenden |
ESC | Suche löschen / Zurück |
p (Detailansicht) | Portscan auf Gerät starten |
tab (Modalansicht) | Schaltflächenauswahl wechseln |
| Variable | Beschreibung |
|---|
WHOSTHERE_CONFIG | Pfad zur Konfigurationsdatei, um den Standardpfad überschreiben zu können. |
WHOSTHERE_LOG | Legt die Protokollebene fest (z. B. debug, info, warn, error). Standard ist info. |
NO_COLOR | Deaktiviert ANSI-Farben in der TUI. |
theme.name: cyberpunk| GET | /device/{ip} | Details eines bestimmten Geräts abrufen |
| GET | /health | Gesundheitsprüfung |
| Windows |
clip.exe |
| Linux/FreeBSD/NetBSD/OpenBSD/Dragonfly | X11: xsel, xclip Wayland: wl-copy |