Aircrack-ng WPA破解完整链路:从监听模式到握手包离线破解

📅 发布时间:2026/10/9 1:06:15
Aircrack-ng WPA破解完整链路:从监听模式到握手包离线破解
简介西南科技大学无线网络安全技术实验四完整实验报告面向无线网络安全、渗透测试初学者及高校相关专业学生。资源围绕使用aircrack-ng破解WPA/WPA2系统讲解实验目的、环境配置Kali Linux、手机热点、开启无线网卡监听模式、利用工具或自写代码生成字典文件以及通过airodump-ng扫描监听、aireplay-ng实施deauth攻击抓取握手包、最终用aircrack-ng结合字典完成密码破解的完整流程关键命令如iwconfig wlan0 mode monitor、aireplay-ng -0 10 -a 等均有对应截图与结果说明便于对照复现。报告还包含深入的讨论与分析从破解原理延伸至家用Wi-Fi安全加固建议弱密码风险、MAC白名单、管理密码与连接密码分离等并记录了实操中易混淆的握手包文件保存路径问题及排查思路对避免同类报错很有价值。资源为1个doc文档1.37MB内容紧凑目前已有812人学习下载适合作为实验报告参考、课程实践模板或无线安全入门演练指南。1. 把 Aircrack-ng WPA 破解串成一条完整链路从监听模式到握手包如果你第一次在 Kali 里敲aircrack-ng以为能直接扫出 WiFi 密码那你会失望的。WPA/WPA2 破解的核心不是“扫出来”而是“抓到握手包再去离线暴力跑字典”。这份西南科技大学无线网络安全实验报告做的就是这件事——在 WPA2 加密的热点上用手头一张支持监听模式的无线网卡完成从开启监听、扫描目标、攻击客户端、抓握手包到跑字典出密码的完整链路。它适合三类人刚开始接触无线安全实验的学生、想验证自家路由器密码强度的家用用户、以及准备把无线审计当成工作一部分的入门从业者。整条链路里最容易被卡住的是两个点网卡根本不支持监听模式以及握手包抓到了却不知道存在哪。这两个坑踩完你才算真正摸到这套工具的脾气。下面按实验的逻辑顺序把每一步的命令、参数和为什么这么写拆开讲。2. 实验环境选型为什么是 Kali Linux 和外置网卡2.1 监听模式是硬门槛不是所有网卡都能干实验环境写的是 Kali Linux 加手机热点这句话其实包含一个巨大前提你的无线网卡必须支持 Monitor 模式。普通笔记本内置网卡尤其是 Intel 系列很多在驱动层面就砍掉了监听模式你执行iwconfig wlan0 mode monitor大概率会提示SIOCSIWMODE: Operation not permitted。这就是为什么实验里强调“外置无线网络接口”。我一般建议备一张 RTL8812AU 或 AR9271 芯片的外置 USB 网卡前者支持 5GHz 频段后者在 2.4GHz 下兼容性最好。你在 Kali 里插上后先用iwconfig看有没有识别出新接口常见名称是wlan0或wlan1。注意实验报告里反复提醒“不一定是 wlan0也可能实际 wlan1”这句话真的不是废话——我就见过有人对着wlan1敲了一晚上wlan0的命令全程没有任何输出还以为是工具坏了。另外虚拟机里做实验要记得把 USB 网卡直通给 KaliVMware 里在虚拟机设置 → USB 控制器里把“显示所有 USB 输入设备”打开否则网卡被宿主机占用Kali 里怎么ifconfig -a都看不到设备。2.2 手机热点当靶机的优缺点实验用手机热点做目标 AP好处是可控性强——你可以自己设置 WPA2 密码随便攻击不涉及法律风险。缺点是手机热点为了省电和稳定性信道自动切换频率较高有时候你刚锁定了信道 6下一秒它跳到 11导致抓包中断。我建议在手机热点的设置里手动固定信道Android 的“WiFi 直连”或者开发者选项里通常有这个开关。如果实在没法固定信道就在airodump-ng里不指定-c参数让它全信道扫描代价是抓包效率下降。实验报告里说“用无线路由器搭建无线网络”实际上家用路由器效果更好——路由器没有手机那些省电策略信道稳定而且你可以绑定 MAC 地址来增加实验复杂度后面做白名单绕过练习也更顺手。2.3 三个进程协作的完整流程这整套破解工具链的本质是三个进程协作。airmon-ng负责把网卡从普通模式切换成监听模式airodump-ng负责采集无线帧aireplay-ng负责主动攻击。最后再用aircrack-ng离线跑字典。很多人把 aircrack-ng 当成一个单一工具其实它是一个套件每个命令各管一段。实验报告里的执行顺序是ifconfig wlan0 down iwconfig wlan0 mode monitor ifconfig wlan0 up三步做完后用iwconfig wlan0检查 Mode 是否变成Monitor。注意实验报告里的写法有一个小瑕疵——先用ifconfig down再直接iwconfig mode monitor这是老派写法现在 Kali 里更常见的是直接用airmon-ng start wlan0它会自动处理网卡下线上线。但实验报告没有错两种方式都行。区别在于airmon-ng start会把接口重命名为wlan0mon后续所有命令里都要用新名字容易搞混手写iwconfig则保持接口名不变操作起来更直观。我自己的习惯是先用airmon-ng check kill确认没有进程占用网卡然后再手动 down/up 方式切换。这样能避免 NetworkManager 在背后捣乱——它在 Kali 启动时默认接管无线网卡会干扰监听模式。如果出现网卡切不进 Monitor 的情况大概率就是 NetworkManager 在抢执行systemctl stop NetworkManager再试。到这里环境就绪接下来进入正式的抓包链路。3. 扫描目标与锁定信道airodump-ng 的读图逻辑3.1 一条命令看懂周边无线环境airodump-ng wlan0启动后会进入实时刷新的扫描界面每一行是一个可见的 AP。这里最容易犯的错是把“看到一堆 AP”当成“开始攻击了”。不是的——这条命令只是侦察。你需要从列表里选定一个目标记下它的 BSSID、信道和数据加密方式然后按CtrlC停止扫描。扫描界面上几个关键值PWR是信号强度负数越接近 0 说明信号越强低于 -80 基本别想稳定抓包CH是当前信道ENC是加密类型WPA2 会显示为WPA2ESSID是热点名称。如果看到一个目标同时出现了多行说明它有多个信道或者你开了全信道扫。3.2 锁定目标后重新定向监听airodump-ng --bssid DC:31:D1:E0:BB:4F -c 12 -w /usr wlan0这条命令把监听范围缩小到单一 BSSID-c 12锁定信道-w /usr指定抓包文件的保存路径和前缀。这个-w参数是整个实验里最大的坑——它指定的是“路径前缀”不是目录。后续生成的文件是/usr-01.cap不是/usr/目录下一个随机名字的文件。我拆这个实验的时候踩过一模一样的坑。当时我理解成-w /usr是“把包保存到 /usr 目录”结果找遍了/usr都没看到.cap文件。实际上 aircrack-ng 会在路径里自动追加-01.cap这样的序号。所以这里实际生成的是/usr-01.cap位于根目录下而不是/usr/目录里。这个细节放在后面避坑章节展开说。锁定目标 AP 后窗口右侧会出现两个区块上面是当前正连接在这个 AP 上的客户端列表每行一个 MAC 地址下面的区显示通过该 AP 传输的数据帧统计。注意看实验报告里提到的那个设备地址94:87:E0:16:84:51——只要一个客户端出现在列表里你就有了 deauth 攻击的目标。3.3 什么时候算“已经能看到东西”airodump-ng锁定了目标之后界面右上角会出现#Data列这里的数值表示已抓到的数据帧数量。单独有数据不算好消息关键在右上角时机的“WPA handshake”字段——如果显示WPA handshake: DC:31:D1:E0:BB:4F说明四步握手已经完整捕获。握手包捕获在界面上不会有弹窗不会闪红字就是小小的几个字母出现在 AP 行末尾。我见过不少人在旁边跑aireplay跑得热火朝天回头一看aircrack说找不到握手包原因是他们根本没核对这行提示。所以我的习惯是每次airodump启动后设定一个明确目标——看到“WPA handshake”出现在目标 AP 行的末尾才算这段工作结束。3.4 数据包保存下来之后先验证完整性ls -l /usr-01.cap这条命令检查文件是否生成、大小是否正常。一个只有路由 beacon 帧的.cap文件可能只有几十 KB而包含握手包的通常数百 KB 以上。但这只是粗判最靠谱的方式是直接用aircrack-ng去读这个 cap 文件它会自动告诉你文件里是否有握手包aircrack-ng /usr-01.cap如果输出里有1 handshake之类的字段说明文件可用。如果显示 0 handshake问题可能出在前面几步——监听模式没开对、deauth 攻击没触发客户端重连、或者airodump保存路径覆盖不正确。到这一步链路还差最后一环如何逼客户端重新连接从而让四步握手重演。4. 用 aireplay-ng 的 deauth 攻击触发握手重连4.1 为什么必须攻击客户端WPA/WPA2 的四步握手发生在客户端和 AP 建立连接的时候。如果设备已经连着 WiFi握手已经完成过一次无线信道里不会反复出现新的握手帧。所以必须想办法让客户端掉线再让它自动重连这样才能抓到第二个握手。aireplay-ng的-0模式就是干这个的——deauth 攻击向客户端发送伪造的断开连接帧迫使它重新关联。实验报告里写的命令aireplay-ng -0 10 -a DC:31:D1:E0:BB:4F -c 94:87:E0:16:84:51 wlan0参数拆开看-0是 deauth 攻击模式10是发送次数-a后面是目标 AP 的 MAC 地址-c后面是客户端 MAC 地址最后是接口名。发送次数在 1 到 10 之间自由调次数太少可能客户端还没反应就停了次数太多 AP 会开始忽略伪造的 deauth 帧。4.2 攻击和抓包必须同时进行这是一个非常关键的时序问题。如果你的终端 A 还在跑airodump-ng终端 B 跑aireplay-ng那没问题。如果你先把airodump-ng停了再跑aireplay-ng那抓不到握手包因为监听进程都不在谁去接收重连的握手帧我见过不少新手把流程拆成“先断网、再抓包”这恰好把因果搞反了。正确做法是airodump-ng保持后台运行另开一个终端跑aireplay-ng。当你看到 deauth 发送后回到airodump-ng的界面确认目标 AP 行出现了WPA handshake提示。整个重连过程一般只需要几秒钟。4.3 客户端列表为空时的替代方案有时候airodump-ng的客户端列表是空的——可能没有设备连这个 WiFi也可能客户端休眠了。这时候-c参数就没有目标可打。常见做法是改发广播 deauthaireplay-ng -0 10 -a DC:31:D1:E0:BB:4F wlan0去掉-c参数后deauth 帧以广播形式发送所有连接该 AP 的客户端都会被打掉线。这种方式在客户端数量较多的环境下效果更好但有一个副作用所有客户端同时重连时握手帧会明显增多反而增加了airodump-ng抓到完整握手的概率。所以广播 deauth 其实是我更常用的方式。4.4 握手包的从无到有你该看到什么攻击运行几秒后airodump-ng窗口右上角如果出现WPA handshake: DC:31:D1:E0:BB:4F的提示任务就完成了一大半。这个提示只在握手包完整捕获后出现一次之后airodump-ng会把该 AP 的#Data数据持续写入 cap 文件。这里有一条我常用的验证思路在aireplay-ng的滚动日志里你会看到大量Sending DeAuth to code -- BSSID: ...的输出。这些输出只说明 deauth 帧发出去了不代表握手一定被抓到。真正的成就点在airodump界面。所以我在两台终端来回切换时眼睛盯住的就是那个小字字段。5. 字典的选择与生成破解率的隐形瓶颈5.1 字典质量决定上限算力决定速度实验报告里有一句话说得很实在破解效率还和密码字典有关密码字典越详细、记录越多越容易破解。这句话翻译成实际操作逻辑就是——aircrack-ng做的事情是逐条读取字典里的字符串用它计算 PMKPairwise Master Key然后跟握手包里的 PTK 做比对匹配上就说明这是密码。如果密码根本不在字典里再快的 GPU 也跑不出来。所以字典不是“越大越好”而是“覆盖范围越贴合越好”。一个包含生日数字组合的字典优先级高于一个包含英文单词的百万级字典。你猜自己的 WiFi 密码会用“姓名缩写生日”字典里就该有这类模板。5.2 内置字典不够用时的生成策略Kali 默认在/usr/share/wordlists/下有rockyou.txt.gz解压后大约 1400 万条。这个字典对英文密码覆盖不错但对中文用户习惯性设置的“手机号前三位姓名生日尾巴”这类组合命中率很低。这时候需要定向生成。实验报告里提到“利用工具或者自己写代码生成字典文件”最常用的生成工具是crunch。比如你要生成 8 位纯数字密码跑crunch 8 8 0123456789 -o /usr/dic.txt这条命令生成所有 8 位纯数字组合但实际场景里没人跑全量——一亿条组合用 CPU 跑 WPA 是不现实的。更聪明的做法是给定规则比如生成 11 位且以 138 开头的手机号字典crunch 11 11 0123456789 -t 138%%%%%%%% -o /usr/dic.txt-t参数里的%是占位符表示这一位可以是任意指定字符集内的字符。这样生成的数据量从 100 亿条缩减到 1 亿条命中自己手机号做密码的场景妥妥够用。5.3 结合社工信息做关键词字典另一种我常用的做法是先收集目标家庭成员的姓名拼音、生日、车牌号、门牌号用crunch的-p参数做排列组合。比如输入姓名缩写和两组数字crunch 0 0 -p zs 1990 0821 -o /usr/dic.txt这会生成zs19900821、1990zs0821、08211990zs等排列组合。虽然条数少但命中率比纯数字字典高得多。网上流传的“社工字典生成器”本质就是这类逻辑代码量不大但要理解原理——密码是组合出来的字典也按组合生成。5.4 跑字典时的注意事项与输出解读aircrack-ng -w /usr/dic.txt /usr-01.cap-w指定字典文件后面跟 cap 文件路径。这里容易出两个问题第一字典路径写错提示找不到文件第二cap 文件里包含多个 AP 的流量程序会出现一个交互提示问你“要破解哪一个 BSSID”。如果你只需要破解目标 AP干脆在airodump阶段就只监听单一 BSSIDcap 文件里就只有这一个目标的握手。跑起来之后进度条下方的0/12345 keys tested会不断增加。如果某一刻刷出一行KEY FOUND! [ 15681912782rql ]说明字典里试中了。实验报告的截图上显示密码是15681912782rql——这个格式很有意思一个长数字串加三个字母明显不是随机密码而是用户习惯性设置的“便于自己记忆”的密码。这也侧面印证了一件事WPA 破解的瓶颈从来都不是算力而是密码本身的随机性。6. 避坑指南四个真实翻车现场与补救方案6.1 握手包文件找不到-w参数的路径理解错了现象按实验流程走完ls -l /usr/发现没有生成 cap 文件或者找到了但里面没有握手包。原因把airodump-ng -w /usr理解成了“保存到 /usr 目录”。实际上-w的值是文件前缀程序会在前缀后面自动追加-01.cap所以文件真实路径是/usr-01.cap在根目录不在 /usr 里。实验报告的原文里也出现了这个歧义它写“-w /usr wlan0”但后续验证用的是ls –l /usr/导致很多照着做的人在 /usr 目录里翻来翻去找不到文件。解决执行ls -l /看根目录下有没有usr-01.cap。或者从一开始就把路径写得更明确比如-w /root/capture这样生成的是/root/capture-01.cap一眼能找到。从那以后我每次确定保存路径时都会顺手补一句自查先在终端执行ls -l确认生成文件名再进入下一步。6.2 网卡不支持监听模式切一切又变灰了现象执行iwconfig wlan0 mode monitor后提示SIOCSIWMODE: Operation not supported或者切成功后跑airodump-ng完全没有包数据进来。原因网卡的无线驱动或固件本身不支持 Monitor 模式常见于 Intel 内置网卡另一个可能是 NetworkManager 在后台不停地抢网卡资源导致刚切过去又被拉回 Managed 模式。解决换一张明确支持监听模式的外置网卡比如 Atheros AR9271 或 Realtek RTL8812AU在切换前先执行airmon-ng check kill杀掉占用无线的进程。换卡后如果还有问题用dmesg | tail看驱动加载日志。6.3 抓到了握手包但 aircrack-ng 提示无法读取现象airodump-ng界面出现了WPA handshake提示但aircrack-ng /root/capture-01.cap却报了Failed to parse或者0 handshake。原因cap 文件被写入了多个 AP 的流量或者握手包存在但格式不完整。常见的是aireplay-ng攻击时把包的发包频率拉太高AP 端拒绝了一部分重连请求导致四步握手只有三步被捕获。解决先用aircrack-ng /root/capture-01.cap查看里面有哪些 BSSID 和握手状态。如果显示有握手但数不出来可以换tshark -r capture-01.cap -Y eapol检查 EAPOL 帧的数量——完整握手需要 4 帧 EAPOL少于 4 就是没抓完整。最根治的办法是重新走一遍 deauth 攻击流程等待WPA handshake重新出现。6.4 字典跑完了没中一开始方向就错了现象aircrack-ng跑完整个字典进度条走满显示Failed或No luck。原因不是工具的问题是字典覆盖范围不匹配。比如你跑 rockyou 这个百万级英文词表但目标密码是“姓名拼音数字”英文词典再大也白搭。解决先冷静想一下目标密码像什么格式。家用 WiFi 常见密码有六类纯数字8~11 位、手机号、姓名生日、固定单词数字、门牌号姓名、英文名年份。针对性地用 crunch 生成定向字典命中率远高于通用大字典。另一个极端也值得一提有人为了“求全”生成几百 GB 的字典跑了一晚上也没结果。WPA 破解本来就是低概率事件字典策略决定了你是做有效努力还是无意义消耗。7. 从实验延伸到实战握手包离线破解的算力加速方案实验报告里的破解方式是 CPU 跑 aircrack-ng这在字典几千条、密码 12 位以内的情况下够用。但如果你要跑 rockyou 的 1400 万条单机 CPU 可能要跑一整天。这时候有两条加速路径。第一条是我最常用的用 hashcat 把抓到的握手包转换成 hashcat 可读的 hash 格式然后走 GPU 破解。转换工具在 Kali 里自带hcxpcapngtoolhcxpcapngtool /root/capture-01.cap -o /root/hash.22000生成的 hash.22000 是 hashcat 的 WPA-PBKDF2 格式。然后调用 GPUhashcat -m 22000 /root/hash.22000 /usr/dic.txt比起 CPU 跑RTX 级别显卡的速率能达到每秒数十万次 PMK 计算rockyou 全量字典跑完大约只要十几分钟。但注意hashcat 换来的速度只解决“试得快”不解决“字典里有没有”。所以我的建议是在跑 hashcat 之前先用 aircrack-ng 自带的-w模式跑一遍定向小字典几十秒快速验证常见弱密码没戏再上 GPU 跑大字典。第二条路是规则裂变。许多工具支持在字典基础上追加“规则”把原有词条变化出更多变体比如123变成123!、1234变成1234abc。Kali 里自带规则文件在/usr/share/hashcat/rules/最常用的是best64.rule。用规则裂变的好处是不需要显式生成海量字典文件跑的时候实时变形即可。代价是速度会打折因为每条单词要跑几十次变形运算。我一般只在 GPU 环境下用规则裂变CPU 环境下还是直接生成定向字典更划算。到这里整个链路就闭环了——从监听模式起步到抓到握手包完成破解再到加速方案。最后再多说一句这套实验做完之后我给自己家里的路由器设密码时都是从字典里“反向选”——先想想一个暴力字典最容易覆盖哪些组合然后避开它们。从那以后我每次做无线审计都强制走一遍完整流程。从airmon-ng check kill到确认 cap 文件里出现握手包再到aircrack-ng跑完第一轮全程不看手机不分心因为任何一个环节漏了后面的输出全是无效努力。希望这篇拆解能帮你少走几步弯路把时间花在真正需要的抓包和字典策略上。本文还有配套的精品资源点击获取