アップデート一覧に戻る
New releaseAug 20, 2026

whosthere v0.8.3

ローカルエリアネットワーク発見ツール。Goで書かれたインタラクティブなターミナルユーザーインターフェース(TUI)付き。 直感的にLANを発見、探索、理解できます。 ノックノック…誰かいる? 🚪

共有

Whosthere

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

Go で書かれた対話型ターミナルユーザーインターフェース(TUI)を備えたローカルエリアネットワーク発見ツールです。直感的な方法で LAN を発見、探索、理解できます。

Whosthere は mDNSSSDP スキャナーを使用して、非特権かつ並行したスキャンを実行します。さらに、TCP/UDP 接続を試みて ARP 解決をトリガーすることでローカルサブネットをスイープし、ARP キャッシュ を読み取って LAN 上のデバイスを特定します。この手法は、昇格された権限を必要とせずに 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. デフォルト値 - フォールバックのデフォルト。config.goDefaultConfig() を参照。

設定ファイル

Whosthere は以下の順序で設定ファイルを探し、最初に見つかったものを使用します:

  1. --config フラグまたは WHOSTHERE_CONFIG 環境変数で指定されたパス
  2. $XDG_CONFIG_HOME/whosthere/config.yamlXDG_CONFIG_HOME が設定されている場合)
  3. ~/.config/whosthere/config.yaml(デフォルトの場所)

設定例:

# 次の行のコメントを解除して特定のネットワークインターフェースを設定 - 未設定の場合は OS のデフォルトを使用
# network_interface: eth0

# 有効にすると、すべてのネットワークインターフェースのデバイスが表示され、インターフェースを切り替えても保持されます
# 注意: 2つのインターフェースが同じサブネットを共有している場合(例: 両方とも 192.168.1.x を使用)、
# デバイスは IP アドレスで識別されるため、統合される可能性があります。重複するサブネットでは注意して使用してください。
all_interfaces: false

# ディスカバリースキャンを実行する頻度
scan_interval: 20s

# 各スキャンの最大タイムアウト。スキャン間隔よりも短くすることを推奨
scan_timeout: 10s

scanners:
  mdns:
    enabled: true
  ssdp:
    enabled: true
  arp:
    enabled: true

sweeper:
  enabled: true
  interval: 5m
  timeout: 20s

port_scanner:
  timeout: 5s
  # 発見されたデバイスでスキャンする TCP ポートのリスト
  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:
  # 無効にすると、TUI はターミナルのデフォルト ANSI カラーを使用します
  # ANSI カラーを完全に無効にするには、NO_COLOR 環境変数も参照してください
  enabled: true

  # 利用可能なテーマの完全なリストは https://github.com/ramonvermeulen/whosthere/tree/main/internal/ui/theme/theme.go を参照
  # カスタムカラーを使用するには name を "custom" に設定
  # 設定されていないカラーは、デフォルトのテーマ値がフォールバックとして使用されます
  name: default

  # ANSI カラーを完全に無効にします。theme.enabled を上書きします
  # 環境変数 NO_COLOR または WHOSTHERE__THEME__NO_COLOR でも設定可能
  # no_color: false

  # カスタムテーマカラー(コメントを解除し、name: custom に設定して使用)
  # 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"

環境変数

一般環境変数

変数説明
WHOSTHERE_CONFIG設定ファイルへのパス。デフォルトの場所を上書きするために使用します。
WHOSTHERE_LOGログレベルを設定(例: debug, info, warn, error)。デフォルトは info
NO_COLORTUI で ANSI カラーを無効にします。

環境変数による設定

YAML 設定で利用可能なすべての設定オプションは、WHOSTHERE__ プレフィックス(二重アンダースコアに注意)を付けた環境変数で設定できます。ネストされた設定キーは二重アンダースコアで区切り、キーは大文字小文字を区別しません。

例:

  • WHOSTHERE__SPLASH__ENABLED=false - スプラッシュ画面を無効にします。YAML 設定の splash.enabled: false に相当
  • WHOSTHERE__SPLASH__DELAY=2s - スプラッシュ画面の遅延を 2 秒に設定。YAML 設定の splash.delay: 2s に相当
  • WHOSTHERE__SCAN_INTERVAL=30s - スキャン間隔を 30 秒に設定。YAML 設定の scan_interval: 30s に相当
  • WHOSTHERE__SCANNERS__MDNS__ENABLED=false - mDNS スキャナーを無効にします。YAML 設定の scanners.mdns.enabled: false に相当
  • WHOSTHERE__PORT_SCANNER__TCP=80,443,8080 - スキャンするカスタム TCP ポートを設定。YAML 設定の port_scanner.tcp: [80, 443, 8080] に相当
  • WHOSTHERE__THEME__NAME=cyberpunk - テーマを cyberpunk に設定。YAML 設定の theme.name: cyberpunk に相当

デーモンモード HTTP API

Whosthere をデーモンモードで実行すると、以下のエンドポイントを持つ非常にシンプルな HTTP API が公開されます:

メソッドエンドポイント説明
GET/devices発見されたすべてのデバイスのリストを取得
GET/device/{ip}特定のデバイスの詳細を取得
GET/healthヘルスチェック

テーマ

テーマは設定ファイルで構成するか、実行時に CTRL+t キーバインドで変更できます。利用可能なテーマの完全なリストはこちらにあります。独自のテーマを追加する PR を歓迎します!

テーマ設定の例:

theme:
  enabled: true
  name: cyberpunk

namecustom に設定すると、他のカラーオプションを使用して独自のカスタムテーマを作成できます。enabled オプションを false に設定すると、TUI はターミナルのデフォルト ANSI カラーを使用します。NO_COLOR 環境変数が設定されている場合、すべての ANSI カラーが無効になります。

ログ

ログはアプリケーションのステートディレクトリに書き込まれます:

  • $XDG_STATE_HOME/whosthere/app.logXDG_STATE_HOME が設定されている場合)
  • ~/.local/state/whosthere/app.log(Linux/MacOS のフォールバック)
  • %LOCALAPPDATA%/whosthere/app.log(Windows のフォールバック)

TUI モードで実行していない場合、ログはコンソールにも出力されます。

対応プラットフォーム

Whosthere は以下のプラットフォームでサポートされています:

  • Linux
  • macOS
  • Windows

既知の問題

クリップボード機能を動作させるために、go-clipboard のフォーク を使用しています。お使いの OS に適したコピーツールがインストールされていることを確認してください:

OSサポートされているコピーツール
Darwinpbcopy
Windowsclip.exe
Linux/FreeBSD/NetBSD/OpenBSD/DragonflyX11: xsel, xclip
Wayland: wl-copy

免責事項

Whosthere は、ご自身のホームネットワークなど、ネットワーク上の発見およびスキャンを行う許可があるネットワークでの使用を意図しています。許可なくネットワークをスキャンすることは、違法かつ非倫理的である可能性があります。このツールを使用する前に、必ず適切な許可を得てください。

このツールは主に教育目的とホームネットワークの探索のために作成されました。機能的で有用ではありますが、プロフェッショナルグレードのネットワーク監視ソリューションと見なすべきではありません。結果は非特権スキャン手法に基づいており、包括的ではない可能性があります。重要なネットワーク分析やセキュリティ評価には、正式なサポートのある確立された専門ツールの使用を検討してください。

コントリビューション

機能リクエスト、バグ報告、改善などの貢献や提案を歓迎します! GitHub リポジトリで issue を開いたり、プルリクエストを送信したりしてください。大きな変更を実装する前に、必ず GitHub の issue で議論してください。

カテゴリ