WaveDigger: 無線信号を掘り下げて物理的な場所を特定する
WaveDigger: Dig into wireless signals to discover their physical locations (github.com)
要約
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で利用可能です。
特徴
- 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
インストール
- 依存関係をインストールします:
npm install
-
(オプション)強化されたマップタイル用に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でのテスト
アプリをテストするには:
- ルーターまたはアクセスポイントから実際のWi-Fi BSSID(MACアドレス)を見つけます。
- サポートされているいずれかのフォーマットで入力します。
- アプリがAppleのデータベースを照会し、見つかった場合は位置を表示します。
注意: すべてのBSSIDがAppleのデータベースにあるわけではありません。新しく展開されたアクセスポイントやプライベートアクセスポイントには、位置データがない場合があります。
機能ロードマップ
- 結果のエクスポート: 検索結果をJSON/CSVとしてダウンロードします。
- TACクラスタビュー: 特定のCell IDやNCIを必要とせずに、TAC内のすべてのタワーをブラウズします。
ライセンス
WaveDiggerはGNU Affero General Public License v3.0の下でライセンスされています。このソフトウェアの変更版をネットワークサービスとして実行する場合、AGPLは、そのサービスユーザーに変更されたソースコードを利用可能にすることを要求します。