前言

现在的智能硬件产品,以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的方式。

2 WIFI快连技术分析

2.1 快连时AP信息的发送

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

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


从图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所示。


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

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

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




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


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

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

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



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

WIFI快连技术介绍相关推荐

  1. 一加7充电_一加7tPro支持无线充电吗 手机快充技术介绍

    一加7tPro是近期发布的一款热门手机,配备全新快充技术,在此前发布的一加旗舰机中,都没有配备无线充电技术,那么一加7tPro支持无线充电吗?下面来看详细介绍. 一加7tPro不支持无线充电,手机电池 ...

  2. 常见电池快充技术介绍说明

    智能手机的兴起使得手机耗电量急速上升,而成本.电池技术都限制了电池续航时间,在没有办法解决电池续航问题的时候,为用户提供更快的充电速度似乎成了解决手机待机问题理所当然的方法,在这个大背景下,现在的手机 ...

  3. WiFi以及WLAN技术介绍

    http://hi.baidu.com/hieda/blog/item/567e49fa791ef81aa8d31182.html IEEE 802.11b无线网络规范是IEEE 802.11网络规范 ...

  4. E103-W01产品WiFi无线模块快连技术在智能家居中的应用

    WiFi是一种允许电子设备连接到一个无线局域网(WLAN)的技术,通常使用2.4G UHF或5G SHF ISM 射频频段.连接到无线局域网通常是有密码保护的:但也可是开放的,这样就允许任何在WLAN ...

  5. wifi快连与smartconfig介绍

    介绍 smartconfig其实是一些芯片厂商提供的一种wifi快连技术,其目的是使智能家电等设备能够简单.快速的连上wifi.不同的厂商对这种wifi快连技术的叫法不一样,其他叫法诸如SmartCo ...

  6. WiFi快连、SmartConfig、SmartConnect、smartlink

    最近要给公司同事们培训WiFi快连技术,整理了相关资料,也分享在博客这,献给有缘人. 前言 现在的智能硬件产品,以WiFi品类居多,这些WiFi硬件没有人机交互界面,但设备要上网肯定要配置SSID等相 ...

  7. 讲一讲WiFi快连、SmartConfig、SmartConnect

    最近要给公司同事们培训WiFi快连技术,整理了相关资料,也分享在博客这,献给有缘人. 前言 现在的智能硬件产品,以WiFi品类居多,这些WiFi硬件没有人机交互界面,但设备要上网肯定要配置SSID等相 ...

  8. loT设备与手机的连接方式,WiFi快连、SmartConfig、SmartConnect

    现在的智能硬件产品,以WiFi品类居多,这些WiFi硬件没有人机交互界面,但设备要上网肯定要配置SSID等相关信息,于是WiFi快连应运而生. 事实上在2010年,wifi联盟就推出过简单配置的协议规 ...

  9. 大快HanLP自然语言处理技术介绍

    大快HanLP自然语言处理技术介绍 这段时间一直在接触学习hadoop方面的知识,所以说对自然语言处理技术也是做了一些了解.网络上关于自然语言处理技术的分享文章很多,今天就给大家分享一下HanLP方面 ...

最新文章

  1. 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和普通变量之完全解读...
  2. hex文件和bin文件区别
  3. 导出excel--多个sheet
  4. python 语言教程(3)变量
  5. linux文字模式怎么传文件夹,虚拟机VMWare文本模式Linux 与 Windows 文件互传
  6. java中printreader类_Java基本字符流输入输出类的使用
  7. html界面选择按钮没法取消,如何使用JavaScript取消选择按钮
  8. .NET 中文件嵌套,例如:cshtml文件下面嵌套css和js【机器翻译】
  9. 车牌字符识别中ctc loss损失函数理解
  10. 淘宝/天猫API ,获得淘口令真实url
  11. 微信小程序后台服务器搭建
  12. ESD试验与设备介绍
  13. 什么是 Rax,以及 Rax 的特点
  14. 扩展点系列之ApplicationContextAwareProcessor普通类获取Spring Bean - 第433篇
  15. 计算机科学与技术专业答辩形式,2016计算机科学与技术专业论文答辩范例.ppt
  16. 视线估计、凝视目标估计相关评价指标
  17. JavaScript赋值运算符,比较运算符,逻辑运算符
  18. 二分查找的递归与非递归实现
  19. BZOJ 4888 [Tjoi2017] 异或和
  20. 用python哆啦a梦的代码_【Python】绘制哆啦A梦

热门文章

  1. 将APP保卫战进行到底--为你的APP添加四道防线
  2. amd同步多线程_AMD发布锐龙3 3300X/3100:首次实现同步多线程
  3. 电视机wifi显示服务器未连接,为什么电视连上wifi却用不了 电视连上wifi解决方法介绍【图文详解】...
  4. Linux性能监控(CPU监控)
  5. 【Android 日常学习】我逆向了微信数据库——微信如何大幅度提升交互性能
  6. 虚拟机连接上网的步骤
  7. 帆软报表-鼠标悬停改变背景色
  8. 探索【Stable-Diffusion WEBUI】的附加功能:图片缩放抠图
  9. unity3d 布娃娃系统插件 PuppetMaster 木偶师
  10. Collaborative Learning of Label Semantics and Deep Label-Specific Features for MLC