>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Python

BSSIDを使用してルータの物理アドレスをgeowifiで見つける方法

スマートフォンが Familiar Network を検索するたびに、無線をスキャンして周囲のルータを検出します。Google や Apple のような大企業は、衛星を待たずに都市部でのデバイス位置を特定するために、長年にわたりこのデータをGPS座標と紐付けて収集してきました。

その結果、私たちの周りには家庭やオフィスのすべてのアクセスポイントの大きなマップが形成されました。ルータのMACアドレス(BSSID)や珍しいネットワーク名(SSID)を取得すれば、数秒で物理座標を取得できます。

geowifi

geowifiユーティリティがこのルーティンを担当します。 dozen に散らばったサービスを個別に確認するのではなく、利用可能なすべてのWi-Fi位置情報データベースに同時にクエリを送信します。

なぜすべてのデータベースを1つのスクリプトにまとめるのか

各データベースはそれぞれ異なる方法で座標を収集しています。Wigleサービスは、スキャンを有効にした状態で都市を走行する愛好家に依存しています。AppleのデータベースはiOSスマートフォン、GoogleのそれはAndroidデバイスによって構築されています。

1つの場所だけでポイントを検索すると、何も得られない可能性が高いです。アクセスポイントは移動し、新しい開発エリアに現れ、公共リストから消えます。geowifiユーティリティはオープンおよびセミクローズドソースにクエリを送信します:

  • Wigle
  • Apple Geolocation Services
  • Google Geolocation API
  • Mylnikov (mylnikov.org)
  • WifiDB
  • Combain
  • Freifunk Carte

興味深い詳細として、Appleへのクエリは登録や有料サブスクリプションなしで動作し、iSniff-GPSプロジェクトに触発された実装を使用しています。GoogleとWigleにはAPIキーが必要ですが、日常的なタスクに十分な無料制限があります。

クイックスタートとセットアップ

このプロジェクトはPythonで書かれています。ローカルに仮想環境で展開するか、Dockerコンテナ経由で行えます。

ローカルで作業するには、gitとPython 3が必要です:

git clone https://github.com/GONZOsint/geowifi
cd ./geowifi/
virtualenv geowifi
source geowifi/bin/activate
python3 -m pip install -r requirements.txt

Python環境を扱いたくない場合は、コンテナをビルドしてください:

docker build -t geowifi:latest .

API設定

configディレクトリにconfig.jsonファイルがあります。アクセストークンの設定はここで行います:

wigle_auth: "your_encoded_token"
google_api: "your_google_api_key"
combain_api: "your_combain_key"
no-ssl-verify: false

オープンデータベースとAppleでの基本的な作業にはキーはオプションですが、キーがあると見つかったポイントの割合が 著しく高くなります。

座標の検索方法

このユーティリティはネットワーク識別子と検索タイプフラグ(BSSID(MACアドレス)またはSSID(ネットワーク名))を受け付けます。

ルータのMACアドレスで検索:

python3 geowifi.py -s bssid C8:D7:19:XX:XX:XX

ネットワーク名で検索:

python3 geowifi.py -s ssid "MyCoffeeShop_Free"

デフォルトでは、プログラムは異なるデータプロバイダからのマーカーを持つHTMLマップを生成します。異なるデータベースはわずかにずれた座標を返す可能性があり、視覚的なマップは実際のカバレッジエリアや正確な建物を把握するのに役立ちます。

Map output

出力を後続の自動化や別のスクリプトに渡す必要がある場合は、jsonパラメータを追加するだけです:

[
  {
    "module": "google", 
    "bssid": "C8:XX:XX:XX:5E:45", 
    "latitude": 33.571844, 
    "longitude": -112.0495897
  }, 
  {
    "module": "vendor_check", 
    "vendor": "Cisco-Linksys, LLC"
  }, 
  {
    "module": "apple", 
    "bssid": "C8:XX:XX:XX:5E:45", 
    "latitude": 33.57198715, 
    "longitude": -112.0495812
  }, 
  {
    "module": "wigle", 
    "bssid": "C8:XX:XX:XX:5E:45", 
    "ssid": "Vertigo", 
    "latitude": 33.60998154, 
    "longitude": -112.0495922
  }
]

座標に加えて、このユーティリティはMACアドレスのOUIプレフィックスからネットワーク機器のメーカーをすぐに特定します。

活用場面

このツールはOSINTとネットワーク偵察タスク用に作成されましたが、関連する分野でも役立ちます:

  1. フォレンジックとネットワークダンプ分析。調査対象のノートパソコンがプローブリクエストやWi-Fiネットワーク接続履歴を保持している場合、BSSIDでデバイスの概算移動ルートを再構築できます。
  2. セキュリティとプライバシーの監査。家庭や企業のルータを確認するのに役立ちます。多くの場合、アパートから田舎の家に移転したルータが、GoogleやAppleのデータベースで古いアドレスに表示されたままになっていることがあります。
  3. IoTデバイスの位置情報。デバイスが可視アクセスポイントのみを報告する場合、スクリプトはGPSモジュールを使用せずにこのリストを理解可能な地理座標に変換します。

まとめ

geowifiは、不必要な複雑さなしに1つの特定のタスクを解決するコンパクトで実用的なツールです。コードはシンプルで、依存関係は標準的、ロジックは透明です。OSINT調査を行ったり、無線トラフィックダンプを分析したり、Wi-Fiルータからどの程度の位置情報が漏洩するかに疑問を持ったりする場合は、このユーティリティをツールキットに追加してください。

関連プロジェクト