Retour aux mises à jour
New releaseAug 20, 2026

whosthere v0.8.3

Outil de découverte de réseau local avec une interface utilisateur terminal (TUI) interactive écrite en Go. Découvrez, explorez et comprenez votre réseau local de manière intuitive. Toc Toc.. qui est là ? 🚪

Partager

Whosthere

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

Outil de découverte de réseau local avec une interface utilisateur terminal (TUI) interactive écrit en Go. Découvrez, explorez et comprenez votre réseau local de manière intuitive.

Whosthere effectue des analyses simultanées sans privilèges en utilisant les scanners mDNS et SSDP. De plus, il balaie le sous-réseau local en tentant des connexions TCP/UDP pour déclencher la résolution ARP, puis lit le cache ARP afin d'identifier les périphériques présents sur votre réseau local. Cette technique remplit le cache ARP sans nécessiter de privilèges élevés. Tous les périphériques découverts sont enrichis avec des recherches OUI pour afficher les fabricants lorsque cela est possible.

Whosthere offre un moyen convivial et intuitif de répondre à la question que tout administrateur réseau se pose : « Qui est là sur mon réseau ? »

demo gif

Fonctionnalités

  • TUI interactive : Naviguez et explorez les périphériques découverts de manière intuitive.
  • Rapide et simultané : Utilise plusieurs méthodes de découverte en parallèle.
  • Aucun privilège élevé requis : Fonctionne entièrement en espace utilisateur.
  • Enrichissement des périphériques : Utilise la recherche OUI pour afficher les fabricants.
  • Scanner de ports intégré : Découverte optionnelle de services sur les hôtes trouvés (ne scanner que les périphériques avec autorisation !).
  • Mode démon avec API HTTP : Fonctionne en arrière-plan et s'intègre à d'autres outils.
  • Thèmes et configuration : Personnalisez l'apparence et le comportement via un fichier de configuration YAML.

Installation

Via Homebrew avec brew :

brew install whosthere

Sur NixOS avec nix :

nix profile install nixpkgs#whosthere

Sur Arch Linux avec yay :

yay -S whosthere-bin

Si votre gestionnaire de paquets n'est pas listé, vous pouvez toujours installer avec Go :

go install github.com/ramonvermeulen/whosthere@latest

Ou compiler à partir des sources :

git clone https://github.com/ramonvermeulen/whosthere.git
cd whosthere
make build

De plus, vous pouvez télécharger les binaires précompilés depuis la page des versions.

Utilisation

Lancez la TUI pour une découverte interactive :

whosthere

Exécutez en CLI pour effectuer un seul scan et afficher les résultats :

whosthere scan -t 5

Exportez les résultats dans un fichier JSON :

whosthere scan -t 5 --json --pretty > devices.json

Exécutez en mode démon avec API HTTP :

whosthere daemon --port=8080

Les options supplémentaires de la ligne de commande sont disponibles en exécutant :

whosthere --help

Raccourcis clavier (TUI)

ToucheAction
/Démarrer une recherche par expression régulière
kMonter
jDescendre
gAller en haut
GAller en bas
yCopier l'IP du périphérique sélectionné
YCopier l'adresse MAC du périphérique sélectionné
entréeAfficher les détails du périphérique
CTRL+tActiver/désactiver le sélecteur de thème
CTRL+iActiver/désactiver le sélecteur d'interface
CTRL+c/qArrêter l'application
ÉchapEffacer la recherche / Revenir en arrière
p (vue détails)Lancer un scan de ports sur le périphérique
tab (vue modale)Changer la sélection du bouton

Configuration

Whosthere prend en charge plusieurs méthodes de configuration avec l'ordre de priorité suivant (du plus élevé au plus bas) :

  1. Drapeaux de la ligne de commande – Priorité la plus élevée. Voir whosthere --help pour les drapeaux disponibles.
  2. Variables d'environnement – Préfixe avec WHOSTHERE__. Voir Configuration via les variables d'environnement.
  3. Fichier de configuration – Fichier de configuration YAML. Voir Fichier de configuration.
  4. Valeurs par défaut – Valeurs par défaut de secours. Voir DefaultConfig() dans config.go.

Fichier de configuration

Whosthere recherche le fichier de configuration dans l'ordre suivant, en utilisant le premier trouvé :

  1. Chemin spécifié via le drapeau --config ou la variable d'environnement WHOSTHERE_CONFIG
  2. $XDG_CONFIG_HOME/whosthere/config.yaml (si XDG_CONFIG_HOME est défini)
  3. ~/.config/whosthere/config.yaml (emplacement par défaut)

Exemple de configuration :

# 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"

Variables d'environnement

Variables d'environnement générales

