BuriXon-code/Termux-WiFi-map
GitHub: BuriXon-code/Termux-WiFi-map
基于 Termux 的 Android 端 Wi-Fi 扫描与地理标记工具,无需 root 权限即可采集并导出无线网络数据。
Stars: 1 | Forks: 0
# Termux-WiFi-map
## 关于
Termux-WiFi-map 是一个专为 Android 上 Termux 环境设计的综合 Bash 实用工具,用于扫描附近的 Wi-Fi 接入点 (AP),记录其元数据,并可选择使用 Termux 位置提供商进行地理定位。它面向网络爱好者、安全研究人员以及任何需要在移动设备上使用轻量级、免 root Wi-Fi 映射工具的用户。
本 README 说明了如何安装、运行和配置该工具,详细解释了模式和选项,并描述了输出格式和内部行为。
## 功能特性
- 通过 `termux-wifi-scaninfo` 进行被动 Wi-Fi 扫描。
- 通过 `termux-location` 集成 GPS/位置服务(支持提供商:gps, network, passive)。
- 以多种格式保存/导出扫描结果:JSON(单行)、pretty JSON (PJSON)、JSONL(换行符分隔的 JSON)、CSV、KML。
- 缓存收集到的 AP 以供稍后导出或分析(默认路径:$HOME/.cache/BuriXon-code/wifi_scan_cache.jsonl)。
- 支持可调延迟的连续扫描模式(支持 "none" 表示 0秒 / 最快速度)。
- 振动反馈控制(可禁用)。
- 文件验证模式:检查已保存文件的结构正确性。
- 健壮的错误处理:自动 Termux API 重启例程(除非配置为退出)。
- 轻量级:使用 POSIX/Bash 编写,依赖 Termux 实用工具 —— 无需 root。
## 更多信息:
- 完整文档与示例:[网站](https://burixon.dev/projects/Termux-WiFi-map/)
## 快速概览
- **运行器** (`--run`):触发 Wi-Fi 扫描,将结果追加到内部缓存 (JSONL)。可运行一次或连续循环运行。
- **保存器** (`--save`):读取缓存并将其写入选定的导出格式/文件。
- **缓存管理器** (`--cache`):查看、计数或清除内部缓存。
- **验证器** (`--check`):检查提供文件的结构/格式错误。
- **别名** (`--check`):管理动态别名/快捷方式。
- **辅助功能**:版本信息、关于信息和帮助输出。
## 输出格式
- **JSON** — 单行 JSON 对象或数组(紧凑)。
- **PJSON** — 漂亮打印的、人类友好的 JSON(便于检查)。
- **JSONL** — 换行符分隔的 JSON;每行是一个 JSON 对象(适合流式传输/增量写入)。
- **CSV** — 展平的逗号分隔值,用于电子表格。
- **KML** — 适用于 Google Earth / GIS 工具的地理坐标点。
## 安装
请参阅本 README 块下方的“命令 — 安装与示例”中列出的命令。
注意:
- 在运行扫描之前,您必须安装 Termux 和 Termux:API 支持(`termux-api` 包)。
- 处理 JSON 需要安装 `jq`。
- 脚本默认会在 `$HOME/.cache/BuriXon-code` 下创建缓存目录。
## 使用方法
使用**模式**及其**选项**运行脚本。
模式控制主要操作(扫描/保存/缓存/验证),选项调整行为(提供商、延迟、文件名、格式等)。
### 模式
| 模式 | 别名 | 用途 |
|------|---------|---------|
| Run | `R` `-R` `--run` | 执行 Wi-Fi 扫描并将结果追加到缓存。可以是单次或连续扫描。 |
| Save | `S` `-S` `--save` | 将缓存数据导出为指定格式的文件。需要 `--name` 和 `--format`。 |
| Cache | `C` `-C` `--cache` | 缓存管理:列出 (`--list`)、计数 (`--count`)、清除 (`--purge`)。 |
| Check/Verify | `V` `-V` `--check` | 验证提供文件的结构(将路径作为参数传递)。 |
| Alias | `A` `-A` `--alias` | 创建/管理/运行动态脚本/选项别名 |
| Help/Info | `-h` `--help` `-v` `--version` `-i` `--version-info` | 显示帮助、版本或扩展关于信息。 |
#### 典型工作流程
- 快速扫描与检查:运行单次扫描 (`--run`),然后使用 `--cache --list` 查看捕获的内容。
- 连续移动映射:在步行/驾驶时使用 `--run --countinuous -d 5` 构建地理标记数据集(根据需要调整 `-d`)。
- 导出到 Google Earth:构建缓存后,执行 `--save -n map_export -f kml`,然后在 Google Earth 中打开 `.kml` 文件。
- 数据分析:导出为 `csv` 或 `jsonl`,然后导入到您的分析工具(Excel, Pandas 等)。
## 配置与文件位置
- **缓存目录:** `$HOME/.cache/BuriXon-code/Termux-WiFi-map/`(如果缺失,脚本将创建它)。
- **缓存文件:** `$HOME/.cache/BuriXon-code/Termux-WiFi-map/wifi_scan_cache.jsonl`(换行符分隔的 JSON 对象)。
## 依赖项(脚本检查的完整列表)
脚本会检查以下命令是否存在,若缺少任何一个将中止运行:
- `termux-wifi-scaninfo` (Termux:API)
- `jq` (JSON 解析)
- `termux-location` (Termux:API)
- `termux-api-start` / `termux-api-stop` (API 控制)
- `timeout` (coreutils 或 busybox)
- `awk`, `sed`, `tr`, `date` (Shell 实用工具)
- `termux-vibrate`(可选,除非您依赖振动功能)
- `tput`, `stty` (终端格式化)
## 故障排除与提示
- 如果扫描未返回 GPS 坐标:尝试将提供商切换为 `network`(室内速度更快)或增加 GPS 预热时间。
- 如果 Termux:API 调用在一段时间后开始失败,请使用 `--exit-on-fail` 强制立即退出,使用 `--last-location` 使用最后已知位置,或让脚本尝试重启 API。
- 对于大型连续捕获任务,请定期轮转/导出缓存以避免文件过大。JSONL 是流友好的 —— 您可以在扫描时使用 tail 命令查看。
- 使用 CSV 导出时,请检查特殊字符(SSID 字符)是如何转义的 —— 如果需要完全保真度,建议使用 JSON/JSONL。
## 许可证
GPL-3.0 — 请参阅仓库中的 LICENSE 文件。
## 相关文件(仓库中)
- 主脚本(可执行文件) — 主要接口。
- README.md(本文件) — 用户指南。
- LICENSE — GPL-3.0。
## 最后说明
这是一款移动优先的映射工具 —— 专为 Android/Termux 上的灵活性而设计。如果您愿意,我可以生成一个扩展版的 README 变体,内容包括:
- 脚本生成的示例 JSON/JSONL 行,
- 可直接复制的 `google-earth` KML 代码片段预览,
- 或关于将 JSONL 转换为 GeoJSON 以用于 GIS 工作流的简短教程。
## 支持
### 联系我:
如有任何问题、建议或疑问,请通过以下方式联系:
- *Email:* support@burixon.dev
- *联系表单:* [点击这里](https://burixon.dev/contact/)
- *Bug 报告:* [点击这里](https://burixon.dev/bugreport/#Termux-WiFi-map)
### 支持我:
如果您觉得这个脚本有用,请考虑通过捐赠来支持我的工作:
[**捐赠**](https://burixon.dev/donate/)
您的贡献有助于开发新项目和改进现有工具!
标签:Android, CSV, DSL, GPS定位, JSON, KML导出, Python替代, Termux工具, WiFi安全, WiFi扫描, 信号监测, 地理位置, 安全运营中心, 应用安全, 开源, 插件系统, 无Root, 热点探测, 目录枚举, 移动安全, 网络映射, 轻量级工具