关闭

SmartConfig

标签: wi-fismartconfig
7597人阅读 评论(9) 收藏 举报
分类:

要实现的功能:

手机已经联上某个WIFI网络,通过手机APP发送SSID和密钥。另外一个Wifi模块可以监听到数据,但无法解密数据。微信的air kiss使用了类似的原理。

处理原理:

wifi模块虽然无法解密监听到的数据包,但模块仍可以看到每个数据包的源、目标mac地址,可以看到数据包里数据域的长度。加密会以一种一致的方式影响发送的数据包的大小。例如:
APP发送n字节数据,发送至路由器时,加密的包会有(n+x)字节。x在这些包里是一个固定数字。数据包的size就可以存放我们真实信息,而数据包的内容则是无关紧要的。
手机在加密网络里以固定长度发送UDP包给局域网内的另一个设备。另一个设备并不在意收到的数据包,数据包并不重要。
wifi模块会监听经过的每个数据包。而数据包会有一些基本类型信息,让模块可以排除一些无效数据。例如:数据包不是802.11  Qos data数据的将被排除。
由于wifi模块并不知道需要在哪个信道上监听,也不知道源、目标地址对,这样在发送编码后的ssid时,允许发送一些重复的字符污染数据。
将ssid和密码每个字符都编码为数据包的长度,然后按顺序发送。

SNAP格式

这里写图片描述

DA:目标mac地址
SA:源mac地址
长度区域从这里开始:
这里写图片描述

细节

例如现在要发送SSID 值是1399,密码值是1459,另外两个值有标准的分隔符:3、23.
使用两个常数,L:值28,C值:593,下面将会看到用法。
将下来按顺序生成序列:

  • SSID:1399
  • L+SSID字节长度
  • 两个分隔符 3和 23
  • 然后我们循环发送SSID的每个字节,每个字节生成一组4个值:
    两个值:接下来会描述,字节的每一块
    接下来是3 和 23分隔符。

密码同样的规则进行处理,但密码里不能出现1459.

注意TI的安卓库和java库是以上面描述的形式产生的。奇怪的是TI的iOS库产生规则不同。这并不影响CC3000解码数据。这个不同会在接下来的示例文件里看到。

我们一旦可以看到所有这些UDP数据包,数据库的每个值会发从Smart Config程序发出来。例如:通常它会是网关。

手机端会不停发送数据。CC3000使模块工作、过滤不需要的数据,然后配置联网。然后它在自己的网内发送广播数据告诉手机停止发包。

注意:网络最大传输单元(MTU)要支持所传输包的大小。当前Smart Config的客户端需要MTU至少1500(这在每个正常网络里都是合理的值)。
TI Smart Config实践重复发送合理的SSID和密码,TI的JAVA库每次完成发送会暂停100ms,在android和ios上都一样。

编码SSID或密码

