- Whosthere es una herramienta de exploración de red local escrita en Go que ofrece una interfaz de usuario de terminal (TUI) intuitiva
- Permite descubrir y explorar dispositivos dentro de la LAN, y comprender la estructura de la red
- Compatible con Linux, macOS y Windows
- Identifica dispositivos mediante mDNS, escáneres SSDP e intentos de conexión TCP/UDP para llenar la caché ARP
- Es posible recopilar la lista de dispositivos usando la caché ARP incluso sin privilegios de administrador
- Para los dispositivos detectados, muestra información del fabricante mediante búsqueda de OUI (Organizationally Unique Identifier)
- Licencia Apache-2.0
Funciones principales
- TUI moderna: ofrece una interfaz para explorar intuitivamente los dispositivos detectados
- Rápido y concurrente: realiza varios métodos de exploración al mismo tiempo para ofrecer resultados rápidos
- No requiere privilegios elevados: puede ejecutarse solo con permisos de usuario
- Enriquecimiento de dispositivos: muestra información del fabricante mediante búsqueda de OUI
- Escáner de puertos integrado: incluye función de escaneo de puertos para los hosts descubiertos (se recomienda escanear solo dispositivos autorizados)
- Modo daemon con API HTTP: permite ejecución en segundo plano e integración con herramientas externas
- Temas y configuración: personalización de temas y comportamiento mediante archivo de configuración YAML
Uso
- Ejecutar la TUI:
whosthere
- Ejecutar el modo daemon con API HTTP:
whosthere daemon --port 8080
GET /devices: devuelve la lista de todos los dispositivos descubiertos
GET /device/{ip}: devuelve los detalles de un dispositivo específico
GET /health: verificación de estado
1 comentarios
Comentarios de Hacker News
Creó una herramienta TUI de descubrimiento LAN escrita en Go. Se llama Whosthere y fue diseñada para permitir explorar dispositivos de la red local sin privilegios de administrador
Combina mDNS, SSDP, caché ARP, consultas OUI y más para encontrar dispositivos, y ofrece una UI rápida centrada en teclado basada en tview, escáner de puertos integrado, modo daemon con API HTTP y archivo de configuración YAML
Es un proyecto hecho para aprender Go y redes al mismo tiempo, inspirado en apps TUI como lazygit, k9s y dive
Se puede instalar con Homebrew o
go install, y es compatible con Linux y macOSLos resultados en mi red fueron estos:
Existe una frase famosa: “quien no recuerda nmap está condenado a rehacerlo torpemente”
Comparten un ejemplo de comando que puede terminar un escaneo de
/24en menos de 10 segundos sin permisos de rootRecomiendan consultar la documentación oficial de nmap
Hace 5 años yo también hice una herramienta CLI parecida con la misma idea, y hasta el nombre era igual: la versión polaca de “whosthere”, ktotu
Enlace al proyecto ktotu
Esta versión está mucho más pulida, y elegir Go también fue una buena decisión. Me pregunto si la idea se generó con IA
En general es una herramienta bien hecha. Estaría bien poder especificar la interfaz a escanear con la opción
-i.En mi laptop solo el primer escaneo funcionó bien, y después ya no vi solicitudes ARP
La configuración de la interfaz se puede hacer en el archivo YAML, y más adelante también se podrá ajustar con flags de línea de comandos
Habría sido más divertido llamarlo “whogoesthere”
Me pregunto si la biblioteca estándar de Go tiene funciones especialmente buenas para TUI. Últimamente parece que todas las TUI nuevas están hechas en Go
Habría sido más ingenioso llamarlo “Whose LAN is it anyway?”
Es una gran muestra de capacidad técnica. Parece que ya entró de verdad en el camino del ingeniero
No se puede ver directamente el tráfico de red, pero a menudo veo gente intentando diagnosticar problemas sin herramientas como esta
En la práctica, herramientas como nmap, wireshark, LLDP y CDP son indispensables, y para redes grandes recomiendan Netdisco
Es interesante cómo las “TUI modernas” al final están recreando la estética retro de la época de Turbo Vision, Clipper y curses
Me pregunto si alguien ya lo probó con Tailscale. Podría ser muy útil, aunque Tailscale todavía no soporta mDNS
Enlace al issue relacionado