所谓配网指的是,通过外部向WiFi模块提供SSID和密码,以使WiFi模块连接到指定的热点或AP并加入此无线网络的过程。而智能配网,简单来说就是使WiFi模块处在混杂模式下,手机等设备在MAC层将SSID和密码按照一定的协议格式填充在MAC包中不加密的包头部分,采用广播和抓包的方式,分段多次传递给WIFI模块的配网技术。
AirKiss是微信硬件平台提供的一种WiFi设备快速入网配置技术,并随着微信的广泛使用而得到推广和普及。和一般的智能配网方式类似,不需要提供进行人机交互的额外接口,不占用单片机的运算资源,实现也比较方便,而相较于一般的智能配网方式,微信Airkiss不需要安装额外的APP,因此可以直接在Android、iOS双端上使用。

Airkiss配网基本流程:

  • (1) WiFi设备以Station混杂模式运行。
  • (2) 手机微信通过Airkiss协议的格式发送无线SSID和密码。
  • (3) WiFi设备通过抓包获取到SSID和密码,然后连接到热点或AP。

airkiss1

图7 微信中使用AirKiss操作界面

智能配网技术的基本原理:

(1) 混杂模式

WiFi设备通常以Station的模式运行,同时它还可以运行于混杂模式下。正常的WiFi设备都仅有一个MAC地址,其硬件电路会对目标MAC地址自动过滤并丢弃与其MAC地址不符的数据包。开启混杂模式后,空间中符合802.11标准格式的数据包都会被接收进来,不会被过滤,此过程就是俗称的抓包。
在配网的情形下,手机等设备根本不可能知道该WiFi设备的MAC地址,所以手机发送出去的数据包,在通过无线AP转发出去时,WiFi设备必须要处在混杂模式下才能接收到这些数据包。

(2) 信道切换

802.11标准有多个信道,在同一时刻WiFi设备和无线AP都处于同一个信道内,多个热点的WiFi信号混在同一个信道就会产生干扰,而WiFi设备根本不可能判断目标热点处于哪个信道,但是可以确定手机所连接的WiFi所处的信道,这样就要求WiFi设备需要在一定的时刻切换信道,以便能够接收到数据包,并且当WiFi设备检测到有效的数据包后,需要锁定在该信道进行后续的通信。

(3) 利用数据帧的长度来承载有效信息

下图为802.2 SNAP(802.11的物理层协议)的数据帧格式:

airkiss2

图8 802.2 SNAP(802.11的物理层协议)的数据帧格式

其中DA字段为目标MAC地址,SA字段为源MAC地址,Length字段为后面数据的长度,LLC字段为LLC头,SNAP字段包括3 bytes的厂商代码和2 bytes的协议类型标识,DATA字段为所要传输的负载,此部分对于加密信道来说是密文的,最后FCS字段为帧检验序列。
对于无线信号的监听方来说,不管无线信道有没有加密,数据帧中的DA、SA、Length、LLC、SNAP、FCS字段总是暴露的,因此可以利用这6个字段来获取信息。但对于无线信号的发送方来说,由于操作系统的限制(比如ISO或者Android),DA、SA、LLC、SNAP、FCS五个字段的修改需要很高的控制权限,发送方一般是很难拿到。经过以上分析,只剩下Length字段可以利用,发送方通过改变其所需要发送数据包的长度可以很方便的对Length字段实现控制。所以,只要制定出一套利用长度编码的通信协议,就可利用802.2 SNAP 数据包中的Length字段进行信息传递。

在实际应用中,会采用UDP广播包作为信息的载体,信息发送方会往空间中发送一系列的UDP广播包,其中每一包的长度(即Length字段)都按照AirKiss通信协议进行编码,信息接收方利用混杂模式监听空间中的无线信号,并从数据链路层截取802.2 SNAP格式数据包,便可得到已编码的Length字段,随后接收方便可根据Air Kiss通信协议解析出需要的信息。[ ]