
Инструмент для обнаружения локальной сети с интерактивным терминальным пользовательским интерфейсом (TUI), написанный на Go. Обнаруживайте, исследуйте и понимайте свою LAN интуитивно. Тук-тук.. кто там? 🚪
Инструмент обнаружения устройств в локальной сети с интерактивным терминальным интерфейсом (TUI), написанный на Go. Исследуйте и изучайте свою локальную сеть интуитивно понятным способом.
Whosthere выполняет непривилегированные параллельные сканирования, используя сканеры mDNS и SSDP. Кроме того, он сканирует локальную подсеть, пытаясь установить TCP/UDP-соединения для запуска ARP-разрешения, а затем читает ARP-кэш для идентификации устройств в вашей локальной сети. Эта техника заполняет ARP-кэш без необходимости в повышенных привилегиях. Все обнаруженные устройства дополняются данными из OUI для отображения производителей, когда это возможно.
Whosthere предоставляет удобный, интуитивный способ ответить на вопрос, который задаёт каждый сетевой администратор: «Кто там в моей сети?»

Через Homebrew с помощью brew:
brew install whosthere
В NixOS с помощью nix:
nix profile install nixpkgs#whosthere
В Arch Linux с помощью yay:
yay -S whosthere-bin
Если вашего менеджера пакетов нет в списке, вы всегда можете установить с помощью Go:
go install github.com/ramonvermeulen/whosthere@latest
Или собрать из исходного кода:
git clone https://github.com/ramonvermeulen/whosthere.git
cd whosthere
make build
Кроме того, вы можете скачать готовые бинарные файлы со страницы релизов.
Запустите TUI для интерактивного обнаружения:
whosthere
Запустите как CLI для однократного сканирования и вывода результатов:
whosthere scan -t 5
Вывод результатов в файл JSON:
whosthere scan -t 5 --json --pretty > devices.json
Запуск в режиме демона с HTTP API:
whosthere daemon --port=8080
Массовый импорт псевдонимов из файла или экспорт текущих:
whosthere aliases import ./aliases.yaml
whosthere aliases export --stdout
Дополнительные параметры командной строки можно найти, выполнив:
whosthere --help
| Клавиша | Действие |
|---|---|
/ | Начать поиск по регулярному выражению |
k | Вверх |
j | Вниз |
g | Перейти к началу |
G | Перейти к концу |
y | Скопировать IP выбранного устройства |
Y | Скопировать MAC выбранного устройства |
enter | Показать сведения об устройстве |
CTRL+t | Переключить выбор темы |
CTRL+i | Переключить выбор интерфейса |
CTRL+c/q | Остановить приложение |
ESC | Очистить поиск / Вернуться назад |
p (просмотр сведений) | Запустить сканирование портов на устройстве |
tab (модальное окно) | Переключить выбор кнопки |
Whosthere поддерживает несколько способов конфигурации со следующим приоритетом (от высшего к низшему):
whosthere --help для доступных флагов.WHOSTHERE__. См. Конфигурация через переменные окружения.DefaultConfig() в config.go.Whosthere ищет файл конфигурации в следующем порядке, используя первый найденный:
--config или переменную окружения WHOSTHERE_CONFIG$XDG_CONFIG_HOME/whosthere/config.yaml (если XDG_CONFIG_HOME задана)~/.config/whosthere/config.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