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

Возможности
- Интерактивный TUI: Интуитивная навигация и исследование обнаруженных устройств.
- Быстрый и параллельный: Одновременно использует несколько методов обнаружения.
- Не требует повышенных привилегий: Работает полностью в пользовательском пространстве.
- Обогащение данных об устройствах: Использует поиск по OUI для отображения производителей устройств.
- Встроенный сканер портов: Опциональное обнаружение сервисов на найденных хостах (сканируйте только устройства, на которые у вас есть разрешение!).
- Режим демона с HTTP API: Работа в фоновом режиме и интеграция с другими инструментами.
- Темы и конфигурация: Персонализация внешнего вида и поведения через конфигурацию YAML.
Установка
Через 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
Горячие клавиши (TUI)
| Клавиша | Действие |
|---|---|
/ | Начать поиск по регулярному выражению |
k | Вверх |
j | Вниз |
g | Перейти к началу |
G | Перейти к концу |
y | Скопировать IP выбранного устройства |
Y | Скопировать MAC выбранного устройства |
enter | Показать сведения об устройстве |
CTRL+t | Переключить выбор темы |
CTRL+i | Переключить выбор интерфейса |
CTRL+c/q | Остановить приложение |
ESC | Очистить поиск / Вернуться назад |
p (просмотр сведений) | Запустить сканирование портов на устройстве |
tab (модальное окно) | Переключить выбор кнопки |
Конфигурация
Whosthere поддерживает несколько способов конфигурации со следующим приоритетом (от высшего к низшему):
- Флаги командной строки — Наивысший приоритет. См.
whosthere --helpдля доступных флагов. - Переменные окружения — С префиксом
WHOSTHERE__. См. Конфигурация через переменные окружения. - Файл конфигурации — Файл конфигурации YAML. См. Файл конфигурации.
- Значения по умолчанию — Резервные значения по умолчанию. См.
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
# Disable ANSI colors completely, overrides theme.enabled
# Can also be set via NO_COLOR or WHOSTHERE__THEME__NO_COLOR environment variables
# no_color: false