HN 日本語サマリー

← 一覧へ戻る
Web開発

WaveDigger: 無線信号を掘り下げて物理的な場所を特定する

WaveDigger: Dig into wireless signals to discover their physical locations (github.com)

115 pointsby 882542F3884314B22 コメント

要約

WaveDiggerは、Wi-FiアクセスポイントのBSSIDやセルタワー(LTE、5G NR)のネットワークパラメータを基に、それらの物理的な位置を特定するツールです。Next.js、TypeScript、deck.glを使用してインタラクティブな地図表示を実現しており、AppleのWLOC APIのリバースエンジニアリングに基づいています。BSSID検索、セルタワー検索、インタラクティブマップ、検索履歴などの機能を備えています。

全文翻訳

WaveDigger

無線信号を掘り下げて物理的な位置を特定します。WaveDiggerは、BSSID(MACアドレス)によるWi-Fiアクセスポイントや、ネットワークパラメータによるセルタワー(LTEおよび5G NR)の検索を支援します。Next.js、TypeScript、deck.glを使用して、インタラクティブな地図表示を実現しています。

ホスト版はhttps://wavedigger.networksurvey.appで利用可能です。

[画像: WaveDiggerのスクリーンショット]

特徴

  • BSSID検索: BSSIDを入力して、そのおおよその位置を検索します。
  • 入力検証: BSSID入力の自動フォーマットと検証。
    • サポートされるフォーマット: AA:BB:CC:DD:EE:FF, AA-BB-CC-DD-EE-FF, AABBCCDDEEFF
  • セルタワー検索: LTEタワー(MCC、MNC、TAC、Cell ID)または5G NRタワー(MCC、MNC、TAC、NCI)を検索します。NR検索では、ターゲットセルと、同じクラスター内の周囲のNRセルが返されます。
  • インタラクティブマップ: deck.glベースのマップ上に結果を視覚化します。
  • 検索履歴: 最近の検索を追跡し、素早くアクセスできます。
  • レスポンシブデザイン: デスクトップおよびモバイルデバイスで動作します。

謝辞

🙏 このプロジェクトは、apple-corelocation-experimentsチームによる素晴らしい功績なしには実現できませんでした。

WaveDiggerは、彼らの研究とAppleの位置情報サービスAPIのリバースエンジニアリングに基づいて構築されています。具体的には、以下のものを使用しています。

  • AppleのWLOC APIのプロトバフ定義。
  • APIエンドポイントとリクエスト/レスポンスフォーマットのドキュメント。
  • 座標エンコーディングとAPIの動作に関する理解。
  • 有効なリクエストに必要な初期バイトプレフィックス。

Appleのドキュメント化されていない位置情報サービスを理解し、文書化した彼らの作業により、WaveDiggerのようなプロジェクトが存在可能になりました。オリジナルの研究やAppleの位置情報サービスを扱うための追加ツールについては、彼らのリポジトリをご覧ください。

始め方

前提条件
  • Node.js 24以降およびnpm
インストール
  1. 依存関係をインストールします:
npm install
  1. (オプション)強化されたマップタイル用にMapboxトークンを追加します:

    • Mapboxからトークンを取得します。
    • .env.localに追加します:
    NEXT_PUBLIC_MAPBOX_TOKEN=your_token_here
    
開発サーバーの実行
npm run dev

http://localhost:3000を開いてアプリケーションを表示します。

技術詳細

アーキテクチャ
  • フロントエンド: TypeScriptを使用したNext.js 15。
  • マップビジュアライゼーション: react-map-glを使用したdeck.gl。
  • スタイリング: Tailwind CSS。
  • API: Next.js APIルート。
実際のApple WLOC API

アプリケーションは、BSSIDの位置を照会するためにAppleの実際のWLOC APIを使用します。この実装は、apple-corelocation-experimentsプロジェクトの研究とプロトバフ定義に基づいています。

APIの実装:

  • Appleサーバーとの通信にプロトバフを使用します。
  • https://gs-loc.apple.com/clls/wlocにリクエストを送信します。
  • 座標変換を処理します(Appleは小数点以下8桁のint64を使用)。
  • デフォルトおよび中国リージョンのエンドポイントの両方をサポートします。
実際のBSSIDでのテスト

アプリをテストするには:

  1. ルーターまたはアクセスポイントから実際のWi-Fi BSSID(MACアドレス)を見つけます。
  2. サポートされているいずれかのフォーマットで入力します。
  3. アプリがAppleのデータベースを照会し、見つかった場合は位置を表示します。

注意: すべてのBSSIDがAppleのデータベースにあるわけではありません。新しく展開されたアクセスポイントやプライベートアクセスポイントには、位置データがない場合があります。

機能ロードマップ

  • 結果のエクスポート: 検索結果をJSON/CSVとしてダウンロードします。
  • TACクラスタビュー: 特定のCell IDやNCIを必要とせずに、TAC内のすべてのタワーをブラウズします。

ライセンス

WaveDiggerはGNU Affero General Public License v3.0の下でライセンスされています。このソフトウェアの変更版をネットワークサービスとして実行する場合、AGPLは、そのサービスユーザーに変更されたソースコードを利用可能にすることを要求します。