
whosthere v0.8.3
Ferramenta de descoberta de rede local com uma Interface de Utilizador de Terminal (TUI) interativa escrita em Go. Descubra, explore e compreenda a sua LAN de forma intuitiva. Toc Toc.. quem está aí? 🚪
Whosthere
Ferramenta de descoberta de Rede Local (LAN) com uma Interface de Usuário de Terminal (TUI) interativa escrita em Go. Descubra, explore e entenda sua LAN de forma intuitiva.
O Whosthere realiza varreduras concorrentes e sem privilégios usando scanners mDNS e SSDP. Além disso, ele varre a sub-rede local tentando conexões TCP/UDP para acionar a resolução ARP, e então lê o cache ARP para identificar dispositivos na sua Rede Local. Essa técnica preenche o cache ARP sem exigir privilégios elevados. Todos os dispositivos descobertos são enriquecidos com consultas OUI para exibir os fabricantes quando disponíveis.
O Whosthere oferece uma maneira amigável e intuitiva de responder à pergunta que todo administrador de rede faz: "Quem está aí na minha rede?"

Recursos
- TUI Interativa: Navegue e explore os dispositivos descobertos de forma intuitiva.
- Rápido e Concorrente: Aproveita múltiplos métodos de descoberta simultaneamente.
- Não Requer Privilégios Elevados: Executa inteiramente no espaço do usuário.
- Enriquecimento de Dispositivos: Usa consulta OUI para mostrar os fabricantes dos dispositivos.
- Scanner de Portas Integrado: Descoberta opcional de serviços em hosts encontrados (escaneie apenas dispositivos com permissão!).
- Modo Daemon com API HTTP: Execute em segundo plano e integre com outras ferramentas.
- Temas e Configuração: Personalize a aparência e o comportamento via configuração YAML.
Instalação
Via Homebrew com brew:
brew install whosthere
No NixOS com nix:
nix profile install nixpkgs#whosthere
No Arch Linux com yay:
yay -S whosthere-bin
Se o seu gerenciador de pacotes não estiver listado, você sempre pode instalar com Go:
go install github.com/ramonvermeulen/whosthere@latest
Ou compilar a partir do código-fonte:
git clone https://github.com/ramonvermeulen/whosthere.git
cd whosthere
make build
Além disso, você pode baixar binários pré-compilados na página de releases.
Uso
Execute a TUI para descoberta interativa:
whosthere
Execute como CLI para fazer uma única varredura e exibir os resultados:
whosthere scan -t 5
Exiba os resultados em um arquivo JSON:
whosthere scan -t 5 --json --pretty > devices.json
Execute como daemon com API HTTP:
whosthere daemon --port=8080
Opções adicionais de linha de comando podem ser encontradas executando:
whosthere --help
Atalhos de teclado (TUI)
| Tecla | Ação |
|---|---|
/ | Iniciar busca por regex |
k | Para cima |
j | Para baixo |
g | Ir para o topo |
G | Ir para o final |
y | Copiar IP do dispositivo selecionado |
Y | Copiar MAC do dispositivo selecionado |
enter | Mostrar detalhes do dispositivo |
CTRL+t | Alternar seletor de tema |
CTRL+i | Alternar seletor de interface |
CTRL+c/q | Parar aplicação |
ESC | Limpar busca / Voltar |
p (visualização de detalhes) | Iniciar varredura de portas no dispositivo |
tab (visualização modal) | Alternar seleção de botão |
Configuração
O Whosthere suporta múltiplos métodos de configuração com a seguinte precedência (da maior para a menor):
- Flags de linha de comando - Maior prioridade. Veja
whosthere --helppara as flags disponíveis. - Variáveis de ambiente - Prefixo
WHOSTHERE__. Veja Configuração via Variáveis de Ambiente. - Arquivo de configuração - Arquivo de configuração YAML. Veja Arquivo de Configuração.
- Valores padrão - Padrões de fallback. Veja
DefaultConfig()em config.go.
Arquivo de Configuração
O Whosthere procura o arquivo de configuração na seguinte ordem, usando o primeiro encontrado:
- Caminho especificado via flag
--configou variável de ambienteWHOSTHERE_CONFIG $XDG_CONFIG_HOME/whosthere/config.yaml(seXDG_CONFIG_HOMEestiver definido)~/.config/whosthere/config.yaml(local padrão)
Exemplo de configuração:
# 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