如果SSID由字母0至n-1组成,我们要生成2n个对应的数据。
注意:通过IEEE的802.11i-2004,Annex H.4.1,用户可能会键入一个使用64位16进制编码的字符串,或是对应的ascii字符。推测WEP和WPA有类似的约束。SSID必须是1至32字节,不能有控制字符集(参考http://stackoverflow.com/a/5017144/245602),而且SSID在手机上显示是从左到右的(许多路由只接收可见或可打印字符)。
所以假定ASCII码字符是8位,每个值有高低位。例如:M的ASCII码是0x4D,高位是0x4,低位是0xD。
如果我们控制一个数据序列,从0开始,每次增加,这样SSID的每个字符由高Hi和低位Li,各自生成两个序列值:2i和(2i+1)。

Seq. High Low
2i Li-1>^(2i%16) Hi
2i+1 Hi^((2i+1)%16) Li

注意值的高位i是在低位i后,^是XOR运算。

下面展示了SSID的MyPlace是怎么被拆分为高位和低位的:

这里写图片描述

每4bit数据生成一个数据,低4位是数据本身,高4位是当前数据序号(已经和之前的数据XOR运算过)。然后给每个生成的值加上变量C(如:593),它将会变成当前包的长度。

注意4bit的限制意味着我们只能使用当前数据序列的低4位。如果序列数字是S,然后我们会用S % 16,结果是为SSID的MyPlace7个字母生成14个值,如:
这里写图片描述

密码采用同样的方法处理,数据序列会重新从0开始对密码编码。
当前Smart Config最多支持密码长度是32个字符。比WPA2的标准稍短点。

选择UDP包的目标地址

现在一般是使用UDP包发送SSID信息,向默认网关地址发送。然而目标地址并不重要,只要目标地址是真实存在的,而且它有能力收到包。然而怎么定义目标地址是有意义的。
CC3000不支持hoc网络,在没有AP(Access Point)权限的网络也不能使用。在大多数正常设置的AP网络里都是有默认网关的。然而默认网关不是强制的的,一个wifi网络也可能根本没有默认网关地址。
不知道为什么TI没有选择AP地址代替默认网关地址。它们也可能是完全一样的,但用户可能容易搞混。
注意:在一个AP网络里,数据都要通过AP。即使选择了机器地址,AP依然会向目标地址转发数据。这不影响使用CC3000,但这并不意味着数据流量是无意义的。

可从appStore下载 CC3000 Smart Config app 测试其app。
或下载安卓版本:SmartConfigCCX.apk

TI sdk网址:
http://www.ti.com/tool/SmartConfig

参考网址:
http://processors.wiki.ti.com/index.php/CC3000_Release_Notes#Version_1.10:
http://blog.csdn.net/johns_xiao/article/details/38337159
http://www.tuicool.com/articles/E3a2myi
http://bergcloud.com/devcenter/tutorials/cc3000-smart-config
http://www.cnblogs.com/80scd/p/5881993.html

0
0
查看评论

讲一讲WiFi快连、SmartConfig、SmartConnect

现在的智能硬件产品,以WiFi品类居多,这些WiFi硬件没有人机交互界面,但设备要上网肯定要配置SSID等相关信息,于是WiFi快连应运而生。 事实上在2010年,wifi联盟就推出过简单配置的协议规范《WiFi Simple Configure》,通过输入PIN码或者按键来接入AP,这技术被称为W...
  • zddxmu
  • zddxmu
  • 2015-07-24 23:41
  • 22398

物联网 WIFI 一键配置原理(smartconfig) ESP8266/QCA4004

自从物联网 问世以来,如何使得物  能够联网 有了很多的方式,目前运用非常广的WIFI,今天就总结下自这个方面,也对于有需要的盆友 也希望有抛砖引玉之效果。       物联网:  智能硬件+APP+云       AP...
  • xushx_bigbear
  • xushx_bigbear
  • 2015-03-10 11:28
  • 7227

wifi一键配网smartconfig原理及应用

智能家居/家电现阶段还处于普及阶段,由于家庭wifi网络的普及,目前普遍采用wifi与路由器完成连接,与手机/云端进行数据交互 智能硬件,如智能插座,智能空调,智能空气净化器由于不具备人机交互界面,不能像电脑一样的搜索/选择指定路由器,输入连接密码的界面,所以必须先解决正确连接路由问题; 目前流行的...
  • flyingcys
  • flyingcys
  • 2015-10-20 21:38
  • 14826

smartconfig 工作原理

Initially TI clearly documented how the SSID and password were transmitted to a CC3000 enabled device in their "CC3000 First Time Configur...
  • johns_xiao
  • johns_xiao
  • 2014-08-01 15:21
  • 6068

ESP8266学习笔记4:ESP8266的SmartConfig

今天花了将近一天的时间来研究ESP8266的SmartConfig功能,这个应该算是wifi云产品的标配。这篇文章先把SmartConfig操作一遍,我还写了另一篇文章梳理了物理层的具体协议,http://blog.csdn.net/sadshen/article/details/47049129。
  • zddxmu
  • zddxmu
  • 2015-07-14 20:46
  • 33018

wifi一键配网smartconfig原理及应用

智能家居/家电现阶段还处于普及阶段,由于家庭wifi网络的普及,目前普遍采用wifi与路由器完成连接,与手机/云端进行数据交互. 智能硬件,如智能插座,智能空调,智能空气净化器由于不具备人机交互界面,不能像电脑一样的搜索/选择指定路由器,输入连接密码的界面,所以必须先解决正确连接路由问题; 目前...
  • lbaihao
  • lbaihao
  • 2017-07-03 18:04
  • 958

SP8266 smartconfig源码 smartconfig.zip

  • 2016-09-01 13:03
  • 2.83MB
  • 下载

物联网 WIFI 一键配置原理(smartconfig) ESP8266/QCA4004

自从物联网问世以来,如何使得物 能够联网有了很多的方式,目前运用非常广的WIFI,今天就总结下自这个方面,也对于有需要的盆友也希望有抛砖引玉之效果。 来看个知乎上的提问,很有意思! 问题: 买了BroadLink的智能插座,发现有一个很神奇的一键配置功能。简单的说就是:当智能插座还没...
  • TXF1984
  • TXF1984
  • 2016-04-19 11:06
  • 6348

SmartConfig 技术原理

SmartConfig 技术原理 简单来说, 这是一种让你可以在没有和其他设备(支持SmartConfig技术)建立任何性质的通讯链路的情况下, 配置该设备接入wifi网络 虚构一个实际场景的话, 会是这样: 你购买了一个带有wifi的摄像头, 不过这个摄像头没有usb...
  • yangzhao0001
  • yangzhao0001
  • 2015-11-27 15:28
  • 1487

Wifi SmartConfig实现

现在好多设备都直接用手机wifi来配置,没有操作界面的设备了,像TISmartConfig,Airkiss。 网上也很多说明,自已也实现了个,总体比较简单。 设备端,需要能支持wifi混合模式,基本就可以了。 实现的过程就是把需要发送的数据通过udp包的长度来编码,设备端在混合模式下,通过抓取udp...
  • jhting
  • jhting
  • 2016-08-11 18:36
  • 1646
    个人资料
    • 访问:1358879次
    • 积分:18957
    • 等级:
    • 排名:第565名
    • 原创:728篇
    • 转载:20篇
    • 译文:5篇
    • 评论:193条
    博客专栏
    最新评论