ZurĂŒck zu den Updates
New releaseAug 20, 2026

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? đŸšȘ

Teilen

Whosthere

Go Report Card Go Version License GitHub Downloads (all assets, all releases) GitHub Release GitHub Repo stars

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?“

demo gif

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)

TasteAktion
/Regex-Suche starten
kHoch
jRunter
gZum Anfang gehen
GZum Ende gehen
yIP des ausgewÀhlten GerÀts kopieren
YMAC des ausgewÀhlten GerÀts kopieren
enterGerÀtedetails anzeigen
CTRL+tDesignauswahl umschalten
CTRL+iSchnittstellenauswahl umschalten
CTRL+c/qAnwendung beenden
ESCSuche 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):

  1. Befehlszeilen-Flags - Höchste PrioritĂ€t. Siehe whosthere --help fĂŒr verfĂŒgbare Flags.
  2. Umgebungsvariablen - PrĂ€fix WHOSTHERE__. Siehe Konfiguration ĂŒber Umgebungsvariablen.
  3. Konfigurationsdatei - YAML-Konfigurationsdatei. Siehe Konfigurationsdatei.
  4. Standardwerte - Fallback-Standards. Siehe DefaultConfig() in config.go.

Konfigurationsdatei

Whosthere sucht die Konfigurationsdatei in der folgenden Reihenfolge und verwendet die zuerst gefundene:

  1. Pfad, der ĂŒber das --config-Flag oder die Umgebungsvariable WHOSTHERE_CONFIG angegeben wurde
  2. $XDG_CONFIG_HOME/whosthere/config.yaml (falls XDG_CONFIG_HOME gesetzt ist)
  3. ~/.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

VariableBeschreibung
WHOSTHERE_CONFIGPfad zur Konfigurationsdatei, um den Standardpfad ĂŒberschreiben zu können.
WHOSTHERE_LOGLegt die Protokollebene fest (z. B. debug, info, warn, error). Standard ist info.
NO_COLORDeaktiviert 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, entspricht splash.enabled: false in der YAML-Konfiguration
  • WHOSTHERE__SPLASH__DELAY=2s - Setzt die Verzögerung des Startbildschirms auf 2 Sekunden, entspricht splash.delay: 2s in der YAML-Konfiguration
  • WHOSTHERE__SCAN_INTERVAL=30s - Setzt das Scan-Intervall auf 30 Sekunden, entspricht scan_interval: 30s in der YAML-Konfiguration
  • WHOSTHERE__SCANNERS__MDNS__ENABLED=false - Deaktiviert den mDNS-Scanner, entspricht scanners.mdns.enabled: false in der YAML-Konfiguration
  • WHOSTHERE__PORT_SCANNER__TCP=80,443,8080 - Setzt benutzerdefinierte TCP-Ports zum Scannen, entspricht port_scanner.tcp: [80, 443, 8080] in der YAML-Konfiguration
  • WHOSTHERE__THEME__NAME=cyberpunk - Setzt das Design auf Cyberpunk, entspricht theme.name: cyberpunk in 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:

MethodeEndpunktBeschreibung
GET/devicesListe aller entdeckten GerÀte abrufen
GET/device/{ip}Details eines bestimmten GerÀts abrufen
GET/healthGesundheitsprĂŒ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 (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.

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:

BetriebssystemUnterstĂŒtzte Kopierwerkzeuge
Darwinpbcopy
Windowsclip.exe
Linux/FreeBSD/NetBSD/OpenBSD/DragonflyX11: 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.

Kategorien