资讯动态

Wireshark解密WPA2实战:Kali下从抓包到明文全流程

发布时间:2026/10/22 5:46:02 来源:尧图企业网站定制
先聊点实际的在自家路由器上开着WPA2的Wi-Fi自己拿Wireshark抓包抓回来打开一看全是密密麻麻的密文那一刻确实容易劝退人。很多人不知道的是Wireshark本身就有完整的解密能力你不需要去搞什么“破解”只要你手上握着这个Wi-Fi的密码或者预共享密钥PSK你就可以直接把抓回来的数据包还原成看得懂的HTTP、DNS、TCP明文。这篇文章就是干这个的在Kali Linux环境里用Wireshark解密WPA2/WEP加密的数据包一路走到能看懂包内容为止最后还附上我经常会翻出来用的ASCII码转换思路方便你在填密钥格式的时候少踩坑。这个内容适合谁刚把Kali装好、还不太清楚Wireshark左边列表那些协议到底在说什么的新手正在做无线攻防实验、想确认某个AP的加密流量到底能不能分析的同学以及做IoT设备调试、需要排查自家Wi-Fi下某台设备为何连不上或响应慢的朋友。核心只讲一件事抓住的加密数据包如何用你手上的密钥在Wireshark里把它“翻”回明文。1. 先搞明白解密的基本盘WPA2/WEP到底在解什么1.1 四步握手和我们手上钥匙的关系WPA2的加密不是上来就拿着同一个密码直接加密每一条数据而是靠一次“四步握手”协商出一套会话密钥。就和我们两个人见面要先对暗号互相确认身份一样手机STA和路由器AP在连接的时候会交换四次EAPOL帧这四次交互里包含了随机数、MAC地址、最终协商出的Pairwise Transient KeyPTK的相关信息。真正传输数据时用的是PTK衍生出来的临时密钥对每个报文做AES-CCMP或TKIP加密。所以Wireshark能不能解出后面的数据前提是它必须“看到”这四步握手。如果你抓包的时候手机已经连着路由器了、没有重新连接过那么抓到的数据包就算你填了正确的密码Wireshark也解不出来。因为缺了握手的上下文它不知道PTK是从哪两个随机数演变出来的。这一点是所有解密失败案例里最高频的原因后面我会专门说怎么判断和补救。这里有个很多人会误解的点Wireshark解密WPA2用的是“已知密码”不是暴力枚举。你可以把PSKWi-Fi密码理解成一把主钥匙四步握手就是在给你配一把当前这个会话专用的临时钥匙。你只有持有主钥匙才能看懂握手过程并推导出临时钥匙如果你没有主钥匙Wireshark本身也解不了。所以这个教程适用的是你自己的网络、实验室环境、或者你有合法授权去分析的场景。1.2 WEP的老底子RC4和IV一句话讲清WEP和WPA2在解密思路上差别比较大但Wireshark里处理起来反而更简单。WEP用的是RC4流密码加密时每个数据包会带一个3字节的IV初始化向量然后把IV和密钥合在一起作为RC4的种子去生成密钥流。由于IV是跟着每个包走的、而且直接在明文头部里传输只要你知道WEP的密钥Wireshark拿到每个包都可以独立解出内容不依赖握手过程。所以WEP的解密条件只有一个密钥正确。没有WPA2那么挑剔不需要“必须抓到握手包”这种前置条件。这也是为什么很多老教程里用WEP来做入门演示因为成功率高、反馈直接。但也正因为IV只有24位容易重复WEP早就被淘汰了现在实验室里碰到的WEP基本都是老设备或者刻意搭的靶场环境。你在Wireshark里解密WEP时填好密钥后几乎立刻就能看到明文那种“一下就看到效果”的爽感对新手建立信心很有帮助。2. 准备环境在Kali里把工具和抓包链路铺好2.1 Wireshark和抓包工具的最小化安装清单Kali Linux默认自带Wireshark和aircrack-ng套件正常情况不用额外装。但如果你用的是精简系统或者自己裁剪过的环境建议先确认这几个东西在位sudo apt update sudo apt install wireshark tshark aircrack-ng wireless-toolsWireshark安装时如果碰到“非超级用户抓包权限”的提示一般让普通用户加入wireshark用户组就能正常开图形界面sudo usermod -aG wireshark $USER改完用户组记得重新登录或者开新终端否则当前会话的权限不会生效。抓包链路里最关键的不只是Wireshark还有你的无线网卡。Kali下如果用自带的无线网卡做普通监听很多场景够用但如果你要抓附近信号更弱或者信道更多的Wi-Fi建议外接一块支持监控模式的USB无线网卡。这里不提具体品牌你只要记一个标准网卡芯片要支持monitor mode且官方或社区确认在Linux下有稳定驱动。在买之前搜一下型号和Kali兼容性能省掉一整晚的折腾。2.2 用“钓鱼”的比喻说清楚监控模式无线网卡有几种工作模式平时上网用的是Managed模式网卡只会收取AP分配给自己的数据。想抓Wi-Fi环境里的所有空中报文就得把网卡切到Monitor模式。你可以这么理解Managed模式是自己坐在办公室里只听前台打来的电话Monitor模式是直接坐在总机房门口所有进出的通话都能录音不管是不是打给你的。在Kali里切监控模式的方法很简单aria工具链的airmon-ng可以干这事。假设你的无线网卡接口是wlan0先关掉干扰的网络进程再切模式sudo airmon-ng check kill sudo airmon-ng start wlan0切完之后接口通常会变成wlan0mon你用iwconfig看一下模式是不是Monitoriwconfig如果看到Mode:Monitor就说明现在这张网卡已经在“总机房门口”待命了。注意airmon-ng check kill会把NetworkManager停掉意味着普通Wi-Fi连接会断开这是正常的别以为出问题了。切回正常上网的模式可以参考airmon-ng stop wlan0mon但很多新版本已经不需要手动切换直接用iw就能操作。2.3 拿一份合格的抓包文件握手和IV必须心里有数有了监控模式接下来要把流量存成文件。Wireshark图形界面里直接点“Capture Options”选好网卡就能抓但纯命令行环境或者想精准验证的时候用airdump-ng可能更顺手sudo airodump-ng wlan0mon -c 6 --write lab-c 6是锁定信道6--write lab表示把抓取结果写入lab-01.cap等文件。如果你只关心某个AP可以先扫描一轮找到目标的BSSID和信道sudo airodump-ng wlan0mon然后针对目标再抓顺便把目标信道写上。这样生成的Pcapng文件拿到Wireshark里分析信息密度高很多。判断文件是否“合格”有个硬指标抓WPA2时文件里必须包含四步握手。Wireshark打开文件后在过滤器里输入eapol如果看到Type为EAPOL的帧而且源地址和目的地址能对应到一组身份认证交互那这批包就具备了解密条件。WEP的话不需要EAPOL你只要确认抓到了加密帧就行Wireshark里看起来帧类型是Data且带IV标志。3. Wireshark解密WPA2的完整思路3.1 首选项里的密钥配置是核心解密的第一步不是点播放按钮而是先告诉Wireshark“你手上有哪把钥匙”。打开菜单Edit编辑→ Preferences首选项→ Protocols协议→ IEEE 802.11。在802.11协议设置页面里有“Decryption”或者“Wireless settings”相关区块不同版本界面略有差异但核心都是一个密钥管理列表。以常见的方式来说在密钥列表里点“Edit”或者“Add”会弹出一个窗口让你填写密钥类型选择“wpa-pwd”或者“wpa-psk”WPA2/WPA都走这个类型密钥字符串有两种填法ASCII密码形式密码:SSID比如MyWiFiPass:HomeNet十六进制PSK形式直接填64位十六进制字符串不需要加SSID这里特别说一下为什么建议带SSID。Wireshark在解析握手时要用SSID参与计算如果你只填了密码没填SSID或者SSID写错一位哪怕密码完全正确PTK也算不出来解密一定失败。所以填密码:SSID这种格式是最稳妥的SSID大小写也要和抓包完全一致。比如hello123:HomeNet如果你的密码里恰好有英文冒号那格式就会变得比较麻烦这时可以把密码转成十六进制PSK或者在填字符串时用转义。老实说我遇到过几次密码带冒号的情况直接把PSK转成十六进制是最省事的方案这也是标题里“ASCII码转换表”在实际工作中的最大价值之一。3.2 实际解密验证流程从滤到验一个不落密钥配置好之后点Apply或者OK保存。此时原本显示“802.11 header only”的加密帧Wireshark会自动尝试解密画面会发生变化。验证是否成功的经典办法是加过滤条件ccmpWPA2实际加密数据的协议类型通常显示为CCMP对应AES或者TKIP。解密成功时会看到这些帧的Data部分不再是几个字节的加密负载而是能实际展开的完整的传输层内容比如HTTP请求、DNS查询、TLS握手再往深里看是明文数据。更确切的验证方法是直接看某个TCP或UDP流。比如在过滤器里输入http如果出现明文HTTP请求那基本就是解密生效了。如果出来的仍只是802.11层的帧头展开数据负载也是乱码或长度不对那就回到第3.1节从头排查大概率是密钥格式或者SSID匹配问题。还有一个细节很多人容易忽略就是解密后的显示。Wireshark默认会同时显示加密前的帧和“伪解密帧”。如果画面看起来重复或者乱可以在Preferences的“Wireless”设置里关掉“Ignore un-decrypted frames”之外的一些显示选项或者干脆用过滤条件只显示数据帧不要被管理帧和控制帧干扰。3.3 WEP解密差不多的路子但有两个别踩的坑WEP的配置和解密流程跟WPA2很像区别在密钥类型要选“wep”密钥格式可以填5个字符的ASCII密码13个字符的ASCII密码10位或26位十六进制密钥具体看你AP使用的WEP密钥是64位还是128位。填进Wireshark之后原本RC4随机加密的帧就能直接还原不需要等任何额外握手包。这里有两个坑我要单独讲第一个坑是密钥位数对应错误。64位WEP对应5个ASCII字符或10位十六进制128位对应13个ASCII或26位十六进制填错一位都不会有结果。Wireshark对WEP密钥输入其实很宽容但类型不对就静默失败界面上不报错解密结果还是乱码很坑。第二个坑是WEP的密钥如果不带SSID在某些版本里也能解出来因为它不参与计算。但如果你加密了多个BSSID的流量同一个WEP密钥解析起来就会产生误配。建议不管WPA2还是WEP都带上完整的网络信息减少潜在混淆。4. 常见坑与排查解密失败几乎都是这几个原因4.1 密钥类型选错ASCII和十六进制没分清很多人第一次填写密钥时习惯性把Wi-Fi的密码直接粘进去选类型时选了“wpa-psk”预共享密钥但wpa-psk那个字段填的是64位十六进制的PMK值不是键盘敲进去的明文密码。这是个高频错误我几乎每次上课都能看到好几个同学踩中。正确定义是这样的你从路由器后台看到的“无线密码”是ASCII/UTF-8字符串对应wpa-pwd类型的密码:SSID64位十六进制的PSK是拿“密码SSID”通过PBKDF2运算出来的固定长度散列对应wpa-psk类型如果手头确实只有路由器后台截图的密码原文那就选wpa-pwd。如果你有机房给的PSK哈希值比如64个字符的十六进制串才选wpa-psk。这两个概念混了解密必死。ASCII转十六进制时还要注意全半角Wireshark里十六进制字符串不允许出现空格拷贝之前先清理干净。4.2 四步握手没抓全解密立刻失效前面提过WPA2解密需要四步握手实际排查时你会发现有时候不是没抓到而是没抓完整。比如抓包时手机和AP已经建立了连接中间没有重新认证你就只能看到后续的数据帧看不到EAPOL帧又比如你人在信道1抓包但AP后来切换到了信道6握手那几帧丢了几个数据更是一塌糊涂。解决思路其实很暴力在受控环境里让客户端重新连一次Wi-Fi。最简单的做法是关闭手机的Wi-Fi再打开或者在路由器后台把客户端踢下线重连在重连瞬间抓包你的EAPOL就在那里等着。用端口隔离方式严格点说就是让对手方重新触发关联但咱们这里是实验室让大家重连自己手机就行。抓完后在Wireshark里按eapol过滤数一数是不是至少有1组连续的4个EAPOL帧有的话基本就稳了。4.3 报文方向、AP/Router字段选错的尴尬Wireshark较新版本里如果你选的是wpa-pwd格式理论上不需要额外指定AP MAC。但某些旧版本或者特殊场景下界面里会出现一个可选的“AP”字段让你填BSSID。很多人手一抖填了个自己网卡的MAC而不是AP的MAC结果解密直接失败。你可以在抓包文件里通过wlan.bssid过滤字段找到真正作为AP的那个MAC再回填。另外如果你是抓了多个AP在同一信道懒得区分哪个是目标那就更要靠密码:SSID的SSID来约束因为SSID才是WPA2生成PMK时真正参与计算的“盐”。我自己最惨的一次经验是SSID大小写差一个字母看了一个小时没发现最后逐字节比对了PMK才发现问题。这种低级错误最消耗耐心务必仔细。5. 保姆级ASCII码转换表怎么用5.1 为什么需要ASCII和十六进制之间互相转Wireshark的密钥字段尤其在命令行或导入配置时经常只接受十六进制。你手上拿到的Wi-Fi密码是人读的“hello123”但配置文件里要的是68 65 6c 6c 6f 31 32 33。很多自动化脚本和wpa_supplicant配置也都是十六进制PSK形式。这时候就明白为什么需要一张ASCII码转换表了。ASCII码表本质上是把字母、数字、符号映射成0到127的编号再以十六进制显示。‘h’对应十进制104也就是十六进制68‘e’对应十进制101十六进制65。只记住这层关系你就能自己手算了。如果密码包含大写字母、数字、特殊符号查表是最稳妥的因为不同字符的ASCII编号跨度大靠心算容易错。5.2 转换表查找方法加实例演示当你面对一串密码如Ab3!想转成十六进制字符串过程是A十进制65十六进制41b十进制98十六进制623十进制51十六进制33!十进制33十六进制21合起来就是41623321。这个值直接能填进支持十六进制PSK的字段注意没有冒号、没有空格每两个十六进制字符对应一个ASCII字符。下面是常见字符的ASCII码、十六进制、字符对照表我日常最常用到的部分字符十进制十六进制0-948-5730-39A-Z65-9041-5Aa-z97-12261-7A空格3220!33216440#3523$3624%3725^945E3826*422A(4028)4129如果想转整串Wi-Fi密码从左到右逐个查然后拼接即可。比如wifi123w77, i69, f66, i6940131, 232, 333所以“wifi123”的十六进制字符串是7769666940313233长度是18个字符正好是9个字节。如果你发现转出来的十六进制长度是奇数那说明中间漏了某个字符或空格注意别把口令里的空格吞了。5.3 常见密码的ASCII转十六进制速查为了节省你反复查表的时间我把实验室里遇到比较多的典型密码转成了十六进制形式你可以直接参考明文密码ASCII十六进制123456783132333435363738password70617373776f7264admin12361646d696e313233test1237465737440313233HomeNet!486f6d654e657421要注意这个表里的“明文密码”转出来的是PSK的前置计算原料真正WPA2的PMK还要加上SSID再做一次PBKDF2所以别拿这张表去生成完整的64位PSK。它的场景就是帮你准确输入Wireshark的ASCII密码形式、或者你手动转码时核对一下结果。6. 解密之后的几个善后小技巧解密成功只是第一步真正分析数据还有几个习惯我建议形成。第一个是立刻给解密后的流量做协议分层统计用Statistics → Protocol Hierarchy一眼就能看出这个Wi-Fi里跑的是HTTP多还是DNS多定位异常会话效率极高。第二个是善用Follow流右键 → Follow → TCP Stream把某一台设备的HTTP请求和响应单独拉出来看排查IoT设备上报什么数据、某个App和服务器之间传了什么这个过程就是做流量分析最有成就感的部分。针对WPA2的抓包还有一种特殊情况如果路由器开启了PMF管理帧保护管理帧的内容不会因为WPA2解密就变可见加密数据帧虽然解开了但某些关键管理操作依旧需要单独看。很多实验室的老AP默认不开PMF所以你遇到解不开管理帧的时候先别怀疑密钥去看AP设置里是不是开启了802.11w。新路由器很多默认就开我实验时踩过这个坑。7. 把这件事说给新手解密不是破解安全意识才是起点最后得专门说一点因为很多刚接触Kali的人容易把“解密”和“破解”搞混甚至在无授权环境里拿这套技术去玩别人的网络。Wireshark解密需要你持有密码或密钥它等于是在你有钥匙的前提下帮你看清自己家里的流量不是你拿着一份抓包文件就能随便开别人家的锁。WPA2在实际攻击面里的那些破解手段和这篇文章的“解密”是两个完全不同的技术方向。如果你要做实验建议在自己家路由器、自己开的移动热点、或者某个实验室环境里操作。碰到WEP和WPA2混合的旧设备确保设备是你自己的别为了练手去碰别人家的路由器。我在实际带人的过程中一直强调一个观点安全能力的核心不是那几条命令而是你知道什么能做、什么不能碰、边界在哪里。这个习惯比你会用一万个工具都值钱。Wireshark解密这条路走到这里已经能支撑你做很多事了。从抓包到配密钥从验证解密到分析明文一条线下来你对Wi-Fi加密机制的理解会比只看概念深很多。建议你回头拿自己手机开个热点用移动数据上网产生一点浏览流量再抓一抓、解一解整个过程半小时不到但亲手解出明文那一刻你会对“数据在空气中只是密文”这句话有自己的体感。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