15 pontos por GN⁺ 2026-01-25 | 1 comentários | Compartilhar no WhatsApp
  • Whosthere é uma ferramenta de exploração de rede local escrita em Go que oferece uma interface intuitiva de usuário no terminal (TUI)
    • Permite descobrir e explorar dispositivos na LAN e entender a estrutura da rede
  • Compatível com Linux, macOS e Windows
  • Identifica dispositivos preenchendo o cache ARP por meio de scanners mDNS e SSDP, além de tentativas de conexão TCP/UDP
    • É possível coletar a lista de dispositivos usando o cache ARP mesmo sem privilégios de administrador
  • Para os dispositivos descobertos, exibe informações do fabricante por meio de consulta de OUI (Organizationally Unique Identifier)
  • Licença Apache-2.0

Principais recursos

  • TUI moderna: oferece uma interface para navegar intuitivamente pelos dispositivos descobertos
  • Rápido e concorrente: executa vários métodos de descoberta ao mesmo tempo para entregar resultados rapidamente
  • Não requer privilégios elevados: pode ser executado apenas com permissões de usuário
  • Enriquecimento de dispositivos: exibe informações do fabricante por meio de consulta de OUI
  • Scanner de portas integrado: inclui função de varredura de portas dos hosts descobertos (recomenda-se escanear apenas dispositivos autorizados)
  • Modo daemon com API HTTP: permite execução em segundo plano e integração com ferramentas externas
  • Temas e configuração: personalização do tema e do comportamento por meio de arquivo de configuração YAML

Como usar

  • Executar a TUI: whosthere
  • Executar no modo daemon com API HTTP: whosthere daemon --port 8080
    • GET /devices: retorna a lista de todos os dispositivos descobertos
    • GET /device/{ip}: retorna os detalhes de um dispositivo específico
    • GET /health: verificação de status

1 comentários

 
GN⁺ 2026-01-25
Comentários do Hacker News
  • Foi criada uma ferramenta TUI de descoberta de LAN em Go. Ela se chama Whosthere e foi projetada para permitir descobrir dispositivos na rede local sem privilégios de administrador
    Ela encontra dispositivos combinando mDNS, SSDP, cache ARP, consulta OUI etc., e oferece UI rápida baseada em teclado com tview, scanner de portas embutido, modo daemon com API HTTP e arquivo de configuração YAML
    É um projeto feito para aprender Go e redes ao mesmo tempo, com inspiração em apps TUI como lazygit, k9s e dive
    Pode ser instalada via Homebrew ou go install e oferece suporte a Linux e macOS

    • Ferramenta muito legal :-) Seria ótimo ter um recurso de reverse lookup de IP. Na minha LAN, dispositivos sem nome geralmente têm grande chance de serem intrusos
    • Era exatamente isso que eu estava procurando! Comparei com outros scanners, e o Advanced IP Scanner ainda foi o melhor em detecção de hostname.
      Os resultados na minha rede foram os seguintes:
      • Advanced IP Scanner: 80 nomes identificados de 309
      • Angry IP Scanner: 75 nomes identificados de 315
      • whosthere: 54 nomes identificados de 318
    • Instalei no Raspbian e funcionou muito bem. É muito melhor do que o código que improvisei ontem às pressas. Se tivesse um recurso para registrar em log os dispositivos recém-aparecidos, daria para usar até como um IDS simples
    • Legal! Eu também tive uma ideia parecida alguns dias atrás, então fico feliz em ver algo assim surgindo. Funcionou bem na minha rede também
    • Se é TUI, fiquei curioso sobre por que existe dependência de X11. Eu esperava que fosse baseado em ncurses
  • Existe uma frase famosa: “Aqueles que não se lembram do nmap estão condenados a recriá-lo mal”
    Foi compartilhado um exemplo de comando que termina uma varredura /24 em menos de 10 segundos sem privilégios de root
    Consulte a documentação oficial do nmap

    • Eu também uso nmap com frequência, mas esta ferramenta parece ter um objetivo diferente ou recursos adicionais em relação ao nmap. Fico curioso por que você acha que isso é um exemplo de alguém que ‘não se lembrou’ do nmap
    • LLDP e CDP provavelmente também gostariam de entrar na conversa
  • Há 5 anos eu também fiz uma ferramenta CLI parecida com a mesma ideia, e até o nome era igual, só que na versão polonesa de “whosthere”: ktotu
    Link do projeto ktotu
    Esta versão está muito mais polida, e escolher Go também foi uma boa decisão. Fico curioso se a ideia foi gerada com IA

  • No geral, é uma ferramenta bem feita. Seria bom poder usar a opção -i para especificar a interface a ser escaneada.
    No meu notebook, só a primeira varredura funcionou direito e depois disso não vi mais requisições ARP

    • Isso mesmo. Para reduzir a carga na rede, a varredura inicial tem as seguintes limitações:
      1. Escaneia apenas a sub-rede da interface especificada
      2. Permite no máximo até /16
      3. Executa apenas uma vez a cada 5 minutos (atualmente está hardcoded)
        A configuração da interface pode ser feita no arquivo YAML, e no futuro também poderá ser ajustada por flag de linha de comando
  • Teria sido mais divertido se o nome fosse “whogoesthere

    • Eu acho que “whodat” combina mais
  • Fico curioso se a biblioteca padrão do Go é especialmente boa para recursos de TUI. Parece que hoje em dia todos os novos TUIs são escritos em Go

    • Go tem compilação e execução rápidas e não tem restrições de build complexas como Rust
    • A biblioteca padrão quase não tem recursos relacionados a TUI, mas rivo/tview é muito sólida
    • Não está na biblioteca padrão, mas muitos TUIs populares em Go são feitos com base em Bubble Tea. Este projeto usa tview
  • O nome “Whose LAN is it anyway?” teria sido mais espirituoso

  • Excelente competência técnica. Parece que agora você realmente entrou no caminho do engenheiro
    Não dá para ver o tráfego de rede diretamente, mas vejo com frequência pessoas tentando diagnosticar problemas sem ferramentas como essa
    Na prática, ferramentas como nmap, wireshark, LLDP e CDP são essenciais, e para redes de grande porte eu recomendo Netdisco

  • É interessante como os “TUIs modernos” acabam recriando o visual retrô da era Turbo Vision, Clipper e curses

  • Fico curioso se alguém já testou isso no Tailscale. Pode ser muito útil, mas o Tailscale ainda não oferece suporte a mDNS
    Link da issue relacionada