4. Auth与Assoc帧:认证过程(Open/Shared)、关联请求与响应、状态码分析

抓包分析WiFi配网,说白了就是看设备之间怎么「握手」。而Auth(认证)和Assoc(关联)这两步,就是握手的核心环节。很多新手拿到抓包文件,看到一堆Management帧就懵了——其实你只要抓住几个关键字段,整个流程就清晰了。

我个人习惯,分析配网问题时,第一步就是先过滤出Auth和Assoc帧。为什么?因为这两个帧直接决定了STA能不能连上AP。如果状态码不是0,后面的一切都是白搭。

4.1 认证过程:Open System vs Shared Key

WiFi认证有两种模式,Open System和Shared Key。现在99%的场景都是Open System,但Shared Key偶尔会在老设备或特殊项目里出现。我建议你至少要知道两者的区别,免得抓包时一脸懵。

认证类型 帧交互次数 安全性 典型场景
Open System 2次(Auth请求 + Auth响应) 无(仅身份声明) 家庭/企业WiFi(加密在后续4次握手)
Shared Key 4次(挑战-响应) 弱(WEP时代) 老旧设备、WEP加密网络

Open System说白了就是「走过场」。STA发一个Auth帧,AP回一个Auth帧,状态码为0就完事了。它不验证任何密码,真正的安全校验在后面的4次握手(EAPOL)里。

Shared Key就复杂一些。AP会先发一个Challenge Text(挑战文本),STA用WEP密钥加密后发回,AP解密验证。嗯,这里要注意——WEP已经被破解了,所以Shared Key认证现在基本绝迹。但我曾经在一个工厂项目里遇到过,客户的老式条码扫描器只支持WEP,那叫一个头疼。

抓包要点: 在Wireshark中过滤Auth帧,使用 wlan.fc.type_subtype == 0x000b(Auth帧)或 wlan.fc.type_subtype == 0x000c(Deauth帧)。Open System的Auth帧中,Authentication Algorithm字段值为0,Shared Key为1。

4.2 关联请求与响应:STA的「报到」流程

认证通过后,STA会发送Association Request帧。这个帧里携带了STA的能力信息,比如支持的速率、信道带宽、HT/VHT能力等。AP收到后,会根据自身配置决定是否接受关联。

我举个例子,你在抓包时看到Association Request里声明支持802.11ac,但AP只支持802.11n,那AP可能会在响应里降级协商,或者直接拒绝。我曾经遇到一个案例,STA的HT Capabilities里有个字段设置不对,AP直接回了状态码12(Association denied due to incompatible parameters)。

关联响应的核心就是状态码。0表示成功,其他值表示失败原因。下面是我整理的最常见的状态码,建议你记下来:

状态码 含义 常见原因
0 成功 一切正常
1 未指定失败 AP内部错误,需看AP日志
10 不支持的能力 STA要求的功能AP不支持(如802.11r)
12 参数不兼容 速率集、信道宽度等不匹配
17 AP已满 关联数达到上限
18 不支持的数据速率 STA声明的速率AP不支持

避坑指南: 我曾经遇到一个配网失败问题,抓包看到Association Response状态码是17(AP已满)。但客户说AP只连了5个设备,怎么可能满?后来发现是AP的「最大关联数」被误设为5,而且有个隐藏的客户端一直没断开。所以看到状态码17,别急着怀疑抓包,先查AP配置。

4.3 状态码分析:从抓包定位问题

状态码是分析配网问题的「第一把钥匙」。我一般会按这个步骤来:

  1. 先看Association Response的状态码——如果不是0,直接定位问题。
  2. 如果是0但后续4次握手失败——说明认证关联没问题,问题出在加密协商。
  3. 如果连Auth都失败——检查AP的认证模式是否匹配(Open/Shared)。

举个例子,你在抓包中看到这样的序列:

STA -> AP:  Auth (Open System)
AP -> STA:  Auth (Open System) [状态码: 0]
STA -> AP:  Association Request
AP -> STA:  Association Response [状态码: 12]

状态码12表示参数不兼容。这时候你要展开Association Request里的HT Capabilities和VHT Capabilities,看看STA声明了哪些能力。我遇到过最坑的一次,是STA的Supported Rates里包含了一个AP不支持的速率(比如54 Mbps但AP只支持到11 Mbps),AP直接拒了。

我的小技巧: 在Wireshark里,右键点击Association Response帧,选择「Follow -> WLAN Association」。这样能快速定位到对应的Request和Response,不用手动翻包。另外,在过滤栏输入 wlan.fc.type_subtype == 0x0000(Association Request)或 0x0001(Association Response),也能快速筛选。

4.4 认证与关联的完整流程图

下面这张图是我根据实际抓包经验画的,把Auth和Assoc的完整流程串起来了。你分析问题时,可以对照这张图一步步排查。

WiFi 认证与关联完整流程 STA(客户端) AP(接入点) ① Probe Request/Response(可选) ② Auth Request(Open/Shared) ③ Auth Response(状态码) ④ Association Request ⑤ Association Response(状态码) ⑥ 4次握手(EAPOL,加密协商) 说明:①为可选步骤(主动扫描时存在);②③为认证阶段;④⑤为关联阶段;⑥为加密协商阶段

你看,整个流程其实就这几步。但实际抓包中,经常会出现各种「意外」。比如STA发了Auth Request后,AP没响应——这时候你要检查信号强度,或者AP是不是开启了MAC过滤。再比如Association Response状态码是0,但后续4次握手一直没开始——这通常是AP的加密配置和STA不匹配。

我个人习惯,每次分析配网问题,都会先抓一个「正常配网」的包作为对照。把正常包的Auth/Assoc时序和异常包的对比,一眼就能看出问题出在哪一步。这个方法,比对着状态码表瞎猜要高效得多。