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

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)
| 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 |
Configuration
Whosthere prend en charge plusieurs méthodes de configuration avec l'ordre de priorité suivant (du plus élevé au plus bas) :
- Drapeaux de la ligne de commande – Priorité la plus élevée. Voir
whosthere --helppour les drapeaux disponibles. - Variables d'environnement – Préfixe avec
WHOSTHERE__. Voir Configuration via les variables d'environnement. - Fichier de configuration – Fichier de configuration YAML. Voir Fichier de configuration.
- 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é :
- Chemin spécifié via le drapeau
--configou la variable d'environnementWHOSTHERE_CONFIG $XDG_CONFIG_HOME/whosthere/config.yaml(siXDG_CONFIG_HOMEest 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"
Variables d'environnement
Variables d'environnement générales
| 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. |
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: falsedans la configuration YAMLWHOSTHERE__SPLASH__DELAY=2s– Définit le délai de l'écran de démarrage à 2 secondes, équivalent àsplash.delay: 2sdans la configuration YAMLWHOSTHERE__SCAN_INTERVAL=30s– Définit l'intervalle de scan à 30 secondes, équivalent àscan_interval: 30sdans la configuration YAMLWHOSTHERE__SCANNERS__MDNS__ENABLED=false– Désactive le scanner mDNS, équivalent àscanners.mdns.enabled: falsedans 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 àtheme.name: cyberpunkdans 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éthode | Point d'accès | Description |
|---|---|---|
| GET | /devices | 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é |
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(siXDG_STATE_HOMEest 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'exploitation | Outils de copie pris en charge |
|---|---|
| Darwin | pbcopy |
| Windows | clip.exe |
| Linux/FreeBSD/NetBSD/OpenBSD/Dragonfly | X11 : 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.