简介:西南科技大学无线网络安全技术实验四报告,聚焦使用aircrack-ng工具完成WPA/WPA2密码破解的完整流程。面向无线网络安全课程学习者,报告基于Kali Linux和手机热点环境,完整记录了从开启无线网卡监听模式、利用airodump-ng扫描目标AP与客户端、使用aireplay-ng实施deauth攻击抓取握手包,到通过aircrack-ng加载字典文件成功破解密码的各个阶段,关键命令与参数说明清晰,并配有实验结果截图,便于读者对照复现并深入理解WPA握手包捕获与暴力破解原理。包含1份doc文档,约1.37MB,目前已有812人学习。除操作流程外,报告还包含讨论与分析,梳理了Aircrack-ng的破解原理,总结了家用WiFi安全加固的具体建议(如避免弱密码、绑定MAC地址、管理密码分类),并记录了实验中容易遇到的抓包文件路径等典型问题与解决思路,适合完成课程实验、备考或自学无线安全攻防的读者借鉴。
1. 先说清楚:aircrack-ng 破解 WPA,实验课到底在练什么
不少高校的无线网络安全实验里,都有一道绕不开的必修题:用 aircrack-ng 对一个 WPA/WPA2-PSK 接入点做口令破解,西南科技大学的无线网络安全实验也不例外。第一次做这个实验的人,容易把它等同于「破解 Wi-Fi 密码」,其实课程练的是两件事:第一,能不能完整抓到客户端和 AP 之间的四次握手报文;第二,能不能理解 WPA2-PSK 的认证机制在离线字典攻击面前到底有多脆弱。整个过程不需要高端硬件,一台装了 Kali Linux 的虚拟机,加一块支持监听模式的 USB 网卡,就能在实验环境里完整复现。本文按「原理准备 → 抓包 → 离线破解 → 排错 → 进阶验证」的顺序,把每一步命令、参数和失败原因写透,照着操作就能跑通。
2. WPA 握手的原理与实验准备:为什么抓包比解包更关键
2.1 WPA/WPA2-PSK 的身份认证流程:四次握手里藏着什么
WPA2-PSK 在终端和 AP 建立连接时,并不会直接传输口令。AP 侧用自己的预共享密钥(也就是你配置的 Wi-Fi 口令)与 SSID 一起做 PBKDF2 派生,生成一个 256 位的 PMK。之后四次握手会交换两个随机数:AP 生成的 ANonce 和客户端生成的 SNonce。双方各自用 PMK 加上这两个随机数、双方 MAC 地址,推导出 PTK,最后在 EAPOL 帧里放一段 MIC 校验值,证明对方确实持有同一把 PMK。
对做实验的人来说,这套流程最关键的结论是:只要完整截获四次握手里的 ANonce、SNonce 和 MIC,就可以在本地对候选口令做同样的推导,再比对 MIC 是否一致。这意味着 WPA2 破解在本质上是离线字典攻击——抓包必须在现场,跑字典可以在任何地方慢慢算。这也是实验和真实场景最大的区别:实验环境里 AP 和客户端都是自己搭的,信号、位置、重连时机都可控;真实环境里抓包靠运气,破解靠算力。先理解握手内容,后面每条命令在做什么才不会变成黑匣子操作。
2.2 实验环境清单:网卡芯片、虚拟机直通与工具族分工
做这个实验前,建议先按下面的清单把环境凑齐,每一项都有明确的选型理由。
| 环境项 | 推荐选型 | 注意 |
|---|---|---|
| USB 无线网卡 | Atheros AR9271、Ralink RT3070 芯片的网卡 | 看芯片型号而不是品牌,这两类在 Kali 下对监听模式支持最省心 |
| 操作系统 | Kali Linux 虚拟机 | 自带 aircrack-ng 全套工具,省去编译安装 |
| AP 设备 | 家用路由器,或手机开热点 | 实验时建议关闭 802.11w 管理帧保护,否则 deauth 触发会失败 |
| 工具套件 | aircrack-ng、可选 WiFite | 手工敲命令跑通一遍,再考虑自动化脚本 |
aircrack-ng 不是单个工具,而是一套工具族:airmon-ng 负责切换网卡监听模式,airodump-ng 负责扫描和抓包,aireplay-ng 负责发送注入帧触发握手,aircrack-ng 负责最终的字典破解。四条核心命令各管一段,实验时最好逐个使用,别一上来就套 WiFite 这类自动化封装脚本。它虽然能省去手敲命令的功夫,但会把握手过程、协议字段这些关键细节藏起来,出了问题反而更难排查。
如果实验目标 AP 支持 PMKID 探测,也可以用 hcxdumptool 抓 PMKID——这是另一种不需要等客户端重连的破解路径。但课堂实验一般还是以抓四次握手为主,PMKID 放到后面进阶再看。
2.3 把网卡切成监听模式:airmon-ng 与 NetworkManager 的冲突
监听模式是后续所有抓包动作的前提。普通网卡默认工作在 managed 模式,只能收发与自身连接相关的帧;切到 monitor 模式后,网卡才能捕获空气中所有无线帧。
# 确认网卡已被识别,记下接口名 iw dev # 停用 NetworkManager 等会干扰监听的服务 sudo airmon-ng check kill # 把 wlan0 切换为监听模式,生成 wlan0mon sudo airmon-ng start wlan0 # 查看监听接口是否就绪 iw dev wlan0mon infoairmon-ng check kill这一步不能省。NetworkManager 会周期性扫描信道,导致网卡频繁跳频,抓包时大量丢帧。执行后接口名通常从 wlan0 变成 wlan0mon,后续 airodump-ng、aireplay-ng 的命令都针对这个监听接口。如果机器上有多块无线网卡,建议先用iw dev确认哪块是 USB 外接的,别误把内置网卡切了导致宿主机断网。
3. 用 airodump-ng 锁定目标并抓取 WPA 握手包
3.1 先全信道扫描,再锁定目标信道
抓包的第一步不是直接指定信道,而是先做一次全信道扫描,搞清楚实验 AP 在哪个信道、信号强度如何、有没有客户端在线。
# 全信道扫描周围所有 AP sudo airodump-ng wlan0mon扫描界面里会列出附近所有 AP 的 BSSID、信道、加密方式和信号强度,下方区域则列出与各 AP 关联的客户端 MAC。找到实验 AP 后记下它的 BSSID 和信道号。这里的教训是:不要图省事直接在全信道模式下等握手包。网卡在全信道模式下要不断跳频,2.4GHz 和 5GHz 之间来回切换时很容易漏掉 EAPOL 帧,而握手过程往往只持续一两秒。
锁定信道后重新启动抓包:
# 锁定信道并指定保存文件名,等待握手出现 sudo airodump-ng -w cap/wpa --bssid 00:11:22:33:44:55 -c 6 wlan0mon-w指定抓包文件前缀,实际会生成 cap/wpa-01.cap 这样的文件,文件名后的序号是自动加的。-c指定信道,--bssid指定目标 AP,这样 airodump-ng 只关注这个 AP 的帧,减少无关干扰。如果 AP 开启了 5GHz 频段,注意把信道号改成实际的 5G 信道,比如 36、149 等。
3.2 主动触发握手:aireplay-ng 的 deauth 攻击
有客户端在线但一直没有握手包出现,是因为握手只发生在客户端重新关联 AP 的时候。实验里最常见的手段是主动发送 deauth 帧,把客户端踢下线,让它自动重连,重连过程就会产生四次握手。
# 发送 5 个 deauth 帧,踢掉指定客户端 sudo aireplay-ng -0 5 -a 00:11:22:33:44:55 -c 00:AA:BB:CC:DD:EE wlan0mon-0表示发送 deauth 攻击,后面的数字是发送个数。-a是目标 AP 的 BSSID,-c是客户端 MAC 地址。发送后观察 airodump-ng 界面,当客户端重新连接时,右上角对应 BSSID 那一行会出现WPA handshake字样,表示握手抓到了。
这里有个容易翻车的细节:deauth 只是把客户端踢掉,握手是否出现取决于客户端是否立刻重连。手机通常会自动重连,但有些电脑网卡驱动会等十几秒甚至更久。如果发送完 deauth 后迟迟看不到握手标志,可以适当增加发送次数,或者把客户端从实验 AP 的覆盖范围移出去再接回来。实验环境里最好关闭 AP 的 802.11w 保护,否则 deauth 帧会被直接丢弃,后面避坑章节还会展开说。
3.3 验证握手包:EAPOL 帧数量与 Wireshark 确认
看到WPA handshake字样也不能完全放心,因为 airodump-ng 的判断标准有时会宽松。保险的做法是用 Wireshark 打开 cap 文件,过滤 EAPOL 帧确认完整性。
# 用 tshark 检查 cap 文件里的 EAPOL 帧 tshark -r cap/wpa-01.cap -Y eapol一个完整四次握手应该有 4 个 EAPOL 帧,对应消息类型 1、2、3、4。如果只看到 1 和 2,说明握手被中断,后面 aircrack-ng 会报错。另外重传的 EAPOL 帧也会混在抓包里,Wireshark 会标记为[Retransmission],这类帧不能作为有效握手使用。最省事的办法是重新抓一轮,别在残缺的 cap 文件上浪费时间。
4. 用 aircrack-ng 跑字典:口令空间、参数与效率
4.1 aircrack-ng 的最小命令与参数含义
握手包到手后,破解阶段可以在本地任意机器上进行,不要求继续连着无线网卡。aircrack-ng 会依次读取字典中的每个候选口令,重复握手时的 PMK 推导过程,并与抓到的 MIC 比对。
# 用字典文件破解 WPA 握手包 sudo aircrack-ng -w wordlist.txt -b 00:11:22:33:44:55 cap/wpa-01.cap-w指定字典文件路径,-b指定目标 BSSID。如果 cap 文件里只包含一个 AP,-b可以省略;如果抓包时混入了附近其他 AP 的帧,-b就能避免 aircrack-ng 在无关目标上浪费时间。破解过程中会实时显示当前尝试的口令数量和速度,找到口令后会输出KEY FOUND!并打印明文口令。
有些旧版本的 aircrack-ng 对 WPA 需要显式指定攻击模式,加-a 2即可。新版本会自动识别,但加上也无害。需要注意 aircrack-ng 默认只跑精确匹配,不做变形、不加后缀。字典里有什么,它就只能试什么。
4.2 字典选型:rockyou、实验字典与社工词
字典决定了破解上限。Kali 自带 rockyou.txt 压缩包,解压后大约一千多万条,覆盖大量常见弱口令:
# 解压 Kali 自带的 rockyou 字典 sudo gzip -dk /usr/share/wordlists/rockyou.txt.gz实验口令是admin123、12345678这类弱口令时,rockyou 几秒就能跑出来。但这里有个常见误区:很多人拿着大字典跑了一整夜没结果,第一反应是工具不行,其实是字典里根本没有目标口令。WPA2 的字典攻击就是这样——口令不在字典里,算力再强也白搭。
实验场景里更快的做法是专门生成一个小字典,把实验口令相关的词都放进去:学校名称、课程英文名、SSID 名、老师常用的口令习惯、纯数字组合等。先拿这个字典验证整条链路是通的,再上大字典跑,能省大量等待时间。社工字典生成器可以按目标信息生成候选口令,但实验课一般用不上,了解即可。
4.3 效率边界:CPU 对比 GPU,什么时候换 hashcat
aircrack-ng 默认跑 CPU,同一个握手包交给 hashcat 用 GPU 跑,速度通常能提升几个量级,但原理完全相同——都是对候选口令做 PBKDF2 推导。实验环境里只要口令在字典中,aircrack-ng 几秒到几分钟就能出结果,没必要一上来就上 GPU。
# 将 cap 转成 hashcat 的 22000 格式 hcxpcapngtool cap/wpa-01.cap -o wpa.22000 # 用 hashcat 跑同一个握手包 hashcat -m 22000 wpa.22000 wordlist.txthcxpcapngtool是 hcxtools 包里的工具,Kali 一般自带,没有就apt install hcxtools装一下。22000 格式携带了 SSID、MAC、nonce 和 MIC 等全部必要信息,hashcat 按-m 22000识别。换工具只是换计算平台,破解逻辑没有变,所以不要指望 hashcat 能把字典里没有的口令变出来。
5. 实验避坑指南:抓不到握手包、破不出来时先查这五处
5.1 网卡在虚拟机里丢包严重,握手抓了十几次都没成
现象:airodump-ng 界面里信号强度显示很好,但 EAPOL 帧一直不出现,或者出现了也不完整。
原因:虚拟机 USB 直通常常只给到 USB 2.0 带宽,抓包时磁盘 I/O 和虚拟机调度也会造成丢帧;另一些网卡驱动在虚拟机里处于兼容模式,monitor 模式的收包能力下降。
解决:先在虚拟机设置里确认 USB 控制器是 3.0,网卡直通时选择 USB 3.0 接口。关闭虚拟机的无线省电选项和宿主机无线网卡的电源管理。如果还是频繁丢帧,最稳妥的做法是在宿主机 Linux 里直接跑 airodump-ng 抓包,把 cap 文件拷回虚拟机跑字典。
5.2 deauth 发出去了,客户端就是不重连
现象:aireplay-ng 命令行显示发送成功,但 airodump-ng 里客户端一直不掉线,WPA handshake迟迟不出现。
原因:大多数手机和电脑系统会忽略未经验证的 deauth 帧,或者 AP 开启了 802.11w 管理帧保护,deauth 被直接丢弃。有人把这归为玄学,其实多半是这两类原因。
解决:实验 AP 上关闭 802.11w 再试;换一台旧的实验路由器;或者干脆等客户端自然重连——把客户端 Wi-Fi 断开再手动连接,同样会产生四次握手。想绕开重连等待的话,可以尝试 hcxdumptool 抓 PMKID,那类探测帧由 AP 主动发出,不需要客户端在场。
5.3 Wireshark 里看着有 EAPOL,aircrack-ng 却说不适用
现象:cap 文件里明明能过滤出 EAPOL 帧,aircrack-ng 却提示找不到可用的 WPA 握手包。
原因:抓到的帧是重传的,或者握手只抓到一半,消息类型 1 和 2 齐全但 3 和 4 缺失。某些客户端在重连时发送的 EAPOL 帧格式不标准,也会导致识别失败。
解决:用tshark -r cap/wpa-01.cap -Y eapol看消息类型,确认 1、2、3、4 都齐。有重传标记的话,在 Wireshark 里右键禁用该帧后再另存。不行就重新抓一轮,抓包时多等几秒,让完整的四次握手跑完再停止。
5.4 字典跑完了,没有任何结果输出
现象:aircrack-ng 跑完整个字典,没有找到口令,界面停在没有KEY FOUND的状态。
原因:口令不在当前字典里。这是最直接的原因,和工具、网卡都无关。
解决:先把实验口令手工写进一个只有十几行的测试字典,确认链路通畅。如果测试字典能破出来,说明问题只在于目标口令强度;再决定是加规则集变形跑,还是把强口令换回弱口令完成实验。课堂实验要的是理解和流程,不必为了证明工具厉害而把口令设成几十位随机字符串。
5.5 实验结束不清理环境,下一个实验直接翻车
现象:做完实验后网卡无法正常连接 Wi-Fi,或者下一个实验启动虚拟机时报无线接口 busy。
原因:监听进程没有关闭,NetworkManager 被airmon-ng check kill杀掉后没有恢复,网卡还卡在 monitor 模式。
解决:按顺序执行恢复命令:
# 停止监听接口,恢复 managed 模式 sudo airmon-ng stop wlan0mon # 重启网络管理服务 sudo systemctl restart NetworkManager # 确认接口状态 iw dev如果以后实验做得多,可以把这几行写成一个cleanup.sh脚本,做完实验跑一次,省得每次手动敲三遍。
6. 进阶验证:把同一个握手包交给 hashcat 跑规则集
6.1 转换格式:hcxpcapngtool 与 22000 格式
老教程里常见的是用 cap2hccapx 转成 hccapx 格式,新版 hashcat 建议直接转 22000。转换后可以用同一份字典再跑一次,结果应当与 aircrack-ng 一致——这本身就是一个很好的交叉验证。
hcxpcapngtool cap/wpa-01.cap -o wpa.22000 hashcat -m 22000 wpa.22000 wordlist.txt -r rules/best64.rule-r rules/best64.rule是 hashcat 的规则集参数。规则集不是新字典,而是对已有字典里的每一条做变形,比如追加数字、替换大小写、在末尾加年份等。它能让一份弱口令字典覆盖更多变体,也是真实口令爆破里最常见的手法。
6.2 用规则集补强字典:从实验破解到口令习惯
如果你的实验口令恰好是admin加两位数字的组合,rockyou 可能不含这种组合,但 best64 规则会从admin变形出admin12、admin2024等候选词。这就是规则集的价值——不扩大字典体积,而是扩大口令覆盖形态。
验证方法很简单:实验 AP 口令设成admin123,先用原字典跑,再用加了规则集的命令跑,对比一下两边的耗时和结果。这一组对照数据比任何理论解释都有说服力,能直观看到口令变形工具的实战意义。
6.3 回到实验本身:这趟破解流程到底证明了什么
整套实验做下来,我最大的血泪经验可以浓缩成三句话:不要一开始就在真实路由器上做实验,先用手机热点配合,热点默认没有 802.11w 干扰,抓握手包的成功率高很多;不要迷信大字典,实验的第一步永远是「把实验口令手工写进字典,30 秒出结果」,以此确认整条链路是通的;抓包阶段宁可多等两分钟,也别拿着残缺的 cap 文件反复跑字典,那是纯浪费时间。
这套流程验证的不只是工具好不好用,更关键的是让人直观看到 WPA2-PSK 的边界:握手包一旦被截获,口令强度就完全暴露在字典空间面前。实验最后,可以把 AP 口令换成Tr0ub4dor&3这类强口令,同一份字典、同一套规则集,跑多久都破不出来。这个对比实验做一次,比背十遍协议原理都管用。希望帮到你。
本文还有配套的精品资源,点击获取