Назад к обновлениям
New releaseAug 20, 2026

whosthere v0.8.3

Инструмент для обнаружения локальной сети с интерактивным терминальным пользовательским интерфейсом (TUI), написанный на Go. Обнаруживайте, исследуйте и понимайте свою LAN интуитивно. Тук-тук.. кто там? 🚪

Поделиться

Whosthere

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

Инструмент обнаружения устройств в локальной сети с интерактивным терминальным пользовательским интерфейсом (TUI), написанный на Go. Исследуйте и изучайте свою локальную сеть интуитивно понятным способом.

Whosthere выполняет непривилегированное параллельное сканирование с использованием сканеров mDNS и SSDP. Кроме того, он сканирует локальную подсеть, пытаясь установить TCP/UDP-соединения для запуска ARP-разрешения, а затем читает ARP-кэш для идентификации устройств в вашей локальной сети. Этот метод заполняет ARP-кэш без необходимости в повышенных привилегиях. Все обнаруженные устройства обогащаются данными из OUI для отображения производителей, когда это возможно.

Whosthere предоставляет удобный и интуитивный способ ответить на вопрос, который задаёт каждый сетевой администратор: «Кто там в моей сети?»

demo gif

Возможности

  • Интерактивный 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 поддерживает несколько способов конфигурации со следующим приоритетом (от высшего к низшему):

  1. Флаги командной строки — Наивысший приоритет. См. whosthere --help для доступных флагов.
  2. Переменные окружения — С префиксом WHOSTHERE__. См. Конфигурация через переменные окружения.
  3. Файл конфигурации — Файл конфигурации YAML. См. Файл конфигурации.
  4. Значения по умолчанию — Резервные значения по умолчанию. См. DefaultConfig() в config.go.

Файл конфигурации

Whosthere ищет файл конфигурации в следующем порядке, используя первый найденный:

  1. Путь, указанный через флаг --config или переменную окружения WHOSTHERE_CONFIG
  2. $XDG_CONFIG_HOME/whosthere/config.yaml (если XDG_CONFIG_HOME задана)
  3. ~/.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

Категории