Whosthere - Outil moderne d’exploration LAN basé sur un TUI, écrit en Go
(github.com/ramonvermeulen)- Whosthere est un outil d’exploration de réseau local écrit en Go, qui propose une interface utilisateur en terminal (TUI) intuitive
- Il permet de découvrir et d’explorer les appareils du LAN, et de comprendre la structure du réseau
- Compatible avec Linux, macOS et Windows
- Identifie les appareils en remplissant le cache ARP via des scanners mDNS et SSDP, ainsi que des tentatives de connexion TCP/UDP
- Permet de collecter la liste des appareils à partir du cache ARP, même sans privilèges administrateur
- Pour les appareils découverts, affiche les informations du fabricant via une recherche OUI (Organizationally Unique Identifier)
- Licence Apache-2.0
Fonctionnalités principales
- Modern TUI : fournit une interface intuitive pour parcourir les appareils détectés
- Fast & Concurrent : fournit des résultats rapides en exécutant plusieurs méthodes d’exploration en parallèle
- No Elevated Privileges Required : peut être exécuté avec les seuls privilèges utilisateur
- Device Enrichment : affiche les informations du fabricant via une recherche OUI
- Integrated Port Scanner : inclut une fonction de scan des ports des hôtes découverts (scan recommandé uniquement sur des appareils autorisés)
- Daemon Mode with HTTP API : permet une exécution en arrière-plan et l’intégration avec des outils externes
- Theming & Configuration : personnalisation du thème et du comportement via un fichier de configuration YAML
Utilisation
- Exécuter le TUI :
whosthere - Exécuter le mode daemon HTTP API :
whosthere daemon --port 8080GET /devices: renvoie la liste de tous les appareils découvertsGET /device/{ip}: renvoie les informations détaillées d’un appareil spécifiqueGET /health: vérification de l’état
1 commentaires
Commentaires sur Hacker News
J’ai créé un outil TUI de découverte LAN écrit en Go. Il s’appelle Whosthere et a été conçu pour permettre d’explorer les appareils du réseau local sans privilèges administrateur
Il combine mDNS, SSDP, le cache ARP, la recherche OUI, etc. pour trouver les appareils, et prend en charge une UI rapide centrée sur le clavier basée sur tview, un scanner de ports intégré, un mode démon d’API HTTP et des fichiers de configuration YAML
C’est un projet réalisé pour apprendre Go et le réseau en même temps, inspiré par des applications TUI comme lazygit, k9s et dive
Installation possible via Homebrew ou
go install, avec prise en charge de Linux et macOSVoici les résultats sur mon réseau :
Il y a cette phrase célèbre : « Ceux qui ne se souviennent pas de nmap sont condamnés à le recréer maladroitement »
Partage d’un exemple de commande permettant de terminer un scan
/24en moins de 10 secondes sans privilèges rootVoir la documentation officielle de nmap
Il y a 5 ans, j’ai moi aussi créé un outil CLI similaire avec la même idée, et le nom était pratiquement le même : ktotu, la version polonaise de “whosthere”
Lien vers le projet ktotu
Cette version est bien plus aboutie, et le choix de Go est aussi une bonne décision. Je me demande si l’idée a été générée avec l’IA
Globalement, c’est un outil bien conçu. Ce serait bien d’avoir une option
-ipour spécifier l’interface à scanner.Sur mon portable, seul le premier scan fonctionnait correctement et ensuite je ne voyais plus de requêtes ARP
La configuration de l’interface est possible dans le fichier YAML, et il est prévu d’ajouter plus tard des flags en ligne de commande pour la régler aussi
Le nom aurait été plus amusant en whogoesthere
Je me demande si la bibliothèque standard de Go est particulièrement bonne pour tout ce qui touche au TUI. On dirait que tous les nouveaux TUI sont écrits en Go ces temps-ci
Ça aurait été plus malin de l’appeler Whose LAN is it anyway?
Excellente maîtrise technique. On dirait que tu entres vraiment dans la voie de l’ingénieur maintenant
On ne peut pas voir directement le trafic réseau, mais je vois souvent des gens essayer de diagnostiquer des problèmes sans ce genre d’outil
En pratique, des outils comme nmap, wireshark, LLDP, CDP sont indispensables, et pour les grands réseaux je recommande Netdisco
Il est intéressant de voir qu’au fond, les “TUI modernes” recréent une sorte de nostalgie des époques Turbo Vision, Clipper et curses
Je me demande si ça a été testé avec Tailscale. Ça pourrait être très utile, mais Tailscale ne prend toujours pas en charge mDNS
Lien vers l’issue correspondante