
whosthere v0.8.3
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? đȘ
Whosthere
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?â

Funktionen
- Interaktive TUI: Navigieren und erkunden Sie entdeckte GerÀte intuitiv.
- Schnell und parallel: Nutzt mehrere Erkennungsmethoden gleichzeitig.
- Keine erhöhten Rechte erforderlich: LÀuft vollstÀndig im Benutzermodus.
- GerÀteanreicherung: Verwendet OUI-Nachschlage, um GerÀtehersteller anzuzeigen.
- Integrierter Portscanner: Optionale Diensterkennung auf gefundenen Hosts (nur GerÀte mit Erlaubnis scannen!).
- Daemon-Modus mit HTTP-API: Im Hintergrund laufen lassen und mit anderen Tools integrieren.
- Design und Konfiguration: Personalisieren Sie das Aussehen und Verhalten ĂŒber die YAML-Konfiguration.
Installation
Ă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.
Verwendung
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
Tastenkombinationen (TUI)
| 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 |
Konfiguration
Whosthere unterstĂŒtzt mehrere Konfigurationsmethoden mit folgender PrioritĂ€t (höchste zu niedrigste):
- Befehlszeilen-Flags - Höchste PrioritÀt. Siehe
whosthere --helpfĂŒr verfĂŒgbare Flags. - Umgebungsvariablen - PrĂ€fix
WHOSTHERE__. Siehe Konfiguration ĂŒber Umgebungsvariablen. - Konfigurationsdatei - YAML-Konfigurationsdatei. Siehe Konfigurationsdatei.
- Standardwerte - Fallback-Standards. Siehe
DefaultConfig()in config.go.
Konfigurationsdatei
Whosthere sucht die Konfigurationsdatei in der folgenden Reihenfolge und verwendet die zuerst gefundene:
- Pfad, der ĂŒber das
--config-Flag oder die UmgebungsvariableWHOSTHERE_CONFIGangegeben wurde $XDG_CONFIG_HOME/whosthere/config.yaml(fallsXDG_CONFIG_HOMEgesetzt 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"
Umgebungsvariablen
Allgemeine Umgebungsvariablen
| 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. |
Konfiguration ĂŒber Umgebungsvariablen
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, entsprichtsplash.enabled: falsein der YAML-KonfigurationWHOSTHERE__SPLASH__DELAY=2s- Setzt die Verzögerung des Startbildschirms auf 2 Sekunden, entsprichtsplash.delay: 2sin der YAML-KonfigurationWHOSTHERE__SCAN_INTERVAL=30s- Setzt das Scan-Intervall auf 30 Sekunden, entsprichtscan_interval: 30sin der YAML-KonfigurationWHOSTHERE__SCANNERS__MDNS__ENABLED=false- Deaktiviert den mDNS-Scanner, entsprichtscanners.mdns.enabled: falsein der YAML-KonfigurationWHOSTHERE__PORT_SCANNER__TCP=80,443,8080- Setzt benutzerdefinierte TCP-Ports zum Scannen, entsprichtport_scanner.tcp: [80, 443, 8080]in der YAML-KonfigurationWHOSTHERE__THEME__NAME=cyberpunk- Setzt das Design auf Cyberpunk, entsprichttheme.name: cyberpunkin der YAML-Konfiguration
Daemon-Modus HTTP-API
Wenn 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 |
| GET | /device/{ip} | Details eines bestimmten GerÀts abrufen |
| GET | /health | GesundheitsprĂŒfung |
Designs
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.
Protokollierung
Protokolle werden in das Statusverzeichnis der Anwendung geschrieben:
$XDG_STATE_HOME/whosthere/app.log(fallsXDG_STATE_HOMEgesetzt 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.
Plattformen
Whosthere wird auf folgenden Plattformen unterstĂŒtzt:
- Linux
- macOS
- Windows
Bekannte Probleme
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 |
| Windows | clip.exe |
| Linux/FreeBSD/NetBSD/OpenBSD/Dragonfly | X11: xsel, xclip Wayland: wl-copy |
Haftungsausschluss
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.
Beitragen
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.