重要声明与法律风险
在开始之前,必须强调以下几点:

- 仅供学习和授权测试:
Reaver是一个强大的网络安全测试工具。请务必在您拥有所有权或已获得明确书面授权的网络上进行测试。 - 法律后果:未经授权对任何网络进行渗透测试是违法行为,可能导致严重的法律后果,包括罚款甚至监禁。
- 设备损坏:在极少数情况下,不正确的使用可能会导致无线路由器固件损坏,使其无法工作。
Reaver 简介
Reaver 是一款专门用来攻击 WPS PIN 的工具,WPS 的设计初衷是为了简化 Wi-Fi 的连接过程,但它存在一个致命的漏洞:PIN 分为前半部分(4位)和后半部分(4位),攻击者可以分别尝试这两部分,由于前半部分的校验结果会立即反馈给攻击者,这可以将一个 11,000,000 种可能的暴力破解(8位PIN)缩减为大约 11,000 种(攻击前半部分),大大缩短了破解时间。
Reaver 通过发送特制的 WPS 探测包,与路由器进行交互,暴力猜测 PIN 码,一旦 PIN 码被成功破解,路由器通常会吐出 WPA/WPA2 的预共享密钥(PSK),也就是 Wi-Fi 密码。
Reaver 的核心参数
以下是 reaver 命令中最常用和最重要的参数,我们将它们分为几类以便理解。
基本目标参数
这是使用 reaver 时必须指定的参数,告诉它要攻击哪个目标。

