Torna agli aggiornamenti
New releaseAug 20, 2026

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 è? 🚪

Condividi

Whosthere

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

Strumento di rilevamento della rete locale con un'interfaccia utente terminale (TUI) interattiva scritto in Go. Scopri, esplora e comprendi la tua LAN in modo intuitivo.

Whosthere esegue scansioni senza privilegi e concorrenti utilizzando scanner mDNS e SSDP. Inoltre, esegue una scansione della subnet locale tentando connessioni TCP/UDP per attivare la risoluzione ARP, quindi legge la cache ARP per identificare i dispositivi sulla tua rete locale. 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 amichevole e intuitivo per rispondere alla domanda che ogni amministratore di rete si pone: "Chi c'è sulla mia rete?"

demo gif

Funzionalità

  • TUI interattiva: Naviga e esplora i dispositivi scoperti in modo intuitivo.
  • Veloce e concorrente: Sfrutta più metodi di rilevamento contemporaneamente.
  • Nessun privilegio elevato richiesto: Funziona interamente nello spazio utente.
  • Arricchimento dei dispositivi: Utilizza la ricerca OUI per mostrare i produttori dei dispositivi.
  • Scanner di porte integrato: Rilevamento opzionale dei servizi sugli host trovati (scansiona solo i dispositivi con autorizzazione!).
  • Modalità demone con API HTTP: Esegui in background e integra con altri strumenti.
  • Tema e configurazione: Personalizza l'aspetto e il comportamento tramite file di 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 dal sorgente:

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

Inoltre, puoi scaricare i binari precompilati dalla pagina delle release.

Utilizzo

Esegui la TUI per il rilevamento interattivo:

whosthere

Esegui come CLI per una singola scansione e output dei risultati:

whosthere scan -t 5

Output dei risultati in un file JSON:

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

Esegui come demone con API HTTP:

whosthere daemon --port=8080

Opzioni aggiuntive della riga di comando sono disponibili eseguendo:

whosthere --help

Tasti rapidi (TUI)

TastoAzione
/Avvia ricerca regex
kSu
jGiù
gVai all'inizio
GVai alla fine
yCopia IP del dispositivo selezionato
YCopia MAC del dispositivo selezionato
enterMostra dettagli dispositivo
CTRL+tAttiva/disattiva selettore tema
CTRL+iAttiva/disattiva selettore interfaccia
CTRL+c/qArresta applicazione
ESCCancella ricerca / Torna indietro
p (vista dettagli)Avvia scansione porte sul dispositivo
tab (vista modale)Cambia selezione pulsante

Configurazione

Whosthere supporta più metodi di configurazione con la seguente priorità (dalla più alta alla più bassa):

  1. Flag della riga di comando - Priorità più alta. Vedi whosthere --help per i flag disponibili.
  2. Variabili d'ambiente - Prefisso con WHOSTHERE__. Vedi Configurazione tramite variabili d'ambiente.
  3. File di configurazione - File di configurazione YAML. Vedi File di configurazione.
  4. Valori predefiniti - Valori predefiniti di fallback. Vedi DefaultConfig() in config.go.

File di configurazione

Whosthere cerca il file di configurazione nel seguente ordine, utilizzando il primo trovato:

  1. Percorso specificato tramite flag --config o variabile d'ambiente WHOSTHERE_CONFIG
  2. $XDG_CONFIG_HOME/whosthere/config.yaml (se XDG_CONFIG_HOME è impostato)
  3. ~/.config/whosthere/config.yaml (posizione predefinita)

Esempio di configurazione:

# Decommenta la riga successiva per configurare un'interfaccia di rete specifica - utilizza l'impostazione predefinita del sistema se non impostata
# network_interface: eth0

# Quando abilitato, i dispositivi di tutte le interfacce di rete vengono mostrati e persistono quando si cambia interfaccia
# Nota: se due interfacce condividono la stessa subnet (es. entrambe usano 192.168.1.x), i dispositivi potrebbero essere uniti
# poiché sono identificati dall'indirizzo IP. Usare con cautela su subnet sovrapposte.
all_interfaces: false

# Ogni quanto eseguire le scansioni di rilevamento
scan_interval: 20s

# Timeout massimo per ogni scansione, consigliato inferiore all'intervallo di scansione
scan_timeout: 10s

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

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

port_scanner:
  timeout: 5s
  # Elenco delle porte TCP da scansionare sui dispositivi scoperti
  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:
  # Quando disabilitato, la TUI utilizzerà i colori ANSI predefiniti del terminale
  # Vedi anche la variabile d'ambiente NO_COLOR per disabilitare completamente i colori ANSI
  enabled: true

  # Vedi l'elenco completo dei temi disponibili su https://github.com/ramonvermeulen/whosthere/tree/main/internal/ui/theme/theme.go
  # Imposta "custom" per utilizzare i colori personalizzati sottostanti
  # Per qualsiasi colore non configurato, verrà utilizzato il valore predefinito del tema come fallback
  name: default

  # Disabilita completamente i colori ANSI, sovrascrive theme.enabled
  # Può anche essere impostato tramite variabili d'ambiente NO_COLOR o WHOSTHERE__THEME__NO_COLOR
  # no_color: false

  # Colori del tema personalizzato (decommentare e impostare name: custom per utilizzarli)
  # primitive_background_color: "#000a1a"
  # contrast_background_color: "#001a33"
  # more_contrast_background_color: "#003366"
  # border_color: "#0088ff"
  # title_color: "#00ffff"
  # graphics_color: "#00ffaa"
  # primary_text_color: "#cceeff"
  # secondary_text_color: "#6699ff"
  # tertiary_text_color: "#ffaa00"
  # inverse_text_color: "#000a1a"
  # contrast_secondary_text_color: "#88ddff"

