
ローカルエリアネットワーク発見ツール。Goで書かれたインタラクティブなターミナルユーザーインターフェース(TUI)付き。 直感的にLANを発見、探索、理解できます。 ノックノック…誰かいる? 🚪
Go で書かれたインタラクティブな Terminal User Interface (TUI) を備えたローカルエリアネットワーク検出ツール。 直感的な方法で LAN を検出、探索、理解できます。
Whosthere は mDNS と SSDP スキャナーを使用して、非特権で並行スキャンを実行します。さらに、TCP/UDP 接続を試みて ARP 解決をトリガーすることでローカルサブネットをスイープし、その後 ARP キャッシュ を読み取ってローカルエリアネットワーク上のデバイスを識別します。この手法は、昇格された権限を必要とせずに ARP キャッシュを populate します。検出されたすべてのデバイスは 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
| Key | Action |
|---|---|
/ | 正規表現検索を開始 |
k | 上へ |
j | 下へ |
g | 先頭へ移動 |
G | 末尾へ移動 |
y | 選択したデバイスの IP をコピー |
Y | 選択したデバイスの MAC をコピー |
enter | デバイスの詳細を表示 |
CTRL+t | テーマセレクターを切り替え |
CTRL+i | インターフェースセレクターを切り替え |
CTRL+c/q | アプリケーションを停止 |
ESC | 検索をクリア / 戻る |
p (詳細ビュー) | デバイスのポートスキャンを開始 |
tab (モーダルビュー) | ボタンの選択を切り替え |
Whosthere は以下の優先順位 (高い順から低い順) で複数の設定方法をサポートしています:
whosthere --help を参照してください。WHOSTHERE__ をプレフィックスとして付けます。環境変数による設定 を参照してください。DefaultConfig() を参照してください。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
# 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"
| Variable | Description |
|---|---|
WHOSTHERE_CONFIG | デフォルトの場所を上書きできるようにするための設定ファイルへのパス。 |
WHOSTHERE_LOG | ログレベルを設定します (例: debug、info、warn、error)。デフォルトは info。 |
NO_COLOR | TUI の ANSI カラーを無効にします。 |
YAML 設定で利用可能なすべての設定オプションは、WHOSTHERE__ プレフィックス (二重アンダースコアに注意) を使用して環境変数で設定できます。ネストされた設定キーは二重アンダースコアで区切られ、キーは大文字と小文字を区別しません。
例: