>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Python

如何通过 BSSID 使用 geowifi 查找路由器的物理地址

每次智能手机搜索熟悉的网络时,它会扫描无线电波并发现周围有数十台路由器。Google 和 Apple 等大公司多年来一直在收集这些数据并与 GPS 坐标配对,以在密集的城市地区确定设备位置,而无需等待卫星。

因此,一个由所有家庭和办公室接入点组成的巨大地图已经在我们周围形成。如果你获得了路由器的 MAC 地址(BSSID)或一个罕见的网络名称(SSID),你可以在几秒钟内获取其物理坐标。

geowifi

geowifi 实用程序负责处理这个例行程序。它不是手动检查十几个分散的服务,而是同时向所有可用的 Wi-Fi 地理定位数据库发送查询。

为什么要将所有数据库合并到一个脚本中

每个数据库以自己的方式收集坐标。Wigle 服务依赖那些开着扫描仪在城市中行驶的爱好者。Apple 的数据库由 iOS 智能手机填充,Google 的由 Android 设备填充。

如果你只在一个地方搜索一个点,很可能会一无所获。接入点会移动,会出现在新开发区域,或从公共列表中消失。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 配置

gw_utils 目录中有一个 config.yaml 文件。这是你配置访问令牌的地方:

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

如果输出需要用于后续自动化或传递给另一个脚本,只需添加 -o 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. 物联网设备地理定位。当设备只报告可见接入点列表时,脚本可以将这个列表转换为可理解的地理坐标,而无需使用 GPS 模块。

总结

geowifi 是一个紧凑、实用的工具,可以解决一个特定任务而不增加不必要的复杂性。代码简单,依赖标准,逻辑透明。如果你进行 OSINT 调查、分析无线流量转储,或者只是好奇有多少地理位置数据通过 Wi-Fi 路由器泄露,将这个实用程序添加到你的工具箱中吧。

相关项目