
Инструмент для обнаружения локальной сети с интерактивным терминальным пользовательским интерфейсом (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 --help
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
# 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"
Любой параметр конфигурации, доступный в YAML-конфигурации, можно задать через переменные окружения, используя
префикс WHOSTHERE__ (обратите внимание на двойное подчеркивание). Вложенные ключи конфигурации разделяются двойными подчеркиваниями, и
ключи нечувствительны к регистру.
Примеры:
WHOSTHERE__SPLASH__ENABLED=false - Отключить заставку, эквивалентно splash.enabled: false в YAML-конфигурацииWHOSTHERE__SPLASH__DELAY=2s - Установить задержку заставки 2 секунды, эквивалентно splash.delay: 2s в YAML-конфигурацииWHOSTHERE__SCAN_INTERVAL=30s - Установить интервал сканирования 30 секунд, эквивалентно scan_interval: 30s в YAML-конфигурацииWHOSTHERE__SCANNERS__MDNS__ENABLED=false - Отключить mDNS-сканер, эквивалентно scanners.mdns.enabled: false в YAML-конфигурацииWHOSTHERE__PORT_SCANNER__TCP=80,443,8080 - Установить пользовательские TCP-порты для сканирования, эквивалентно port_scanner.tcp: [80, 443, 8080] в YAML-конфигурацииWHOSTHERE__THEME__NAME=cyberpunk - Установить тему cyberpunk, эквивалентно в YAML-конфигурацииПри запуске Whosthere в режиме демона он предоставляет очень простой HTTP API со следующими конечными точками:
| Метод | Конечная точка | Описание |
|---|---|---|
| GET | /devices | Получить список всех обнаруженных устройств |
Тему можно настроить через файл конфигурации или во время выполнения с помощью сочетания клавиш CTRL+t.
Полный список доступных тем можно найти здесь, не стесняйтесь открывать PR, чтобы добавить свою тему!
Пример конфигурации темы:
theme:
enabled: true
name: cyberpunk
Когда name установлено в custom, можно использовать другие параметры цвета для создания собственной темы.
Когда параметр enabled установлен в false, TUI будет использовать стандартные ANSI-цвета терминала.
Когда установлена переменная окружения NO_COLOR, все ANSI-цвета будут отключены.
Логи записываются в каталог состояния приложения:
$XDG_STATE_HOME/whosthere/app.log (если задано XDG_STATE_HOME)~/.local/state/whosthere/app.log (запасной вариант Linux/MacOS)%LOCALAPPDATA%/whosthere/app.log (запасной вариант Windows)При работе не в режиме TUI логи также выводятся в консоль.
Whosthere поддерживается на следующих платформах:
Для работы с буфером обмена используется форк go-clipboard. Убедитесь, что у вас установлена соответствующая утилита копирования для вашей ОС:
| ОС | Поддерживаемые утилиты копирования |
|---|---|
| Darwin | pbcopy |
Whosthere предназначен для использования в сетях, где у вас есть разрешение на выполнение обнаружения и сканирования, например, в вашей домашней сети. Несанкционированное сканирование сетей может быть незаконным и неэтичным. Всегда получайте соответствующее разрешение перед использованием этого инструмента в любой сети.
Этот инструмент был создан в первую очередь в образовательных целях и для исследования домашней сети. Хотя он функционален и полезен, его не следует рассматривать как профессиональное решение для мониторинга сети. Результаты основаны на непривилегированных методах сканирования и могут быть неполными. Для критического анализа сети или оценки безопасности рассмотрите возможность использования проверенных профессиональных инструментов с официальной поддержкой.
Приветствуются вклады и предложения, такие как запросы функций, сообщения об ошибках или улучшения! Не стесняйтесь открывать issue или отправлять pull request в репозиторий GitHub. Пожалуйста, обсудите любые серьёзные изменения в issue на GitHub перед их реализацией.
| Клавиша | Действие |
|---|
/ | Начать поиск по регулярному выражению |
k | Вверх |
j | Вниз |
g | Перейти в начало |
G | Перейти в конец |
y | Копировать IP выбранного устройства |
Y | Копировать MAC выбранного устройства |
enter | Показать подробности устройства |
CTRL+t | Переключить выбор темы |
CTRL+i | Переключить выбор интерфейса |
CTRL+c/q | Остановить приложение |
ESC | Очистить поиск / Назад |
p (вид деталей) | Запустить сканирование портов на устройстве |
tab (модальный вид) | Переключить выбор кнопки |
| Переменная | Описание |
|---|
WHOSTHERE_CONFIG | Путь к файлу конфигурации, чтобы переопределить расположение по умолчанию. |
WHOSTHERE_LOG | Установите уровень логирования (например, debug, info, warn, error). По умолчанию info. |
NO_COLOR | Отключить ANSI-цвета в TUI. |
theme.name: cyberpunk| GET | /device/{ip} | Получить подробности о конкретном устройстве |
| GET | /health | Проверка работоспособности |
| Windows |
clip.exe |
| Linux/FreeBSD/NetBSD/OpenBSD/Dragonfly | X11: xsel, xclip Wayland: wl-copy |