
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à ? 🚪
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 ? »

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.
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
Whosthere prend en charge plusieurs méthodes de configuration avec l'ordre de priorité suivant (du plus élevé au plus bas) :
whosthere --help pour les drapeaux disponibles.WHOSTHERE__. Voir Configuration via les variables d'environnement.DefaultConfig() dans config.go.Whosthere recherche le fichier de configuration dans l'ordre suivant, en utilisant le premier trouvé :
--config ou la variable d'environnement WHOSTHERE_CONFIG$XDG_CONFIG_HOME/whosthere/config.yaml (si XDG_CONFIG_HOME est défini)~/.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"
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 YAMLWHOSTHERE__SPLASH__DELAY=2s – Définit le délai de l'écran de démarrage à 2 secondes, équivalent à splash.delay: 2s dans la configuration YAMLWHOSTHERE__SCAN_INTERVAL=30s – Définit l'intervalle de scan à 30 secondes, équivalent à scan_interval: 30s dans la configuration YAMLWHOSTHERE__SCANNERS__MDNS__ENABLED=false – Désactive le scanner mDNS, équivalent à scanners.mdns.enabled: false dans la configuration YAMLWHOSTHERE__PORT_SCANNER__TCP=80,443,8080 – Définit des ports TCP personnalisés à scanner, équivalent à port_scanner.tcp: [80, 443, 8080] dans la configuration YAMLWHOSTHERE__THEME__NAME=cyberpunk – Définit le thème sur cyberpunk, équivalent à dans la configuration YAMLLorsque Whosthere est exécuté en mode démon, il expose une API HTTP très simple avec les points d'accès suivants :
| Méthode | Point d'accès | Description |
|---|---|---|
| GET | /devices |
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.
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.
Whosthere est pris en charge sur les plateformes suivantes :
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'exploitation | Outils de copie pris en charge |
|---|---|
| Darwin | pbcopy |
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.
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.
| Touche | Action |
|---|
/ | Démarrer une recherche par expression régulière |
k | Monter |
j | Descendre |
g | Aller en haut |
G | Aller en bas |
y | Copier l'IP du périphérique sélectionné |
Y | Copier l'adresse MAC du périphérique sélectionné |
entrée | Afficher les détails du périphérique |
CTRL+t | Activer/désactiver le sélecteur de thème |
CTRL+i | Activer/désactiver le sélecteur d'interface |
CTRL+c/q | Arrêter l'application |
Échap | Effacer 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 |
| Variable | Description |
|---|
WHOSTHERE_CONFIG | Chemin vers le fichier de configuration, pour pouvoir écraser l'emplacement par défaut. |
WHOSTHERE_LOG | Définir le niveau de journalisation (par ex. debug, info, warn, error). Par défaut info. |
NO_COLOR | Désactiver les couleurs ANSI dans la TUI. |
theme.name: cyberpunk| Obtenir 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 | /health | Vérification de l'état de santé |
| Windows | clip.exe |
| Linux/FreeBSD/NetBSD/OpenBSD/Dragonfly | X11 : xsel, xclip Wayland : wl-copy |