简介:西南科技大学《无线网络安全技术》实验四的完整实验报告,面向学习无线安全、Kali Linux与Aircrack-ng工具的学生。报告从实验目的出发,完整呈现WPA/WPA2破解流程:配置实验环境、开启无线网卡监听模式、生成字典文件、抓取握手包并使用aircrack-ng完成密码破解,同时包含实验环境说明、关键命令参数解析、实验思考与故障排查记录。资源为1.37MB的doc文档,压缩包内共1个文件,内容结构清晰,从实验过程到讨论分析、自评一应俱全,适合作为无线网络安全课程实验报告参考。目前已有812人学习下载,读者可通过这份报告快速掌握Aircrack-ng套件的核心操作,深化对WPA安全机制的理解,同时借鉴其问题排查思路,提升无线网络安全防护意识。
1. 用 aircrack-ng 走完一次 WPA 破解:这份实验报告拆出了什么
很多人看 aircrack-ng 破解 WPA 的视频,会觉得这套操作是玄学:开个监听、打几个命令、跑个字典,密码就出来了。实际上 WPA 破解的链路非常固定,每一步都有明确的无线通信原理兜底,难的不是命令,而是知道每一步在干什么、失败了往哪儿查。这份实验报告记录的就是一次完整的 WPA2-PSK 破解实验:实验者在 Kali Linux 上用 aircrack-ng 套件,对一个开着 WPA2 加密的手机热点发起测试,最终通过抓握手包加字典爆破拿到了明文密码,还把过程中踩的坑写在了实验总结里。它适合无线网络安全课的学生、刚接触 Kali 的从业者,以及所有想从攻击者视角反向加固自家 WiFi 的人。整条链路拆开看,最值得反复琢磨的就是握手包和字典这两环。
2. 破解链路拆解:为什么 WPA 攻击必须死磕握手包
要正确理解这份实验报告,先回答一个问题:为什么 aircrack-ng 一定要先抓到握手包才能开始破解?知道答案之后,后面所有命令都只是围绕同一个目标在服务。
2.1 WPA/WPA2-PSK 认证里真正能被离线验证的只有握手包
WPA2-PSK 的 WiFi 密码,在协议里叫预共享密钥(PSK)。客户端连接 AP 时,PSK 并不会直接出现在空中,它参与一次四次握手(4-way handshake)来派生出会话密钥。具体来说,PSK 和 SSID 一起通过 PBKDF2-SHA1 算法迭代 4096 次,生成一个 256 位的 PMK(Pairwise Master Key)。随后 AP 和客户端各自生成随机数 ANonce、SNonce,结合双方 MAC 地址,从 PMK 推导出 PTK(Pairwise Transient Key)。PTK 被切分成几段,其中 KCK 用来对握手消息计算 MIC 校验值。
这里的关键在于:整个空中传输过程里,唯一能让攻击者用来验证「某个密码对不对」的材料,就是最后一段握手里的 MIC。攻击者抓到握手包后,自己手里有 ANonce、SNonce、双方 MAC 和 MIC,于是可以对字典里每一个候选密码执行同样的推导链:候选密码 + SSID → PMK → PTK → MIC,比对结果是否一致。一致,密码就找到了。
对多数人来说,握手包是个黑匣子,只知道要抓它,不知道为什么非它不可。把上面这条链路理清楚,后面排错就有方向:抓不到握手包,后面所有爆破都是空谈。
2.2 字典攻击的代价模型:为什么弱密码秒破、强密码无解
aircrack-ng 对 WPA 的爆破没有 WEP 那种捷径,只能靠字典硬跑。每验证一个候选密码,都要完整执行一轮 PBKDF2 加 PTK 派生,这个计算成本是实打实的 CPU 活。候选集的大小直接决定破解时间的量级。
| 密码形态 | 候选数量量级 | 爆破时间感受 |
|---|---|---|
| 8 位纯数字 | 10^8 | 分钟到小时级 |
| 8 位小写字母 | 约 2×10^11 | 天级 |
| 10 位大小写字母加数字混合 | 约 8×10^17 | 基本不可行 |
| 12 位以上全字符随机 | 10^21 以上 | 无现实破解意义 |
具体每秒能测多少个密码取决于 CPU 配置和 aircrack-ng 版本,显卡用户还会换到 hashcat 上跑,但量级思维不变:候选空间每涨一个数量级,破解时间就涨一个数量级。实验里那个密码 15681912782rql 能被破出来,说明它早就躺在字典里了——这是手机号 + 姓名拼音类型的典型组合,在定向字典面前毫无抵抗力。这正好解释了实验总结里那句「字典越详细越容易破解」。
2.3 抓包与破解链路各环节的失效判断表
实验过程看着是连续的命令流,实际可以拆成四个独立环节,每个环节都有自己典型的失败特征:
| 环节 | 正常现象 | 失败时的直接线索 |
|---|---|---|
| 网卡监听模式 | iwconfig 显示 Mode:Monitor | Mode:Managed,或接口直接消失 |
| 全信道扫描 | 能列出周边 AP 的 BSSID、信道、加密方式 | 列表空白或只有极少 AP |
| 定向监听抓握手包 | 界面右上角出现 WPA handshake | 跑很久都没有 handshake 提示 |
| 字典爆破 | 出现 Key Found! 并打印密码 | 进度条一直在走但始终无结果 |
这张表是排错入口。后面第 5 章提到的所有坑,都是从这张表里展开的。遇到问题先定位在哪一环,再动手查,比盲目重跑命令有效得多。
3. 实验环境与监听模式:先把无线网卡变成嗅探器
实验报告的实验环境写得很简单:Kali Linux 加手机热点。这句看似平淡,实际决定了整个实验的可行性边界。无线抓包不是随便一张网卡都能干,监听模式对硬件和驱动有硬性要求。
3.1 对网卡和 AP 的要求:为什么内置网卡常常干不了这活
普通笔记本内置无线网卡在厂商驱动里大多只支持 Managed 模式(即普通上网模式),并不开放 monitor 模式。即使芯片本身支持,Windows 驱动或者部分 Linux 驱动也会把这条路堵死。实验里采用手机热点作为 AP 是个务实选择:手机热点同样跑 WPA2-PSK 协议,对攻击者来说和路由器没有本质区别,而且省去了配置无线路由器的步骤。只要手机能开热点,实验环境就成立。
外置网卡的常见做法是选 AR9271、RTL8812AU 这类芯片的 USB 网卡,它们在 Kali 下通常有现成驱动。拿到设备先确认系统认不认:
iwconfig airmon-ngiwconfig列出所有无线接口,airmon-ng会额外显示每个接口是否支持 monitor 模式。如果列表里找不到无线网卡,先插拔一次,用lsusb确认芯片 ID。很多新人在这里栽跟头:网卡没被识别,后面所有命令都会报 interface not found,然后开始怀疑人生。
另外,实验报告里特别强调了一句:网卡名称不一定是 wlan0,可能是 wlan1。这是真实的血泪经验,多网卡机器上无线接口编号经常漂移,一切以iwconfig实际输出为准,别把命令里的接口名想死。
3.2 开启监听模式的两条路线:手工三步法与 airmon-ng 一步法
实验报告采用的是手工三步法,先禁用网卡、切模式、再激活:
ifconfig wlan0 down iwconfig wlan0 mode monitor ifconfig wlan0 up第一步down是让网卡停止正常的收发数据,释放协议栈对它的控制。第二步mode monitor就是把网卡切换到监听模式,让它把空中收到的所有 802.11 帧都原样往上送,不再做地址过滤和解析。第三步up重新激活接口。如果系统提示ifconfig不存在,说明没装 net-tools,用ip link set wlan0 down和ip link set wlan0 up替代。
另一条更省事的路线是直接用 airmon-ng:
airmon-ng check kill airmon-ng start wlan0airmon-ng check kill会杀掉 NetworkManager 等占用无线网卡的进程,避免它把网卡抢回 Managed 模式。airmon-ng start wlan0会自动完成禁用和切换,并生成一个新的监听接口,通常叫 wlan0mon。之后所有抓包命令都要用这个新接口名。实验做完后,airmon-ng stop wlan0mon可以恢复,并重启网络服务。
两条路线的差别在于:手工三步法对网卡驱动要求更苛刻,某些网卡用iwconfig切不动;而 airmon-ng 会做更多底层适配,成功率更高。建议优先用 airmon-ng,遇到问题再用手工法排查。
3.3 验证监听模式真的生效
切换完模式先别急着扫,花十秒验证一下,能省后面半小时。第一种验证方法:
iwconfig wlan0mon输出里看到Mode:Monitor就说明切换成功。如果仍然是Mode:Managed,说明模式没切过去,多半是驱动不支持或者有进程抢占了网卡。
第二种验证方法是直接跑airodump-ng,能看到 AP 列表滚动就说明监听生效。这里要提前说一个现象:监听模式下的网卡通常无法同时正常上网,如果你发现切完模式后连不上网了,这不是故障,是预期行为。很多人到这里以为网卡坏了,其实是 Mode 状态变了,数据通路不再走正常连接。
4. 扫描、抓包与字典爆破:从目标锁定到密码落地的完整命令记录
这一章把实验过程按命令流拆成四个阶段。每个阶段都有明确的产出物:先是 AP 列表,然后是 CAP 文件,最后才是明文密码。命令本身不长,但参数含义必须清楚。
4.1 全信道扫描与目标锁定:airodump-ng 输出列怎么读
开启监听后,第一步是扫描周围所有信道上的无线网络:
airodump-ng wlan0mon这个命令会持续运行,让网卡在所有信道上快速跳变,收集附近的 AP 和客户端信息。扫描一段时间后按 Ctrl+C 终止。输出表格里重点看四列:BSSID 是 AP 的 MAC 地址,CH 是信道,ENC 和 CIPHER 表示加密方式和加密算法,AUTH 表示认证方式。目标是 WPA2 加密时,ENC 列会显示 WPA2,CIPHER 列显示 CCMP,AUTH 显示 PSK。实验报告里锁定的目标 vivo IQOO 就是自己手机开的热点,BSSID 为 DC:31:D1:E0:BB:4F,工作在信道 12。
这里有一个边界必须强调:实验对象是自己搭建的热点,整个破解流程只应该在自己拥有或获得授权的网络上操作。扫描到别人的网络,看一眼握手包结构作为学习可以,但别越界。
4.2 定向监听与握手包文件生成:-w 参数是坑,不是字典
知道目标 BSSID 和信道后,就可以从全信道扫描切到定向监听,只关注一个网络:
airodump-ng --bssid DC:31:D1:E0:BB:4F -c 12 -w /usr wlan0mon参数拆解:--bssid过滤指定 AP,数据流里只保留该 AP 相关的帧;-c 12锁定信道 12,避免网卡继续跳信道而漏包;-w /usr指定抓包文件的保存路径前缀。实验报告里写的是-w /usr,注意这个参数后面跟的是输出文件的前缀,不是字典路径,也不是目录。命令运行后会在/usr下生成以-01结尾的多个文件:/usr-01.cap是 pcap 抓包文件,/usr-01.csv是 AP 和客户端列表,/usr-01.kismet.csv是 Kismet 格式的元数据。后面 aircrack-ng 要用的是.cap文件。
定向监听的界面里,右上角如果出现WPA handshake字样,说明握手包已经抓到,可以停下收工。没有这个提示之前,.cap文件里即使有数据,也没有可用的握手包,爆破无从谈起。
4.3 断线攻击加速握手:aireplay-ng 的 deauth 参数与循环打法
客户端连着 AP 的时候,握手发生在连接建立阶段,平时是抓不到的。要人为制造一次重连,就得先把客户端踢下线。实验报告里的做法是直接用 aireplay-ng 发 deauth 包:
aireplay-ng -0 10 -a DC:31:D1:E0:BB:4F -c 94:87:E0:16:84:51 wlan0mon参数含义:-0表示 deauth 攻击模式,后面的10是发送数量;-a跟 AP 的 MAC 地址;-c跟目标客户端的 MAC 地址。客户端收到 deauth 帧后会断开连接,随后多数设备会自动重连,重连过程就是四次握手过程,airodump-ng 在监听,握手包自然被截获。
10次在实际操作里经常不够,特别是客户端离 AP 远或者信号不稳时。我一般会用一个循环持续打,直到确认握手包出现:
while true; do aireplay-ng -0 5 -a DC:31:D1:E0:BB:4F -c 94:87:E0:16:84:51 wlan0mon sleep 2 done循环里每次发 5 个包,间隔 2 秒再来一轮,直到另一个终端里的 airodump-ng 出现WPA handshake,然后立刻 Ctrl+C 停掉循环。注意-c如果省略,deauth 会发往广播地址,效果是踢掉所有客户端,但有些客户端对广播 deauth 会忽略,定向指定客户端 MAC 更可靠。
4.4 字典准备与 aircrack-ng 爆破:CAP 文件到明文密码
抓包完成后,ls -l /usr能看到生成的抓包文件。接下来准备字典,两条路线。第一条是直接用 Kali 自带的 rockyou:
gunzip /usr/share/wordlists/rockyou.txt.gzrockyou.txt 解压后是一份真实泄露密码集合,适合当通用字典。第二条是自己写脚本生成定向字典,这也是实验报告的第三种做法。下面是一个基于已知信息生成候选密码的 Python 脚本:
import itertools # 根据目标信息构造基础词表,实际使用时替换为目标的公开信息 base_words = ["vivo", "iqoo", "1568191278", "rql", "1528"] suffixes = ["rql", "123", "520", "!", "@"] candidates = set() for w in base_words: candidates.add(w) for s in suffixes: candidates.add(w + s) candidates.add(s + w) with open("dic.txt", "w") as f: for p in sorted(candidates): f.write(p + "\n") print(f"generated {len(candidates)} candidates")脚本逻辑:把品牌名、手机号片段、姓名拼音等基础词和常见尾缀做笛卡尔组合,去重后写入dic.txt。参数说明:base_words是攻击者根据目标整理的词表,suffixes是常见附加尾缀,实际使用时按场景替换。如果想扩大规模,可以用itertools.product生成纯数字组合,但先算好规模再写文件,8 位纯数字就是 1 亿条,写出来是几百 MB 的文件,实验场景不太需要。
最后执行爆破:
aircrack-ng -w /usr/dic.txt /usr-01.cap-w指定字典文件,后面跟抓包产生的.cap文件。aircrack-ng 会先扫描 CAP 文件里的握手包,然后逐条验证字典密码。实验里最终输出 Key Found,拿到明文密码 15681912782rql。
如果命令报错说 CAP 文件里没有有效握手包,先不要怀疑命令写错,回头检查 4.2 和 4.3 两步:握手包到底抓没抓到、文件路径对不对。字典路径错了也会导致运行时实际候选集为空,表现为瞬间跑完但什么都没出。
5. 避坑与排查:握手包丢失、网卡模式错乱与破解无果的定位思路
这份实验报告最有价值的部分其实是实验总结里的踩坑记录。下面五条是无线安全实验里出现频率最高的坑,每条都按现象、原因、解决展开。
5.1 找不到抓到的握手包文件
现象:airodump-ng 跑完,a ircrack-ng 时怎么也找不到.cap文件,目录翻遍了也没有。
原因:实验报告里原话写得很清楚——把-w /usr理解成了「监听目标网络时需要输入密码字典文件的路径」。实际上-w是抓包文件保存前缀,生成的文件名是/usr-01.cap,不是/usr目录下凭空出现一个叫 dic 之类的文件。理解错参数,自然找不到产出物。
解决:定向监听命令启动前,先确认-w后面的前缀想写在哪。建议单独建一个实验目录,比如mkdir /root/wifi-test,命令写成-w /root/wifi-test/cap,生成的文件就是/root/wifi-test/cap-01.cap。监听结束后用ls -l检查文件大小,.cap文件有几十 KB 以上才算正常,几百字节的基本是空文件。
5.2 监听模式起不来,或起来之后网卡直接消失
现象:airmon-ng start wlan0提示 failed,iwconfig里 Mode 仍然是 Managed,或者跑 airodump-ng 时报 interface no such device。
原因:三种可能。第一是网卡驱动不支持 monitor 模式,这是硬件问题,换网卡才能解决;第二是 NetworkManager 等系统服务在后台抢占无线网卡,切完模式又被拉回去;第三是接口名写错,物理接口叫 wlan1 或 wlx 开头的一串字符,不是想当然的 wlan0。
解决:先执行airmon-ng check kill杀掉干扰进程,再重新 start。然后用iwconfig确认实际接口名,后续所有命令都用这个真实名称。如果airmon-ng正常但监听接口名变成了wlan0mon,注意后面命令里要写新接口名,不是原来的 wlan0。
5.3 定向监听时扫不到目标 AP
现象:--bssid和-c都按扫描结果填了,airodump-ng 界面里列表却是空的,或者目标网络不在列表里。
原因:一个很常见的翻车点是目标 AP 在 5GHz 频段,而外置网卡只支持 2.4GHz,双向频率对不上,定向监听自然抓不到。另一个原因是信道数字填错,扫描结果里 CH 列是 12,命令里却写成 11。
解决:先用不带过滤参数的airodump-ng wlan0mon全信道扫描,确认目标 BSSID 和实际信道,再启动定向监听。同时用iwconfig或者网卡规格确认它支持哪些频段。实验里用手机热点有个好处,热点一般默认走 2.4GHz,网卡兼容性压力小很多。
5.4 握手包一直抓不到
现象:deauth 打了无数轮,客户端也确实断开重连了,但 airodump-ng 界面右上角始终没有WPA handshake提示。
原因:deauth 的-c参数填错,打的是不存在的客户端地址;或者客户端收到广播 deauth 后直接忽略了,根本没断开;再或者客户端重连太快,握手发生在 airodump-ng 还在其他信道瞬间跳变时,直接漏掉。
解决:先回看 airodump-ng 的 STATION 列,确认目标客户端确实在线,MAC 地址从列表里复制而不是手敲。deauth 同时打广播和定向两个方向,提高命中率。确保定向监听时-c 12锁住了信道,网卡不在全信道跳变。多轮循环打,别指望一次 10 个包就能成功。
5.5 aircrack-ng 跑很久不出结果
现象:进度条在走,已测密码数量在涨,但一直没有 Key Found,最后跑完整个字典也什么都没有。
原因:两种可能。一是密码确实不在字典里,这是最常见的情况,和硬件无关,纯粹是字典覆盖不够;二是-w指定的字典路径错误或者文件为空,aircrack-ng 加载了 0 条候选,瞬间跑完并提示失败。
解决:先用wc -l /usr/dic.txt确认字典有内容。然后换大字典,比如 rockyou.txt。针对实验场景,可以按目标信息生成定向字典,把手机号、姓名拼音、品牌词和常见尾缀组合进去。如果换了字典还是跑不出来,就是密码本身强度够高,这时候放弃爆破,回到第 6 章的加固思路。
6. 家用 WiFi 加固与破解后验证:用攻击者的视角反推防护配置
做完一次完整的破解实验,会很清楚弱密码在字典面前有多脆弱。从攻击链路反推防护配置,每一项加固都能对应到破解流程里的某个环节。
6.1 从破解链路反推的五项加固配置
| 加固项 | 具体做法 | 对破解链路的影响 |
|---|---|---|
| 密码复杂度 | 12 位以上,大小写字母加数字加符号随机组合 | 字典候选空间指数膨胀,爆破失去现实意义 |
| 个人信息脱敏 | 避免手机号、生日、姓名拼音做密码或尾缀 | 定向字典直接失效 |
| 管理密码独立 | 路由器后台密码不与 WiFi 密码相同 | 防止 WiFi 密码泄露后路由器后台被顺手控制 |
| MAC 白名单 | 路由器绑定家庭成员设备 MAC | 拦住随机蹭网者,但防不了 MAC 伪造,只能提高门槛 |
| 关闭 WPS | 路由器后台关闭 WPS Pin 功能 | 堵住另一个可以暴力试探的入口 |
注意第三项和第五项常常被忽视。管理密码和 WiFi 密码相同的话,攻击者破解 WiFi 后直接登录路由器后台改配置,危害翻倍。WPS Pin 只有 8 位数字,存在独立的暴力破解路径,和 WPA 字典攻击是两回事,路由器支持的话直接关掉最省心。
6.2 用自己的环境重跑一遍验证加固效果
配置完加固项之后,最有效的验证方式就是把第 4 章的流程对着自己家 WiFi 完整跑一遍:开监听、锁信道、打 deauth、抓握手包、挂字典爆破。预期结果是握手包能正常抓到,但字典跑不出密码。如果字典里有 20 万条常见弱口令加你的信息变体还跑不出来,说明密码本身经得起定向攻击。
从那以后,我每次调完家里路由器的密码,都会强制用这套流程过一遍,确认常用字典跑不出结果才收工。无线安全实验的意义不在破解本身,而是让自己知道攻击者会怎么下手,再回头把每一道口子堵上。希望帮到你。
本文还有配套的精品资源,点击获取