
whosthere v0.8.3
Strumento di scoperta di reti locali (LAN) con un'interfaccia utente terminale interattiva (TUI) scritto in Go. Scopri, esplora e comprendi la tua LAN in modo intuitivo. Toc toc.. chi è? 🚪
Whosthere
Strumento di discovery per Local Area Network con un'interfaccia utente a terminale (TUI) interattiva scritto in Go. Scopri, esplora e comprendi la tua LAN in modo intuitivo.
Whosthere esegue scansioni concorrenti e senza privilegi utilizzando gli scanner mDNS e SSDP. Inoltre, esegue una scansione della sottorete locale tentando connessioni TCP/UDP per attivare la risoluzione ARP, quindi legge la cache ARP per identificare i dispositivi sulla tua Local Area Network. Questa tecnica popola la cache ARP senza richiedere privilegi elevati. Tutti i dispositivi scoperti vengono arricchiti con ricerche OUI per mostrare i produttori quando disponibili.
Whosthere fornisce un modo semplice e intuitivo per rispondere alla domanda che ogni amministratore di rete si pone: "Chi c'è sulla mia rete?"

Funzionalità
- TUI interattiva: Naviga ed esplora i dispositivi scoperti in modo intuitivo.
- Veloce e concorrente: Sfrutta più metodi di discovery simultaneamente.
- Nessun privilegio elevato richiesto: Funziona interamente in user-space.
- Arricchimento dei dispositivi: Utilizza la ricerca OUI per mostrare i produttori dei dispositivi.
- Port Scanner integrato: Discovery opzionale dei servizi sugli host trovati (scansiona solo i dispositivi per cui hai il permesso!).
- Modalità Daemon con API HTTP: Esegui in background e integra con altri strumenti.
- Temi e configurazione: Personalizza l'aspetto e il comportamento tramite configurazione YAML.
Installazione
Tramite Homebrew con brew:
brew install whosthere
Su NixOS con nix:
nix profile install nixpkgs#whosthere
Su Arch Linux con yay:
yay -S whosthere-bin
Se il tuo gestore di pacchetti non è elencato, puoi sempre installare con Go:
go install github.com/ramonvermeulen/whosthere@latest
Oppure compila dai sorgenti:
git clone https://github.com/ramonvermeulen/whosthere.git
cd whosthere
make build
Inoltre, puoi scaricare binari precompilati dalla pagina delle release.
Utilizzo
Avvia la TUI per la discovery interattiva:
whosthere
Esegui come CLI per effettuare una singola scansione e mostrare i risultati:
whosthere scan -t 5
Esporta i risultati in un file JSON:
whosthere scan -t 5 --json --pretty > devices.json
Esegui come daemon con API HTTP:
whosthere daemon --port=8080
Ulteriori opzioni da riga di comando sono disponibili eseguendo:
whosthere --help
Scorciatoie da tastiera (TUI)
| Tasto | Azione |
|---|---|
/ | Avvia ricerca regex |
k | Su |
j | Giù |
g | Vai in cima |
G | Vai in fondo |
y | Copia IP del dispositivo selezionato |
Y | Copia MAC del dispositivo selezionato |
enter | Mostra dettagli dispositivo |
CTRL+t | Attiva/disattiva selettore tema |
CTRL+i | Attiva/disattiva selettore interfaccia |
CTRL+c/q | Arresta l'applicazione |
ESC | Cancella ricerca / Torna indietro |
p (vista dettagli) | Avvia scansione porte sul dispositivo |
tab (vista modale) | Cambia selezione pulsante |
Configurazione
Whosthere supporta diversi metodi di configurazione con la seguente precedenza (dalla più alta alla più bassa):
- Flag da riga di comando - Priorità più alta. Vedi
whosthere --helpper i flag disponibili. - Variabili d'ambiente - Prefisso
WHOSTHERE__. Vedi Configurazione tramite variabili d'ambiente. - File di configurazione - File di configurazione YAML. Vedi File di configurazione.
- Valori predefiniti - Valori di fallback predefiniti. Vedi
DefaultConfig()in config.go.
File di configurazione
Whosthere cerca il file di configurazione nel seguente ordine, utilizzando il primo trovato:
- Percorso specificato tramite il flag
--configo la variabile d'ambienteWHOSTHERE_CONFIG $XDG_CONFIG_HOME/whosthere/config.yaml(seXDG_CONFIG_HOMEè impostata)~/.config/whosthere/config.yaml(posizione predefinita)
Configurazione di esempio:
# 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