Volver a actualizaciones
Nuevo releaseAug 20, 2026

whosthere v0.8.3

Herramienta de descubrimiento de red de área local con una interfaz de usuario de terminal interactiva (TUI) escrita en Go. Descubre, explora y comprende tu LAN de forma intuitiva. Toc, toc.. ¿quién es? 🚪

Compartir

Whosthere

Go Version License GitHub Downloads (all assets, all releases) GitHub Release GitHub Repo stars

Herramienta de descubrimiento de Red de Área Local con una Interfaz de Usuario de Terminal (TUI) interactiva escrita en Go. Descubre, explora y comprende tu LAN de forma intuitiva.

Whosthere realiza escaneos concurrentes y sin privilegios utilizando escáneres mDNS y SSDP. Además, barre la subred local intentando conexiones TCP/UDP para activar la resolución ARP, y luego lee la caché ARP para identificar dispositivos en tu Red de Área Local. Esta técnica llena la caché ARP sin requerir privilegios elevados. Todos los dispositivos descubiertos se enriquecen con búsquedas OUI para mostrar los fabricantes cuando estén disponibles.

Whosthere proporciona una forma amigable e intuitiva de responder a la pregunta que todo administrador de red se hace: "¿Quién está ahí en mi red?"

demo gif

Características

  • TUI Interactiva: Navega y explora los dispositivos descubiertos de forma intuitiva.
  • Rápido y Concurrente: Aprovecha múltiples métodos de descubrimiento simultáneamente.
  • No Requiere Privilegios Elevados: Se ejecuta completamente en espacio de usuario.
  • Enriquecimiento de Dispositivos: Utiliza búsqueda OUI para mostrar los fabricantes de los dispositivos.
  • Escáner de Puertos Integrado: Descubrimiento de servicios opcional en los hosts encontrados (¡solo escanea dispositivos con permiso!).
  • Modo Daemon con API HTTP: Ejecútalo en segundo plano e intégralo con otras herramientas.
  • Temas y Configuración: Personaliza la apariencia y el comportamiento mediante configuración YAML.

Instalación

Mediante Homebrew con brew:

brew install whosthere

En NixOS con nix:

nix profile install nixpkgs#whosthere

En Arch Linux con yay:

yay -S whosthere-bin

Si tu gestor de paquetes no aparece en la lista, siempre puedes instalar con Go:

go install github.com/ramonvermeulen/whosthere@latest

O compilar desde el código fuente:

git clone https://github.com/ramonvermeulen/whosthere.git
cd whosthere
make build

Además, puedes descargar binarios precompilados desde la página de releases.

Uso

Ejecuta la TUI para descubrimiento interactivo:

whosthere

Ejecuta como cli para hacer un único escaneo y mostrar los resultados:

whosthere scan -t 5

Muestra los resultados en un archivo JSON:

whosthere scan -t 5 --json --pretty > devices.json

Ejecuta como daemon con API HTTP:

whosthere daemon --port=8080

Se pueden encontrar opciones adicionales de línea de comandos ejecutando:

whosthere --help

Atajos de teclado (TUI)

TeclaAcción
/Iniciar búsqueda regex
kArriba
jAbajo
gIr al principio
GIr al final
yCopiar IP del dispositivo seleccionado
YCopiar MAC del dispositivo seleccionado
enterMostrar detalles del dispositivo
CTRL+tAlternar selector de tema
CTRL+iAlternar selector de interfaz
CTRL+c/qDetener la aplicación
ESCLimpiar búsqueda / Volver atrás
p (vista de detalles)Iniciar escaneo de puertos en el dispositivo
tab (vista modal)Cambiar selección de botón

Configuración

Whosthere admite múltiples métodos de configuración con la siguiente precedencia (de mayor a menor):

  1. Flags de línea de comandos - Máxima prioridad. Consulta whosthere --help para ver los flags disponibles.
  2. Variables de entorno - Prefijo WHOSTHERE__. Consulta Configuración mediante Variables de Entorno.
  3. Archivo de configuración - Archivo de configuración YAML. Consulta Archivo de Configuración.
  4. Valores predeterminados - Valores por defecto de respaldo. Consulta DefaultConfig() en config.go.

Archivo de Configuración

Whosthere busca el archivo de configuración en el siguiente orden, usando el primero que encuentre:

  1. Ruta especificada mediante el flag --config o la variable de entorno WHOSTHERE_CONFIG
  2. $XDG_CONFIG_HOME/whosthere/config.yaml (si XDG_CONFIG_HOME está definida)
  3. ~/.config/whosthere/config.yaml (ubicación predeterminada)

Configuración de ejemplo:

# Uncomment the next line to configure a specific network interface - uses OS default if not set
# network_interface: eth0

# When enabled, devices from all network interfaces are shown and persist when switching interfaces
# Note: if two interfaces share the same subnet (e.g. both use 192.168.1.x), devices may get merged
# since they are identified by IP address. Use with caution on overlapping subnets.
all_interfaces: false

# Optional IPv4 CIDR subnets to sweep. When set, the sweeper skips the auto-detected interface subnet unless it is listed here.
# target_subnets: ["10.0.0.0/24", "10.0.1.0/24"]

# WARNING: scanning subnets larger than /16 sends packets to 65535+ IPs per subnet. Enable only if you understand the traffic implications. Consider using smaller /24 subnets for targeted scanning.
# scan_large_subnets: false

# How often to run discovery scans
scan_interval: 20s

# Maximum timeout for each scan, recommended to be less than the scan interval
scan_timeout: 10s

scanners:
  mdns:
    enabled: true
  ssdp:
    enabled: true
  arp:
    enabled: true

sweeper:
  enabled: true
  interval: 5m
  timeout: 20s

port_scanner:
  timeout: 5s
  # List of TCP ports to scan on discovered devices
  tcp: [21, 22, 23, 25, 80, 110, 135, 139, 143, 389, 443, 445, 993, 995, 1433, 1521, 3306, 3389, 5432, 5900, 8080, 8443, 9000, 9090, 9200, 9300, 10000, 27017]

splash:
  enabled: true
  delay: 1s

theme:
  # When disabled, the TUI will use the terminal it's default ANSI colors
  # Also see the NO_COLOR environment variable to completely disable ANSI colors
  enabled: true

  # See the complete list of available themes at https://github.com/ramonvermeulen/whosthere/tree/main/internal/ui/theme/theme.go
  # Set name to "custom" to use the custom colors below
  # For any color that is not configured it will take the default theme value as fallback
  name: default

  # Disable ANSI colors completely, overrides theme.enabled
  # Can also be set via NO_COLOR or WHOSTHERE__THEME__NO_COLOR environment variables
  # no_color: false

Categorías