-i <interface>: 指定无线网卡接口。- 示例:
-i mon0(在 monitor 模式下) - 示例:
-i wlan0(在 managed 模式下,但 monitor 模式更佳)
- 示例:
-b <BSSID>: 指定目标路由器的 MAC 地址。- 示例:
-b AA:BB:CC:DD:EE:FF
- 示例:
-c <channel>: 指定目标路由器所在的信道。- 示例:
-c 6 - 最佳实践: 使用
airmon-ng扫描时,它会自动显示信道,指定信道可以避免reaver在不同信道间切换,提高效率。
- 示例:
攻击行为与速度控制参数
这些参数控制 reaver 如何进行攻击,是调整攻击效率和避免被路由器“封杀”的关键。
-d <delay>: WPS 请求之间的延迟(以毫秒为单位)。这是最重要的调优参数之一。- 默认值通常是 1(毫秒)。
- 作用: 增加延迟可以降低对路由器的压力,减少其锁定 WPS 功能的可能性,如果路由器开始频繁响应“拒绝”或“超时”,可以尝试增加此值。
- 示例:
-d 2(延迟2毫秒),-d 5(延迟5毫秒)
-t <timeout>: 等待路由器响应每个 WPS 请求的超时时间(以秒为单位)。- 默认值通常是 5(秒)。
- 作用: 如果网络环境不稳定或路由器响应慢,可以适当增加超时时间,避免
reaver错误地认为路由器无响应而过早放弃尝试。 - 示例:
-t 10(超时10秒)
-S: 启用“扫描模式”。reaver不会立即开始攻击,而是先扫描目标路由器的 WPS 功能状态,并显示一些有用的信息,WPS 版本、是否为锁定状态等。强烈建议在正式攻击前先使用此参数。- 示例:
reaver -i mon0 -b AA:BB:CC:DD:EE:FF -S
- 示例:
-L: 启用“锁定检测”模式。reaver会尝试检测路由器是否因多次错误尝试而暂时锁定了 WPS 功能。- -N: 启用“No-LP”模式,某些路由器在 WPS 请求中会忽略一个特定的数据包(
EAPOL-NACK),此参数可以绕过这个问题。 - -a: 自动模式。
reaver会尝试自动选择最佳的攻击参数组合。
输出与调试参数
这些参数控制 reaver 的输出信息,对于排查问题和了解攻击进度至关重要。
- -v: 显示详细输出,可以看到
reaver发送和接收的每一个数据包的详细信息,对于调试非常有用。 - -vv: 显示更详细的输出。
- -q: 静默模式,只显示最重要的信息(如进度和结果)。
- -D: 启用调试日志。
reaver会将其所有活动记录到/var/log/reaver/reaver.log文件中,方便后续分析。 - -p
指定一个特定的 PIN 码进行测试,而不是进行暴力破解,通常用于测试或已知部分 PIN 的情况。
会话恢复参数
Reaver 可以保存攻击进度,以便在断开连接后可以从中断的地方继续。
-s <seed>: 指定一个攻击种子值,这相当于告诉reaver从暴力破解的哪个点开始。-l <lock_file>: 指定一个锁定文件。reaver会检查此文件,如果文件存在,它会从中断的会话中恢复攻击。-f: 如果检测到 WPS 被锁定,reaver不会退出,而是会持续检查,直到锁定解除后自动恢复攻击。
实战示例
假设你已经使用 airmon-ng 将你的网卡 wlan0 启动为 mon0 监听模式,并且已经通过 airodump-ng 找到了目标路由器的 BSSID 和信道。
示例 1:标准攻击
这是最基础的攻击命令,使用默认参数。
reaver -i mon0 -b AA:BB:CC:DD:EE:FF -c 6
示例 2:带有详细输出的攻击
在攻击时,你通常想看到更多细节,了解攻击是否正常进行。
reaver -i mon0 -b AA:BB:CC:DD:EE:FF -c 6 -v
示例 3:保守的攻击(避免路由器锁定)
如果目标路由器比较敏感,或者你发现攻击很快被拒绝,可以降低攻击速度。
reaver -i mon0 -b AA:BB:CC:DD:EE:FF -c 6 -d 2 -t 10 -v
-d 2: 延迟 2 毫秒。-t 10: 超时 10 秒。
示例 4:先扫描,再攻击
这是推荐的“安全”做法,先扫描目标,了解其 WPS 状态。
# 第一步:扫描 reaver -i mon0 -b AA:BB:CC:DD:EE:FF -c 6 -S # 如果扫描结果显示 WPS 可用且未被锁定,再开始正式攻击 # 第二步:正式攻击 reaver -i mon0 -b AA:BB:CC:DD:EE:FF -c 6 -v
示例 5:断点续传
reaver 因故中断(例如网卡掉线),你可以恢复之前的会话。
# 假设上次中断的命令是 reaver -i mon0 -b AA:BB:CC:DD:EE:FF -c 6 # 这次只需加上 -f 参数,它会自动查找并恢复会话 reaver -i mon0 -b AA:BB:CC:DD:EE:FF -c 6 -f
常见问题与解决方案
-
WPS PIN appears to be locked- 原因: 路由器检测到多次错误尝试,暂时禁用了 WPS 功能,通常是 60 秒到 24 小时不等。
- 解决方法:
- 等待: 最简单的方法是等待路由器自动解锁。
- 重置路由器: 拔掉路由器电源,等待 30 秒后再插上,有时可以清除锁定状态。
- 使用
-f参数: 让reaver持续检查,一旦解锁就自动恢复攻击。
-
Failed to associate with target AP- 原因: 网卡没有正确关联到目标路由器,这通常发生在网卡不在正确的信道或 monitor 模式配置有误时。
- 解决方法:
- 确认网卡在 monitor 模式 (
airmon-ng check)。 - 使用
airodump-ng再次确认目标信道的 BSSID。 - 确保你的
-c参数与目标信道完全一致。
- 确认网卡在 monitor 模式 (
-
Received EAPOL-NACK- 原因: 这是一个常见的错误,表示路由器拒绝了你的 WPS 请求,可能是路由器已锁定,也可能是
reaver的数据包与路由器不完全兼容。 - 解决方法:
- 尝试使用
-N参数。 - 尝试增加
-d延迟,降低攻击速度。 - 尝试不同的
reaver版本,因为不同版本对某些路由器的兼容性不同。
- 尝试使用
- 原因: 这是一个常见的错误,表示路由器拒绝了你的 WPS 请求,可能是路由器已锁定,也可能是
-
攻击速度非常慢
- 原因: 信号弱、信道干扰、路由器响应慢。
- 解决方法:
- 尽量靠近路由器,获得更强的信号。
- 在干扰较少的信道进行攻击。
- 增加
-d和-t参数的值。
Reaver 的替代工具:Bully
Bully 是另一个非常流行的 WPS 攻击工具,它与 Reaver 的工作原理类似,但在某些路由器上表现更好,尤其是在处理 EAPOL-NACK 响应方面。
Bully 的基本用法与 reaver 类似:
bully -b AA:BB:CC:DD:EE:FF -i mon0 -c 6
如果你发现 reaver 攻击某个路由器总是失败,不妨试试 bully,有时会有意想不到的效果。
希望这份详细的指南能帮助你理解和使用 Reaver,请务必负责任地使用这些知识。
