15 points par GN⁺ 2026-01-25 | 1 commentaires | Partager sur WhatsApp
  • 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 8080
    • GET /devices : renvoie la liste de tous les appareils découverts
    • GET /device/{ip} : renvoie les informations détaillées d’un appareil spécifique
    • GET /health : vérification de l’état

1 commentaires

 
GN⁺ 2026-01-25
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 macOS

    • Très bel outil :-) Ce serait bien d’avoir une fonction de reverse lookup pour les IP. Sur mon LAN, les appareils sans nom ont de fortes chances d’être des intrus
    • C’est exactement le genre de chose que je cherchais ! Je l’ai comparé à d’autres scanners, et Advanced IP Scanner reste le meilleur pour la détection des noms d’hôte.
      Voici les résultats sur mon réseau :
      • Advanced IP Scanner : 80 noms trouvés sur 309
      • Angry IP Scanner : 75 noms trouvés sur 315
      • whosthere : 54 noms trouvés sur 318
    • Je l’ai installé sur Raspbian et ça marche très bien. C’est bien meilleur que le code bricolé à la va-vite que j’ai fait hier. S’il y avait une fonction pour journaliser les nouveaux appareils détectés, on pourrait même s’en servir comme IDS simple
    • Super ! J’avais eu une idée similaire il y a quelques jours, donc je suis content de voir ça sortir. Ça fonctionne bien aussi sur mon réseau
    • Puisque c’est un TUI, je me demande pourquoi il y a une dépendance X11. Je m’attendais à quelque chose basé sur ncurses
  • 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 /24 en moins de 10 secondes sans privilèges root
    Voir la documentation officielle de nmap

    • J’utilise souvent nmap moi aussi, mais cet outil semble avoir un objectif différent ou des fonctions supplémentaires par rapport à nmap. Je me demande pourquoi tu y vois un exemple de quelqu’un qui n’aurait pas “retenu” nmap
    • LLDP et CDP voudraient sans doute aussi participer à la conversation
  • 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 -i pour spécifier l’interface à scanner.
    Sur mon portable, seul le premier scan fonctionnait correctement et ensuite je ne voyais plus de requêtes ARP

    • Oui. Pour réduire la charge réseau, le scan initial a actuellement les limitations suivantes :
      1. scan uniquement le sous-réseau de l’interface spécifiée
      2. limité à un maximum de /16
      3. exécution au plus une fois toutes les 5 minutes (c’est actuellement codé en dur)
        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 trouve que whodat collerait encore mieux
  • 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

    • Go a l’avantage d’être rapide à compiler et à exécuter, sans les contraintes de build complexes qu’on peut avoir avec Rust
    • Il n’y a presque rien sur les TUI dans la bibliothèque standard, mais rivo/tview est vraiment très solide
    • Il n’y a rien dans la standard, mais beaucoup de TUI populaires en Go sont construits sur Bubble Tea. Ce projet, lui, utilise tview
  • Ç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