
**在手机上,排好字典顺序,自动一本接一本试出你自己路由器的 WPA 密码。**
多字典计划与自动接力 · 同一网络只试一次 · 现场生成候选 · 逐条真实关联验证 · 内置精选字典,也能用你自己的
[](https://github.com/wlmosv-png/wpaforge/releases/latest)
[](https://github.com/wlmosv-png/wpaforge/releases/latest/download/WPAForge.apk)
[](https://github.com/wlmosv-png/wpaforge/stargazers)
[](https://wlmosv.dpdns.org/wpaforge/)
[English](README_EN.md)
---
> ### 开始之前
>
> - **需要 Root**(Android 8.0 及以上):判定依赖 `su + cmd wifi`,没有它就动不了。
> - **只用在你自己拥有、或已获得授权的网络上。** 对别人的网络发起关联尝试是违法行为,
> 路由器那边会记下你的 MAC 和时间。
> - 全程在本机完成,不联网上传任何东西;命中的口令在本机只以密文保存。
## 目录
- [它能做什么](#它能做什么)
- [两种执行方式](#两种执行方式)
- [多字典计划:排好顺序,自动一本接一本](#多字典计划排好顺序自动一本接一本)
- [同一网络只试一次:跨字典候选过滤](#同一网络只试一次跨字典候选过滤)
- [它怎么找密码](#它怎么找密码)
- [字典:用哪本都行,跑过就看得出好坏](#字典用哪本都行跑过就看得出好坏)
- [判定:宁可说「不确定」,也不报假成功](#判定宁可说不确定也不报假成功)
- [常见疑问](#常见疑问)
- [字典管理](#字典管理)
- [观测:一眼看出该用哪条信道](#观测一眼看出该用哪条信道)
- [快速开始](#快速开始)
- [界面预览](#界面预览)
- [和别的做法比](#和别的做法比)
- [已知限制](#已知限制)
- [安装](#安装)
- [构建](#构建)
- [License](#license)
## 它能做什么
- **按目标现场生成候选**:SSID、厂商、门牌、姓名、生日、手机号都能当依据
- **用内置字典,或用你自己导入 / 下载的字典** —— 两种都支持,跑法完全一样
- 每条候选真实发起一次关联,逐条给结论:**成功 / 密码错 / 不确定**
- 结果按**本机战绩**排序:字典页直接写出「这本在你这里命中几次、平均几条中一次」
- 多目标队列:排好的一串目标依次执行,每个可单独暂停 / 继续
- **不动你原来的网络配置**:动手前把目标原配置加密记下,收尾写回并回读确认;
没还原成功的记录留在「审计」页的恢复状态区,可重试 / 清理
- 观测页:频谱雷达 + 信道占用与建议,该换哪条信道一眼看得出
- 局域网侦察:扫同网段存活主机与常见端口,按厂商归类,报告可导出
- WPS 四层候选(厂商算法 / 内置弱 PIN 表 / 自定义列表 / 完整枚举),含拆半攻击与断点续跑
- 离线校验 `.cap` / `.hc22000`:EAPOL 与 PMKID 两条路径,1 万条约 37 秒
- 字典能搜能合并能编辑(包含 / 前缀 / 后缀 / 正则),大字典编辑不再丢数据
- 锁屏继续跑;被系统杀掉也能续上(进度节流落盘)
## 两种执行方式
| 方式 | 适合场景 | 行为 |
|---|---|---|
| **单本字典** | 只跑一本,或先试小而精的表 | 选一本 → 跑完即停 |
| **多字典计划** | 手上好几本,想一次跑完 | 排好顺序 → 自动一本接一本,命中即停,没命中自动换下一本 |
两种方式共用同一套判定、同一份「这个网络试过什么」的记录。
## 多字典计划:排好顺序,自动一本接一本
以前一次只能跑一本字典,跑完要么没结果、要么手动再选下一本。现在可以把几本字典排成一个计划:
- 按顺序执行,**命中立即停止**,没命中自动换下一本;
- 「自动跑下一本」可以开(连跑到底)也可以关(每本跑完停下等你决定);
- 破解页直接管理计划(上移 / 下移 / 移出本计划),不用来回切页面;
- 支持暂停、继续、停止;**已经跑完的字典不会被重新跑一遍**;
- 页面实时显示「第几本 / 当前字典 / 下一本 / 整体进度」;
- 计划跑完、暂停、被阻塞时,页面提示与真实状态一致,不会拿单本字典的完成文案顶替。
> **计划与目标网络绑定**:A 网络和 B 网络各有一份计划与进度,互不干扰;切换网络不会串台,
> 切回原网络时原计划与进度原样恢复。
>
> **运行中不能调整顺序**(避免任务与进度错位):计划执行期间「管理计划顺序」会明确提示
> 先暂停或停止;暂停或停止之后即可自由调整。
## 同一网络只试一次:跨字典候选过滤
同一个 Wi-Fi 下,**已经确认试错的密码,在其它字典里不会再试第二遍**。
- 换字典、换顺序、重新选择字典,都不会重复劳动;
- 界面如实拆开显示:**已证实错误 / 没跑出结果 / 本次将跳过 / 实际待执行**;
- 这个「跳过多少条」按**当前计划里真实存在的候选**算出来,不是拿历史记录总数充数。
**两档策略,边界说清楚:**
| 档位 | 会跳过什么 | 不跳过什么 |
|---|---|---|
| **保守(默认)** | 只跳过**已证实错误**的候选 | 所有「没跑出结果」的候选都会重试 |
| **省时** | 额外跳过「上次跑过、连接已确认结束、但没跑出结果」的候选 | 当时还连在目标上(无法判断)的候选,两档都不跳 |
开启「省时」之前会明确提示:**会跳过多少条、其中多少条是没跑出结果的**,
并说明「如果上次是因为信号差、路由器退避或中途中断,正确密码可能就在里面」。
不确定的结果(超时、信号差、中途停止)**不会被当成密码错误**,下次仍会重试。
## 它怎么找密码
三条路,你挑:
**① 按目标现场生成。** SSID 叫 `FAST_E972`,它就造 `fast_e972`、`faste972`、`fast2026`
这类;线索里填了姓名、生日、手机号,才会造 `zhangwei1990`、`138xxxxxxxx` 这种。
厂商名从 BSSID 查 IEEE 的 OUI 表(打进包里;查不到就留空,不编一个出来)。
**② 用内置字典。** 7 份精选表:通用弱口令、纯数字、WPA 高频榜、中文高频、年度口令……
每一份都写清它为什么值得留着,点开就看得到。
**③ 用你自己的字典。** 导入 txt,或从在线来源直接下载,都行 —— 跟内置表一样跑,
一样记战绩。
**每条候选都要真发一次关联请求。** 快的 1 秒给结论,慢的 5 秒以上;手机一次只能连
一个网络,这是 Android 的限制,绕不过去 —— 所以「先试哪条」比「有多少条」重要得多:
十万条盲试是按天算的,几百条排好序的通常几分钟就完。
## 不去动你原来的网络
破解必须反复删掉目标配置再重连,所以收尾这一步决定「你自己的网会不会被搞坏」:
- 动手之前先把目标的原配置(含加密后的原口令)写进本地记录;
- 结束时按状态处理:命中就保留那条正确配置,其余情况先删掉候选残留、再用原口令
把配置写回,并**回读确认**;
- 目标不在覆盖范围内、此刻连着别的网、观察窗口内没连上 —— 都**不算恢复失败**,
判据只看配置有没有写回;
- 读不到已保存网络列表时不下结论:记录保留、可重试、按存在残留风险处理;
- 没处理完的记录会列在「审计」页的**恢复状态**里,可以重试、查看详情或清理
(清理只删本地记录,不会改动系统里的网络配置)。
自动重试有间隔(10 分钟)与上限(3 次),到上限写入归档状态,不会一直重试;
**同一目标**存在未解决的记录时,新任务会先被挡下并说明原因。
## 字典:用哪本都行,跑过就看得出好坏
内置只留精选,不再往里塞几万条的大表(那种表的实际贡献,本机 107 次命中里一次都没验出来过)。
你自己导入的字典和解密主体完全一样:能跑、能合并、也会记战绩。跑过之后,
字典页会写成这样:
```text
01 内置弱口令常用 核心 · 历史命中 57/73 · 平均 2 条中一次
xato 千万库 TOP 10000 历史命中 14/14 · 平均 23 条中一次
```
默认就按「命中率」排序 —— 先跑在你自己的网络里证明有效的那本。这份战绩只读本机
历史的前几列,不解密任何口令。
字典的管理、排序、多选、回收站与编辑器见上面「[字典管理](#字典管理)」一节。
## 判定:宁可说「不确定」,也不报假成功
每条候选跑完只有三种结论,而且都给得出依据:
| 结论 | 依据 |
|---|---|
| **成功** | 4-Way Handshake 完成,且 SSID / supplicant 状态 / IP **同源于同一行输出** |
| **密码错** | 有可观察的失败证据(例如 AP 重发握手第一帧) |
| **不确定** | 等满时限却什么都没观察到 —— 单独一栏,不混进「密码错」,也不算「已试过」 |
netId 只当**归属证据**:只有本条尝试与状态两侧都拿到非零 netId 且不一致时,才降级为
不确定;取不到或为 0 时一律不否决。
这条是踩过坑之后改的:早期版本出现过系统弹「无法连接到 BTWIFL_0923」、应用却报
「已连上」。现在宁可少报一个成功,也不多报一个假成功。
## 常见疑问
### 「软件不能保证 100% 判定正确,那我为什么还要用它?」
因为**判定本来就做不到 100% 确定** —— 这不是 WPAForge 的短板,而是这件事本身的边界:
1. **客观限制**:Android 的网络栈、厂商驱动、路由器固件行为,以及无线事件的反馈方式,
都不在应用的控制范围内。同一台路由器在不同时刻对同一件事的反馈也可能不同。
2. **发出连接请求 ≠ 系统按预期执行**;**连接失败也不必然等于密码错误**
—— 可能是驱动超时、路由器退避、信道切换或干扰。
3. WPAForge 的设计原则是:**有归属证据才下确定结论,证据不足就保留「不确定」**。
4. 「不确定」既不会被冒充成「确认失败」,也不会因此把候选永久排除 —— 下次仍会再试。
确定失败的结论必须能归属于**本次**尝试,而不是沿用上一轮的残留证据。
所以你用它换到的不是「百分百判定」,而是:
- **少做错误归因**:不会因为一次环境噪声就把正确密码划掉;
- **少做错误排除**:不确定的候选不会被永久跳过;
- **少做重复劳动**:同一网络下已确认试错的候选,在其它字典里不会重复出现。
**宁可承认无法确定,也不把没有证据的失败当成事实。**
## 字典管理
- 列表直接显示每本字典的**条数、执行状态、是否已在计划中**;
- 多选后可批量**加入 / 移出计划**;计划卡片默认折叠,不再占满首屏;
- **删除走回收站**:先移入回收站,可以恢复,也可以在里面彻底删除,不会一删就没;
- 编辑器带**行号栏**、光标行列、定位行与查找 —— 两千多行的字典也能精确定位到某一行;
- **字典续命**:字典改名、移动或重新导入之后,按**内容**识别 —— 内容相同可以接着上次
的位置继续跑,不必从头再来;内容确实变了会明确提示「不继承旧进度」,
不会拿旧位置去跑一份新内容。
## 观测:一眼看出该用哪条信道
圆盘就是频谱:上半圆是 2.4G 的 14 条信道,下半圆是 5G 的 4 个频段;半径=信号强度,
越靠里越强。**同一格里的点越多,那条信道就越挤。**
盘下面直接给结论,不用自己数:
```text
2.4G 25 台 5G 4 台 最挤 ch 5 · 7 未加密 0 台 最强 -20 dBm
```
头部只有一句 `刚刚更新` / `最后更新 N 秒前`;扫到新设备或有人离开时,
会写成 `新增 2 台 · 消失 1 台`。
## 快速开始
```text
1. 打开「观测」页,扫一下附近,选中你的目标
2. 打开「破解」页:让它现场派生,或加载内置 / 自己的字典
3. 点开始,锁屏等结果 —— 命中的口令会直接标出来,可一键复制
```
## 界面预览