Loading... # geowifi WiFi 地理位置信息查询工具技术分析 # 一、概述 ## 1. 简介 ### A. 是什么 geowifi 是一个开源情报(OSINT)工具,用于通过 BSSID(基本服务集标识符)或 SSID(服务集标识符)查询 WiFi 网络的地理位置信息。该工具整合了多个公开的 WiFi 地理位置数据库,为安全研究人员、渗透测试人员和 OSINT 从业者提供便捷的查询接口。 ### B. 核心价值 - 多数据源整合:同时查询多个 WiFi 地理位置数据库 - 可视化输出:支持地图可视化展示查询结果 - 灵活配置:支持 API 密钥管理和 SSL 验证配置 - 易于部署:提供 Docker 和本地 Python 两种部署方式 ### C. 应用场景 - 渗透测试中的物理位置侦察 - 安全审计与无线网络分析 - OSINT 调查中的地理位置定位 - 无线网络安全研究 ## 2. 技术特点 ### A. 支持的数据库 - Wigle:全球最大的 WiFi 网络数据库 - Apple:苹果地理位置服务 - Google:谷歌地理位置服务 - Milnikov:开源 WiFi 定位服务 - WifiDB:社区 WiFi 数据库 - Combain:商业定位服务 - Freifunk Carte:德国开源网络地图 ### B. 技术栈 - 编程语言:Python 3 - 容器化:Docker - 输出格式:JSON、HTML 地图 # 二、系统架构 ## 1. 架构设计 ```mermaid graph TB User[用户] --> CLI[命令行接口] CLI --> Config[配置管理] CLI --> Parser[参数解析器] Parser --> Search{搜索类型} Search -->|BSSID| Query[查询引擎] Search -->|SSID| Query Config --> API[API 密钥管理] Query --> Wigle[Wigle API] Query --> Google[Google Geolocation API] Query --> Apple[Apple Location API] Query --> Combain[Combain API] Query --> Mylnikov[Mylnikov API] Query --> WifiDB[WifiDB API] Query --> Freifunk[Freifunk API] Wigle --> Collector[结果收集器] Google --> Collector Apple --> Collector Combain --> Collector Mylnikov --> Collector WifiDB --> Collector Freifunk --> Collector Collector --> Output{输出格式} Output -->|JSON| Formatter[JSON 格式化] Output -->|地图| Mapper[地图生成器] Formatter --> Display[结果显示] Mapper --> Display ```  ## 2. 组件说明 - CLI:命令行接口,负责用户交互 - 配置管理:加载和解析 YAML 配置文件 - 查询引擎:根据搜索类型分发查询请求 - API 适配器:封装各数据库的 API 调用逻辑 - 结果收集器:聚合多个数据源的查询结果 - 输出格式化:将结果转换为指定格式 # 三、核心功能 ## 1. 搜索功能 ### A. BSSID 搜索 BSSID(Basic Service Set Identifier)是 WiFi 接入点的 MAC 地址,格式为 XX:XX:XX:XX:XX:XX。 ```mermaid sequenceDiagram participant U as 用户 participant C as CLI participant Q as 查询引擎 participant W as Wigle participant G as Google participant A as Apple participant R as 结果收集器 U->>C: 输入 BSSID C->>Q: 解析参数 par 并行查询 Q->>W: 查询请求 Q->>G: 查询请求 Q->>A: 查询请求 end W-->>R: 返回结果 G-->>R: 返回结果 A-->>R: 返回结果 R->>U: 聚合展示 ```  ### B. SSID 搜索 SSID(Service Set Identifier)是 WiFi 网络的名称。部分数据库支持通过 SSID 进行模糊搜索。 ## 2. API 配置 ### A. Wigle API - 用途:查询 WiFi 网络的地理位置信息 - 获取方式:注册 https://wigle.net/account - 配置参数:`wigle_auth`(Encoded for use 认证字符串) ### B. Google Geolocation API - 用途:利用谷歌的地理位置数据库 - 获取方式:https://developers.google.com/maps/documentation/geolocation/get-api-key - 免费额度:每月 200 美元 ### C. Combain API - 用途:商业级定位服务 - 获取方式:https://portal.combain.com/#/auth/register - 定价模式:提供免费试用和付费计划 ### D. 配置文件结构 配置文件位于 `gw_utils/config.yaml`: ```yaml wigle_auth: "your_encoded_auth_string" google_api: "your_google_api_key" combain_api: "your_combain_api_key" no-ssl-verify: false ``` ## 3. 输出功能 ### A. JSON 格式 结构化输出所有查询结果,便于程序处理: ```json [ { "module": "google", "bssid": "C8:XX:XX:XX:5E:45", "latitude": 33.571844, "longitude": -1XX.XXXXX97 }, { "module": "wigle", "bssid": "C8:XX:XX:XX:5E:45", "ssid": "Vertigo", "latitude": 33.60998154, "longitude": -1XX.XXXXX22 } ] ``` ### B. 地图可视化 生成 HTML 地图,在地图上标注所有查询到的 WiFi 位置。 # 四、部署与安装 ## 1. 环境要求 ### A. 系统要求 - Python 3.x - pip 包管理器 - Git(可选,用于克隆仓库) ### B. Windows 特殊说明 为正确显示 emoji 字符,建议安装 Windows Terminal。 ## 2. 安装方式 ### A. 本地 Python 安装 ```mermaid graph LR A[克隆仓库] --> B[创建虚拟环境] B --> C[激活虚拟环境] C --> D[安装依赖] D --> E[配置 API] E --> F[运行工具] ```  **详细步骤**: ```bash # 克隆仓库 git clone https://github.com/GONZOsint/geowifi cd ./geowifi/ # 创建虚拟环境 virtualenv geowifi # 激活虚拟环境 source geowifi/bin/activate # Linux/macOS # 或 geowifi\Scripts\activate # Windows # 安装依赖 python3 -m pip install -r requirements.txt ``` ### B. Docker 部署 ```mermaid graph LR A[构建镜像] --> B[运行容器] B --> C[传入参数] C --> D[获取结果] ```  **详细步骤**: ```bash # 构建镜像 docker build -t geowifi:latest . # 运行容器(搜索 BSSID) docker run --rm geowifi:latest -s bssid <输入> # 运行容器(搜索 SSID) docker run --rm geowifi:latest -s ssid <输入> ``` # 五、使用示例 ## 1. 基本用法 ### A. 按 BSSID 搜索 ```bash python3 geowifi.py -s bssid C8:XX:XX:XX:5E:45 ``` ### B. 按 SSID 搜索 ```bash python3 geowifi.py -s ssid "TargetWiFi" ``` ### C. JSON 输出 ```bash python3 geowifi.py -s bssid C8:XX:XX:XX:5E:45 -o json ``` ### D. 地图输出 ```bash python3 geowifi.py -s bssid C8:XX:XX:XX:5E:45 -o map ``` ## 2. Docker 用法 ```bash # 搜索 BSSID docker run --rm geowifi:latest -s bssid <input> # 搜索 SSID docker run --rm geowifi:latest -s ssid <input> ``` # 六、技术分析 ## 1. 架构优势 ### A. 模块化设计 - 每个数据库都有独立的适配器模块 - 易于添加新的数据源 - 便于维护和测试 ### B. 异步处理 - 支持并行查询多个数据库 - 提高查询效率 - 减少用户等待时间 ### C. 灵活配置 - YAML 配置文件管理 API 密钥 - 支持选择性启用数据库 - SSL 验证可配置,适应不同网络环境 ## 2. 数据源对比 | 数据库 | 数据覆盖 | 准确性 | API 限制 | 认证方式 | |-------|---------|--------|---------|---------| | Wigle | 全球 | 高 | 需要注册 | API Token | | Google | 全球 | 很高 | 200 美元/月 | API Key | | Apple | 全球 | 高 | 未公开 | 私有 API | | Combain | 全球 | 高 | 免费试用+付费 | API Key | | Mylnikov | 主要是欧洲 | 中等 | 免费 | 无需认证 | | WifiDB | 社区贡献 | 中等 | 免费 | 无需认证 | | Freifunk | 德国 | 高 | 免费 | 无需认证 | ## 3. 安全考虑 ### A. API 密钥保护 - 配置文件不应提交到版本控制 - 建议使用环境变量 - 定期轮换 API 密钥 ### B. 网络安全 - 支持 SSL 验证禁用选项(不推荐) - 建议在受信任的网络环境中使用 - 注意防范中间人攻击 ### C. 隐私保护 - 查询的数据来自公开数据库 - 工具本身不收集用户数据 - 建议遵守当地法律法规 # 七、实际应用场景 ## 1. 渗透测试 ### A. 物理位置侦察 在红队行动中,通过 WiFi 探测获取目标的 MAC 地址,然后查询地理位置信息,辅助物理渗透决策。 ### B. 无线网络测绘 绘制目标区域的 WiFi 网络分布图,识别潜在接入点和安全漏洞。 ## 2. OSINT 调查 ### A. 人员定位 通过目标的 WiFi 网络信息,推断其可能的活动区域。 ### B. 事件溯源 在安全事件调查中,通过 WiFi 数据回溯攻击者的行踪轨迹。 ## 3. 安全审计 ### A. 企业 WiFi 安全 评估企业 WiFi 网络的信息泄露风险,检查敏感信息是否被公开数据库收录。 ### B. 合规性检查 验证 WiFi 网络部署是否符合相关安全标准和隐私法规。 # 八、局限性 ## 1. 数据准确性 - 数据库信息的时效性问题 - 部分数据库覆盖范围有限 - 不同数据源结果可能不一致 ## 2. API 限制 - 部分服务需要付费 - 查询频率可能受限 - 部分服务已停止运营(如 OpenWifi) ## 3. 法律风险 - 不同地区对 WiFi 探测的法律规定不同 - 需要获得授权才能进行某些类型的查询 - 数据使用可能受隐私法规限制 # 九、改进建议 ## 1. 功能增强 - 添加历史查询记录功能 - 支持批量查询 - 增加结果导出为 CSV 格式 - 添加数据库更新时间显示 ## 2. 性能优化 - 实现查询结果缓存 - 优化并行查询策略 - 添加查询超时控制 ## 3. 用户体验 - 提供交互式配置向导 - 添加进度显示 - 支持配置文件模板生成 # 十、相关项目 geowifi 项目借鉴和使用了以下项目的部分研究成果和代码: - iSniff-GPS:WiFi 地理位置研究项目 # 十一、项目统计 - Star 数量:1.1k - Fork 数量:102 - Watcher 数量:19 - 主要语言:Python(99.4%) - 贡献者:6 人 - 最后更新:2024 年 12 月 *** ## 参考资料 1. [geowifi GitHub 仓库](https://github.com/GONZOsint/geowifi) 2. [Wigle 无线网络数据库](https://wigle.net/) 3. [Google 地理位置服务 API](https://developers.google.com/maps/documentation/geolocation/overview) 4. [Combain 地理位置 API](https://combain.com/api/) 5. [Mylnikov WiFi 定位服务](https://www.mylnikov.org/) 6. [iSniff-GPS 项目](https://github.com/hubert3/iSniff-GPS) 最后修改:2026 年 01 月 18 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