Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
whosthere — 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 è? 🚪 | Kitploit
Strumenti/GitHubGitHub/ramonvermeulen/whosthere
RicognizioneMappatura della ReteScansione PorteRaccolta InformazioniUtilità e FrameworkAnalisi DNS
GitHubramonvermeulen/whosthere

whosthere

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

Vedi Repository
2.4k72412 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
# Whosthere

[![Go Version](https://img.shields.io/github/go-mod/go-version/ramonvermeulen/whosthere)](https://go.dev/doc/devel/release)
[![License](https://img.shields.io/github/license/ramonvermeulen/whosthere)](LICENSE)
[![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/ramonvermeulen/whosthere/total)](https://github.com/ramonvermeulen/whosthere/releases)
[![GitHub Release](https://img.shields.io/github/v/release/ramonvermeulen/whosthere)](https://github.com/ramonvermeulen/whosthere/releases)
[![GitHub Repo stars](https://img.shields.io/github/stars/ramonvermeulen/whosthere)](https://github.com/ramonvermeulen/whosthere)

Strumento di discovery della Local Area Network con un'interfaccia utente a terminale (TUI) interattiva scritta in Go.
Scopri, esplora e comprendi la tua LAN in modo intuitivo.

Whosthere esegue **scansioni concorrenti e senza privilegi** utilizzando gli scanner [**mDNS**](https://en.wikipedia.org/wiki/Multicast_DNS)
e [**SSDP**](https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol). Inoltre, esegue una scansione della
sottorete locale tentando connessioni TCP/UDP per attivare la risoluzione ARP, quindi legge la
[**cache ARP**](https://en.wikipedia.org/wiki/Address_Resolution_Protocol) per identificare i dispositivi sulla tua Local Area Network.
Questa tecnica popola la cache ARP senza richiedere privilegi elevati. Tutti i dispositivi rilevati vengono arricchiti con
ricerche [**OUI**](https://standards-oui.ieee.org/) 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?"

![demo gif](https://assets.kitploit.com/production/public/readmes/11043/f5ed4cd52c401eadc086ff46c39e8c17319438e11c3e79902fc21019128e99e7.gif)

## Funzionalità

- **TUI interattiva:** Naviga ed esplora i dispositivi rilevati in modo intuitivo.
- **Veloce e concorrente:** Sfrutta più metodi di discovery simultaneamente.
- **Nessun privilegio elevato richiesto:** Funziona interamente nello spazio utente.
- **Arricchimento dei dispositivi:** Utilizza la ricerca [**OUI**](https://standards-oui.ieee.org/) 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**](https://brew.sh/) con `brew`:

```bash
brew install whosthere
```

Su [**NixOS**](https://nixos.org/) con `nix`:

```bash
nix profile install nixpkgs#whosthere
```

Su [**Arch Linux**](https://archlinux.org/) con `yay`:

```bash
yay -S whosthere-bin
```

Se il tuo gestore di pacchetti non è elencato, puoi sempre installare con [**Go**](https://go.dev/):

```bash
go install github.com/ramonvermeulen/whosthere@latest
```

Oppure **compila dai sorgenti**:

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

Inoltre, puoi scaricare binari precompilati dalla
[**pagina delle release**](https://github.com/ramonvermeulen/whosthere/releases).

## Utilizzo

Avvia la TUI per la discovery interattiva:

```bash
whosthere
```

Esegui come CLI per effettuare una singola scansione e mostrare i risultati:

```bash
whosthere scan -t 5
```

Esporta i risultati in un file JSON:

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

Esegui come daemon con API HTTP:

```bash
whosthere daemon --port=8080
```

Importa alias in blocco da un file, oppure esporta quelli correnti:

```text
whosthere aliases import ./aliases.yaml
whosthere aliases export --stdout
```

Ulteriori opzioni da riga di comando sono disponibili eseguendo:

```bash
whosthere --help
```

## Scorciatoie da tastiera (TUI)

| Tasto              | Azione                          |
| ------------------ | ------------------------------- |
| `/`                | Avvia la ricerca regex          |
| `k`                | Su                              |
| `j`                | Giù                             |
| `g`                | Vai in cima                     |
| `G`                | Vai in fondo                    |
| `y`                | Copia l'IP del dispositivo selezionato  |
| `Y`                | Copia il MAC del dispositivo selezionato |
| `enter`            | Mostra i dettagli del dispositivo |
| `CTRL+t`           | Attiva/disattiva il selettore di tema |
| `CTRL+i`           | Attiva/disattiva il selettore di interfaccia |
| `CTRL+c`/`q`       | Arresta l'applicazione          |
| `ESC`              | Cancella la ricerca / Torna indietro |
| `p` (vista dettagli) | Avvia la scansione delle porte sul dispositivo |
| `tab` (vista modale) | Cambia la selezione del pulsante |

## Configurazione

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

1. **Flag da riga di comando** - Priorità più alta. Vedi `whosthere --help` per i flag disponibili.
1. **Variabili d'ambiente** - Prefisso `WHOSTHERE__`. Vedi [**Configurazione tramite variabili d'ambiente**](#configurazione-tramite-variabili-dambiente).
1. **File di configurazione** - File di configurazione YAML. Vedi [**File di configurazione**](#file-di-configurazione).
1. **Valori predefiniti** - Valori di fallback predefiniti. Vedi `DefaultConfig()` in [**config.go**](https://github.com/ramonvermeulen/whosthere/blob/main/internal/core/config/config.go).

### File di configurazione

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

1. Percorso specificato tramite il flag `--config` o la variabile d'ambiente `WHOSTHERE_CONFIG`
1. `$XDG_CONFIG_HOME/whosthere/config.yaml` (se `XDG_CONFIG_HOME` è impostata)
1. `~/.config/whosthere/config.yaml` (posizione predefinita)

**Configurazione di esempio:**

```yaml
# 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

  # Custom theme colors (uncomment and set name: custom to use)
  # 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"

aliases:
  # Uncomment to import aliases.yaml into the local database on startup (only when it changed)
  # auto_import: false
  # Override the aliases file path - defaults to the app config directory
  # file: "/path/to/aliases.yaml"
```

## Variabili d'ambiente

### Variabili d'ambiente generali

| Variabile          | Descrizione                                                                     |
| ------------------ | ------------------------------------------------------------------------------- |
| `WHOSTHERE_CONFIG` | Percorso del file di configurazione, per poter sovrascrivere la posizione predefinita.   |
| `WHOSTHERE_LOG`    | Imposta il livello di log (es. `debug`, `info`, `warn`, `error`). Predefinito a `info`. |
| `NO_COLOR`         | Disabilita 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 usando il
prefisso `WHOSTHERE__` (nota il doppio underscore). Le chiavi di configurazione annidate sono separate da doppi underscore, e
le chiavi non sono sensibili alle maiuscole/minuscole.

Esempi:

- `WHOSTHERE__SPLASH__ENABLED=false` - Disabilita la schermata iniziale, equivalente a `splash.enabled: false` nella configurazione YAML
- `WHOSTHERE__SPLASH__DELAY=2s` - Imposta il ritardo della schermata iniziale a 2 secondi, equivalente a `splash.delay: 2s` nella configurazione YAML
- `WHOSTHERE__SCAN_INTERVAL=30s` - Imposta l'intervallo di scansione a 30 secondi, equivalente a `scan_interval: 30s` nella configurazione YAML
- `WHOSTHERE__TARGET_SUBNETS=10.0.0.0/24,10.0.1.0/24` - Imposta le sottoreti di destinazione, equivalente a `target_subnets: ["10.0.0.0/24", "10.0.1.0/24"]` nella configurazione YAML
- `WHOSTHERE__SCANNERS__MDNS__ENABLED=false` - Disabilita lo scanner mDNS, equivalente a `scanners.mdns.enabled: false` nella configurazione YAML
- `WHOSTHERE__PORT_SCANNER__TCP=80,443,8080` - Imposta porte TCP personalizzate da scansionare, equivalente a `port_scanner.tcp: [80, 443, 8080]` nella configurazione YAML
- `WHOSTHERE__THEME__NAME=cyberpunk` - Imposta il tema a cyberpunk, equivalente a `theme.name: cyberpunk` nella configurazione YAML

## Alias dei dispositivi

Gli alias risiedono in un database locale [bbolt](https://github.com/etcd-io/bbolt) nella directory di stato. Per
impostarne molti contemporaneamente, importali da un file YAML (`aliases.yaml` nella directory di configurazione; sovrascrivibile con
la chiave di configurazione `aliases.file` o un argomento di percorso).

Il file è una **patch, non uno specchio**, ed è sempre e solo letto: l'importazione inserisce o aggiorna i MAC che contiene
e lascia gli altri intatti, e le modifiche dalla TUI **non vengono mai riscritte nel file**. Usa `export` per
rigenerarlo.

```yaml
version: 1
aliases:
  aa:bb:cc:dd:ee:ff: "Living Room TV"
  de:ad:be:ef:00:01: "Office Printer"
```

- `version` è la versione del formato del file; usa `1` (i file senza di essa predefiniscono a 1).
- I MAC sono accettati in qualsiasi formato comune e normalizzati, quindi `AA:BB:CC:DD:EE:FF`, `aa-bb-cc-dd-ee-ff`
  e `aabbccddeeff` sono equivalenti. Un alias vuoto (`""`) ne cancella uno.
- I MAC non validi vengono saltati e segnalati; il resto dell'importazione viene comunque eseguito.

```bash
whosthere aliases import            # from the default location
whosthere aliases import ./aliases.yaml
whosthere aliases export            # to the default location
whosthere aliases export --stdout   # to stdout
```

Attiva l'importazione all'avvio con `aliases.auto_import: true`. Il file viene verificato tramite hash e reimportato
solo quando è cambiato, quindi un file non modificato non sovrascrive mai le tue modifiche dalla TUI — ma un **file
modificato sovrascrive** gli alias per ogni MAC che contiene. Mantieni gli alias creati solo dalla TUI fuori dal file,
oppure esegui `export` dopo la modifica per mantenerlo sincronizzato.

## API HTTP in modalità daemon

Quando Whosthere viene eseguito in modalità daemon, espone un'API HTTP molto semplice con i seguenti endpoint:

| Metodo | Endpoint       | Descrizione                        |
| ------ | -------------- | ---------------------------------- |
| GET    | `/devices`     | Ottieni l'elenco di tutti i dispositivi rilevati |
| GET    | `/device/{ip}` | Ottieni i dettagli di un dispositivo specifico   |
| GET    | `/health`      | Controllo dello stato                       |

## Temi

Il tema può essere configurato tramite il file di configurazione, oppure a runtime tramite la scorciatoia `CTRL+t`.
Un elenco completo dei temi disponibili è disponibile [**qui**](https://github.com/ramonvermeulen/whosthere/blob/main/internal/ui/theme/theme.go), sentiti libero di aprire una PR per aggiungere il tuo tema!

Esempio di configurazione del tema:

```yaml
theme:
  enabled: true
  name: cyberpunk
```

Quando `name` è impostato a `custom`, le altre opzioni di colore possono essere utilizzate per creare il tuo tema personalizzato.
Quando l'opzione `enabled` è impostata a `false`, la TUI utilizzerà i colori ANSI predefiniti del terminale.
Quando la variabile d'ambiente `NO_COLOR` è impostata, tutti i colori ANSI verranno disabilitati.

## Logging

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

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

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

## Piattaforme

Whosthere è supportato sulle seguenti piattaforme:

- [x] Linux
- [x] macOS
- [x] Windows

## Problemi noti

Per il funzionamento della funzionalità degli appunti, viene utilizzato un [**fork di go-clipboard**](https://github.com/dece2183/go-clipboard).
Assicurati di avere installato lo strumento di copia appropriato per il tuo sistema operativo:

| OS                                     | Strumenti di copia supportati                         |
| -------------------------------------- | -------------------------------------------- |
| Darwin                                 | `pbcopy`                                     |
| Windows                                | `clip.exe`                                   |
| Linux/FreeBSD/NetBSD/OpenBSD/Dragonfly | X11: `xsel`, `xclip` <br> Wayland: `wl-copy` |

## Disclaimer

Whosthere è destinato all'uso su reti in cui hai il permesso di eseguire discovery e scansione di rete,
come la tua rete domestica. La scansione non autorizzata di reti può essere illegale e non etica.
Ottieni sempre l'autorizzazione appropriata prima di utilizzare questo strumento su qualsiasi rete.

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

## Contribuire

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 qualsiasi modifica importante su una issue di Github prima di implementarla.
Scarica lo strumento