Variabili d'ambiente

Variabili d'ambiente generali

VariabileDescrizione
WHOSTHERE_CONFIGPercorso del file di configurazione, per sovrascrivere la posizione predefinita.
WHOSTHERE_LOGImposta il livello di log (es. debug, info, warn, error). Il valore predefinito è info.
NO_COLORDisabilita i colori ANSI nella TUI.

Configurazione tramite variabili d'ambiente

Qualsiasi opzione di configurazione disponibile nel file YAML può essere impostata tramite variabili d'ambiente utilizzando il prefisso WHOSTHERE__ (nota il doppio underscore). Le chiavi di configurazione nidificate sono separate da doppi underscore e le chiavi non fanno distinzione tra maiuscole e minuscole.

Esempi:

  • WHOSTHERE__SPLASH__ENABLED=false - Disabilita la schermata iniziale, equivalente a splash.enabled: false nel file YAML
  • WHOSTHERE__SPLASH__DELAY=2s - Imposta il ritardo della schermata iniziale a 2 secondi, equivalente a splash.delay: 2s nel file YAML
  • WHOSTHERE__SCAN_INTERVAL=30s - Imposta l'intervallo di scansione a 30 secondi, equivalente a scan_interval: 30s nel file YAML
  • WHOSTHERE__SCANNERS__MDNS__ENABLED=false - Disabilita lo scanner mDNS, equivalente a scanners.mdns.enabled: false nel file YAML
  • WHOSTHERE__PORT_SCANNER__TCP=80,443,8080 - Imposta porte TCP personalizzate da scansionare, equivalente a port_scanner.tcp: [80, 443, 8080] nel file YAML
  • WHOSTHERE__THEME__NAME=cyberpunk - Imposta il tema su cyberpunk, equivalente a theme.name: cyberpunk nel file YAML

Modalità demone API HTTP

Quando si esegue Whosthere in modalità demone, espone un'API HTTP molto semplice con i seguenti endpoint:

MetodoEndpointDescrizione
GET/devicesOttieni l'elenco di tutti i dispositivi scoperti
GET/device/{ip}Ottieni i dettagli di un dispositivo specifico
GET/healthControllo dello stato

Temi

Il tema può essere configurato tramite il file di configurazione o in fase di esecuzione tramite il tasto CTRL+t. L'elenco completo dei temi disponibili è disponibile qui, sentiti libero di aprire una PR per aggiungere il tuo tema!

Esempio di configurazione del tema:

theme:
  enabled: true
  name: cyberpunk

Quando name è impostato su custom, è possibile utilizzare le altre opzioni di colore per creare un tema personalizzato. Quando l'opzione enabled è impostata su false, la TUI utilizzerà i colori ANSI predefiniti del terminale. Quando è impostata la variabile d'ambiente NO_COLOR, tutti i colori ANSI saranno disabilitati.

Log

I log vengono scritti nella directory di stato dell'applicazione:

  • $XDG_STATE_HOME/whosthere/app.log (se XDG_STATE_HOME è impostato)
  • ~/.local/state/whosthere/app.log (fallback Linux/MacOS)
  • %LOCALAPPDATA%/whosthere/app.log (fallback Windows)

Quando non si è in modalità TUI, i log vengono anche scritti sulla console.

Piattaforme

Whosthere è supportato sulle seguenti piattaforme:

  • Linux
  • macOS
  • Windows

Problemi noti

Per far funzionare la funzionalità degli appunti, viene utilizzato un fork di go-clipboard. Assicurati di avere lo strumento di copia appropriato installato per il tuo sistema operativo:

Sistema operativoStrumenti di copia supportati
Darwinpbcopy
Windowsclip.exe
Linux/FreeBSD/NetBSD/OpenBSD/DragonflyX11: xsel, xclip
Wayland: wl-copy

Dichiarazione di non responsabilità

Whosthere è pensato per essere utilizzato su reti in cui hai il permesso di eseguire rilevamento e scansione della rete, come la tua rete domestica. La scansione non autorizzata delle reti può essere illegale e non etica. Ottieni sempre la dovuta autorizzazione prima di utilizzare questo strumento su qualsiasi rete.

Questo strumento è stato creato principalmente per scopi educativi e per l'esplorazione della rete domestica. Sebbene funzionale e utile, non deve essere considerato una soluzione di monitoraggio di rete professionale. I risultati si basano su tecniche di scansione senza privilegi e potrebbero non essere esaustivi. Per analisi di rete critiche o valutazioni di sicurezza, considera l'utilizzo di strumenti professionali consolidati con supporto formale.

Contributi

Contributi e suggerimenti come richieste di funzionalità, segnalazioni di bug o miglioramenti sono benvenuti! Sentiti libero di aprire issue o inviare pull request sul repository GitHub. Assicurati di discutere eventuali modifiche importanti su una issue di GitHub prima di implementarle.

Categorie