WIFI快连技术介绍

前言

现在的智能硬件产品,以WiFi品类居多,这些WiFi硬件没有人机交互界面,但设备要上网肯定要配置SSID等相关信息,于是WiFi快连应运而生。
事实上在2010年,wifi联盟就推出过简单配置的协议规范《WiFi Simple Configure》,通过输入PIN码或者按键来接入AP,这技术被称为WPS。可惜这个功能需要路由器支持,市面上一些路由器不支持,导致没有大规模推行。
快连不需要路由器支持,且更加简化,所以获得了迅速的发展。

1 什么是WIFI快连

如图1中,手机(设备B)已经接入了AP,而设备A是一个信息孤岛(没有足够的人机交互方式,无法在设备上输入要连接AP的SSID和Password)。于是依靠手机将AP的信息直接发送给设备A,设备A就可以接入AP了。
我们可以这样认为,WiFi快连就是接入AP的手机快速配置设备,使其接入AP的方式。
WIFI快连技术介绍_第1张图片

2 WIFI快连技术分析

2.1 快连时AP信息的发送

一个设备在知道AP的SSID和Password的情况下就可以连接到AP,而一个没有足够的人机交互方式的设备,如何知道AP的SSID和Password就是WIFI快连的核心。
当前的情况是,设备没有连接到任何AP,设备上的wifi能进入混杂模式,能够接收空中传输的wifi包,即使不是发送给自己的数据包。在这种情况下,其它设备就只有通过wifi空中传输,把ap的信息发给需要快连的设备。现在的问题来了,一个设备没有连接ap或与其它设备直接连接的情况下,wifi收到的数据包是加密的,没办法把数据解码出来。如图2为抓取的一个广播数据包的分解图。
WIFI快连技术介绍_第2张图片

从图2的信息看,802.11的数据包整个都是加密的,没办法解密,所以想通过数据包的data段把AP的信息传给快连设备是行不通的。那从上图能够获取哪些信息,并且这些信息是可以由上层协议修改的,主要有下面两个信息:
1、 数据包的长度:数据包的长度随着应用层封装数据量的大小变化;
2、 Destination Mac:这个地址可以为广播地址或组播地址,应用层可以修改组播ip来
达到修改Destination Mac中后3个字节的值(如图3为一个ip组播包,IP地址与mac地址有一定对应关系);

WIFI快连技术介绍_第3张图片
从图3中可以看到目的ip地址224.25.20.86(十六进制为:E0:19:14:56),目的mac地址为:01:00:5E:19:14:56,ip地址的后3个字节和mac地址的后3个字节是完全一样的。
有了这些信息,就可以通过包的长度或组播地址把AP信息编码发送,但一个数据的信息量有限,而AP的SSID及Password还是需要不少字节的,不是一个数据包就能编码的,那就需要传递一系列的数据包。传递一系列数据包时,有下面问题要解决:
1、 一系列数据包中,那个是第一个包;
2、 一系列数据包的顺序是怎么的(由于wifi存在丢包重传,接收到包的顺序和发送包的顺序有时并不一样);
上面两个问题在后面章节中具体分析的时候再解释是怎么解决的。
Wifi接收空中包时,会接收到大量设备发送的数据包,但可以通过source mac地址可以确认数据包是由同一个设备发出的。

从现在已有的产品看,实现快连技术的信息发送,有这两种方式:
1、 通过数据包的长度来编码信息(如第三节的介绍);
2、 通过组播地址来编码信息(如第四节的介绍);

2.2 快连时AP信息的安全性

由于快连时AP的信息是通过空中传输的,任何设备都可以获取到这些信息,若信息不经过加密,只是简单把信息组织一下就发送,就很容易被别人破解,带来安全性问题,所以一般厂家都会对信息进行加密再发送,如图4所示。

WIFI快连技术介绍_第4张图片
从图4看到,发送前经过加密,接收后再使用相同的秘钥解密,由于这种加密信息必须是要可解密的,所以加密方式及秘钥等也是不能公开的,所以现在加解密部分源码,厂家都是不开放的,而且一个厂家的加解密方式只能用于这个厂家的产品,不同厂家的产品是不能相互混用的。

3 数据包长度编码的快连例子

Realtek的wifi快连技术就是使用数据包长度进行编码信息的。如图5~图8为一次发送的数据包,包含了前导的同步序列及48个不同长度的数据包。这些数据是在发送端的机子
上抓取的,在接收端,是没办法解析出这个包是udp包及相关信息的。
WIFI快连技术介绍_第5张图片

WIFI快连技术介绍_第6张图片
WIFI快连技术介绍_第7张图片
WIFI快连技术介绍_第8张图片
从数据分析,前面为16对数据包前导系列,长度分别为45和1068,后面跟着有效信息数据包,这样就解决了识别第一个数据包的问题。后面连接着48个数据包,数据包的长度从63~819,所要编码的信息就在这48个长度值中。
这48个长度是指整个wifi包的长度,其中真实信息是编码在udp包中data长度中,先要计算出这48个包的data长度,如表1为48个包data长度的16进制数。

WIFI快连技术介绍_第9张图片
再从表1中标红的部分看,长度中高位字符用来表示包序号,序号从0x1~0x30,这样就解决了包顺序的问题,剩下的最后一个字符就用来编码AP信息,对于这部分信息是怎么加密过来的,只有Realtek自己知道了。

4 组播地址编码的快连例子

在MTK的方案中,采用的就是组播地址的方式实现ap信息的发送。如图9、图10所示,这些数据也是从发送端机子抓取的,接收端是解释不出udp数据及相关信息的,但mac组播地址的后面3个字节可以与ip组播地址的后面3个字节对应上的。

WIFI快连技术介绍_第10张图片
WIFI快连技术介绍_第11张图片
从组播地址的包看,长度都是一样的,但组播地址的规律还是比较明显的,组播IP地址244.125.25.30应该是作为同步或分割符一类的作用,组播IP地址224.25.0.xx~224.25.29.xx,用来标识包序号及编码信息,IP地址中的第3个字节是比较明显的顺序号,从0~29顺序下来,IP地址中最后一个字节应该就是用来编码AP的信息了。

你可能感兴趣的:(wifi,wi-fi)