- 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
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 installe oferece suporte a Linux e macOSOs resultados na minha rede foram os seguintes:
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
/24em menos de 10 segundos sem privilégios de rootConsulte a documentação oficial do nmap
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
-ipara 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
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”
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
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