VariableDescription
WHOSTHERE_CONFIGChemin vers le fichier de configuration, pour pouvoir écraser l'emplacement par défaut.
WHOSTHERE_LOGDéfinir le niveau de journalisation (par ex. debug, info, warn, error). Par défaut info.
NO_COLORDésactiver les couleurs ANSI dans la TUI.

Configuration via les variables d'environnement

Toute option de configuration disponible dans le fichier YAML peut être définie via des variables d'environnement en utilisant le préfixe WHOSTHERE__ (notez le double soulignement). Les clés de configuration imbriquées sont séparées par des doubles soulignements, et les clés sont insensibles à la casse.

Exemples :

  • WHOSTHERE__SPLASH__ENABLED=false – Désactive l'écran de démarrage, équivalent à splash.enabled: false dans la configuration YAML
  • WHOSTHERE__SPLASH__DELAY=2s – Définit le délai de l'écran de démarrage à 2 secondes, équivalent à splash.delay: 2s dans la configuration YAML
  • WHOSTHERE__SCAN_INTERVAL=30s – Définit l'intervalle de scan à 30 secondes, équivalent à scan_interval: 30s dans la configuration YAML
  • WHOSTHERE__SCANNERS__MDNS__ENABLED=false – Désactive le scanner mDNS, équivalent à scanners.mdns.enabled: false dans la configuration YAML
  • WHOSTHERE__PORT_SCANNER__TCP=80,443,8080 – Définit des ports TCP personnalisés à scanner, équivalent à port_scanner.tcp: [80, 443, 8080] dans la configuration YAML
  • WHOSTHERE__THEME__NAME=cyberpunk – Définit le thème sur cyberpunk, équivalent à theme.name: cyberpunk dans la configuration YAML

API HTTP du mode démon

Lorsque Whosthere est exécuté en mode démon, il expose une API HTTP très simple avec les points d'accès suivants :

MéthodePoint d'accèsDescription
GET/devicesObtenir la liste de tous les périphériques découverts
GET/device/{ip}Obtenir les détails d'un périphérique spécifique
GET/healthVérification de l'état de santé

Thèmes

Le thème peut être configuré via le fichier de configuration, ou à l'exécution via la combinaison de touches CTRL+t. Une liste complète des thèmes disponibles se trouve ici, n'hésitez pas à ouvrir une PR pour ajouter votre propre thème !

Exemple de configuration de thème :

theme:
  enabled: true
  name: cyberpunk

Lorsque name est défini sur custom, les autres options de couleur peuvent être utilisées pour créer votre propre thème personnalisé. Lorsque l'option enabled est définie sur false, la TUI utilisera les couleurs ANSI par défaut du terminal. Lorsque la variable d'environnement NO_COLOR est définie, toutes les couleurs ANSI seront désactivées.

Journalisation

Les journaux sont écrits dans le répertoire d'état de l'application :

  • $XDG_STATE_HOME/whosthere/app.log (si XDG_STATE_HOME est défini)
  • ~/.local/state/whosthere/app.log (emplacement par défaut Linux/MacOS)
  • %LOCALAPPDATA%/whosthere/app.log (emplacement par défaut Windows)

Lorsqu'il n'est pas en mode TUI, les journaux sont également écrits dans la console.

Plateformes

Whosthere est pris en charge sur les plateformes suivantes :

  • Linux
  • macOS
  • Windows

Problèmes connus

Pour que les fonctionnalités du presse-papiers fonctionnent, un fork de go-clipboard est utilisé. Assurez-vous d'avoir l'outil de copie approprié installé pour votre système d'exploitation :

Système d'exploitationOutils de copie pris en charge
Darwinpbcopy
Windowsclip.exe
Linux/FreeBSD/NetBSD/OpenBSD/DragonflyX11 : xsel, xclip
Wayland : wl-copy

Avertissement

Whosthere est destiné à être utilisé sur des réseaux pour lesquels vous avez l'autorisation d'effectuer des découvertes et des analyses, comme votre propre réseau domestique. L'analyse non autorisée de réseaux peut être illégale et contraire à l'éthique. Obtenez toujours une autorisation appropriée avant d'utiliser cet outil sur un réseau.

Cet outil a été créé principalement à des fins éducatives et d'exploration de réseau domestique. Bien que fonctionnel et utile, il ne doit pas être considéré comme une solution de surveillance réseau de qualité professionnelle. Les résultats sont basés sur des techniques d'analyse sans privilèges et peuvent ne pas être exhaustifs. Pour une analyse réseau critique ou des évaluations de sécurité, envisagez d'utiliser des outils professionnels établis avec un support formel.

Contribuer

Les contributions et suggestions telles que les demandes de fonctionnalités, les rapports de bogues ou les améliorations sont les bienvenues ! N'hésitez pas à ouvrir des issues ou à soumettre des pull requests sur le dépôt GitHub. Assurez-vous de discuter des changements majeurs sur une issue GitHub avant de les implémenter.

Catégories