珍惜WifiSmartConfig⼀键配置
引⾔
概念
SmartConfig⼜名快连
当前设备在没有和其他设备建⽴任何实际性通信链接的状态下,⼀键配置该设备接⼊WIFI
虚构连接⼀个实际场景
当⼿机端A接⼊WIFI S, 设备B没有任何实质性通信链接(信息孤⽴)
如果设备B也想接⼊这个S
肯定需要有⼈告诉B,S的的ssid、password
⽬前我们只有A的资源可以利⽤,所以只能A 告诉B
B在没有任何链接的情况下,A是如何告知B设备S的信息,这便是SmartConfig
虚构⼀个Sm a r tCo nfig技术实现快连的场景
准备⼀个⽀持Smartconfig技术的设备
1.启动这个设备
2.安装制造商提供的⼿机app
3.在设备附近打开App,输⼊需要接⼊的WIFI信息,确认,不出意外的话就会链接上这个设备
笔记本 投影仪Sm a rtCo nfig的实现⼚商
r tCo
编号⼚商芯⽚⼚商技术名称发包⽅式
1TI CC3200SmartConfig往某⼀个固定IP发UDP包2⾼通QCA4004/QCA4002SmartConnection-
3联发科MTK MTK7681SmartConnection组播地址编码
4MARVELL MC200+8801/MW300EasyConnect组播地址编码
5Reltek AMEBA SimpleConfig组播地址编码
6乐鑫ESP8266SmartConfig组播,通过长度编码
7新案线NL6621SmartConfig组播地址编码
8-AirKiss全⽹⼴播,通过长度编码Sm a rtCo ngfig的实际操作
r tCo
上述⼚商,是我能查到的应⽤到市场上⾯的⼏个⼚商,如有补充请下⾯评论区,给哥么提醒⼀下。
哥么看到上⾯这么多的⼚商,怎么搞?怎么开发?
⾸先根据⾃⼰的需要、国家地区选择最切实际的⼀个⼚家
肯定需要⼀个硬件,那么就度娘、⾕爹搜索到设备⼚商,买⼀个⽀持SmartConfig的硬件,进⾏尝试。(买不起硬件,出门右拐淘宝)
实现过程
⾸先需求公司要做⼀个灯泡、插座、⼀件配置的⼀款App,
1. 需要硬件⽀持
2. App
3. 成功率 10 6这种层次
经过⼀段时间的筛选,我们最终决定了⽤乐鑫,
原因: 1. 有现成的开发板情话短句十字以内
2. ⽂档⼯具都有
3. 国内⼚商也好沟通
4. 满⾜我们的需求
然后开始整合资料,整合资源
ESP8266完全教程资源包
乐鑫、ESP8266芯⽚
源代码
两种配置模式:
队名和口号1.Ap模式:
AP 是 (Wireless) AccessPoint 的缩写,即 (⽆线) 访问接⼊点。简单来讲就像是⽆线路由器⼀样,设备打开后进⼊ AP 模式,在⼿机的⽹络列表⾥⾯,可以搜索到类似 TPLINK_XXX 的名字(SSID)
2.SmartConfig模式
采⽤UDP⼴播模式(UDP接收IP地址是255.255.255.255)
esp8266进⼊混杂、SmartConfig esp8266先scan下AP ,得到AP的相关信息,如⼯作的channel,然后配置wifi芯⽚⼯作在刚才scan到的channel上去接收UDP包,如果没有接收到,继续配置ESP8266⼯作在另外的channel上,如此循环,直到收到UDP包为⽌
为什么要提前进⾏SCAN 下WIFI AP?
为了提⾼配置效率。假设当前⽹络中只有两个AP,⼀个AP⼯作在CHANEL1,另外个 ap⼯作在channel
13,我们现在需要配置智能硬件连接到AP2 ,就是channel13上,如果不提前scan就需要从1--13扫描浪费时间 就是需要从hannnel13⼀直扫描了,如果扫描了AP,芯⽚马上从AP CHANNNEL1 到channel13加快获取到UDP 包;
扩展
通过Yeelink提供的数据接⼝,⽤户可以把⾃⼰的传感器通过互联⽹接⼊Yeelink物联⽹云平台,从⽽实现随时随地获取传感器数据,为⼀些智能家居设备接⼊互联⽹提供了物联⽹云平台⽀持。
54青年节放假规定调试过程:
这个在⾕歌到的关于ti的Smartconfig的⼯作原理
CC3000 Smart Config - transmitting SSID and keyphrase
How does TI CC3000 wifi smart config work?
这两篇写的很详细,下⾯开始是⼀篇⽂章的翻译,⽔准别看了就看个⼤概吧。
结草衔环让我们从头开始,哥么有⼀个问题——哥么想要发送两条信息,⼀个名称和密码,A在⼀个连接WIFI状态下,B在⼀个⽆⽹状态下,但是B在监听周围所拥有⽆线⽹络流量,但是这些流量不能解密。
⽆法解密wifi通信的⼈仍然可以看到很多信息,例如,他们可以看到发送的每个数据包的源和接收者MAC地址。
哥么可以看到数据包的数据部分的长度。加密影响发送的数据包的⼤⼩,但以⼀致的⽅式,例如,如果⼀个数据包在给定的数据包中发送了n 字节的数据,那么加密的数据包将包含(n + x)字节,其中x在所有数据包中是恒定的。
因此,我们的问题的解决⽅案是对发送的数据包的⼤⼩进⾏编码(实际内容是不相关的)。
安全⽹络上的⼀⽅只向⽹络上的另⼀⽅发送特定长度的UDP数据包。另⼀⽅对收到信息包不感兴趣并不重要。
外部⽅不能直接知道包中包含UDP数据,但是包仍然包含基本类型信息,允许将许多数据包排除在考虑之外,例如任何不属于802.11⼦类型“QoS数据”的包都可以被排除。
由于外部⽅事先不知道要查看哪⼀个wifi通道或哪个源和接收地址对必须注意⼀个,除了基础数据,即编码的SSID等,还需要定期发送允许该数据被发现的重复模式。
我们将我们的SSID和keyphrase转换成⼀系列标记值、字符串长度、nibble值和分隔符值,然后将所有这些值编码并传输为数据包长度。
我们使⽤两个标签——⼀个是1399 代表SSID标签和⼀个值1459的关密码标签和⼀个标准分隔符序列,包含两个值- 3和23。
我们使⽤两个常数,L值为28,⽽C值为593,我们将在下⾯看到。因此,对于SSID,按照以下顺序⽣成下列值序列:
1399 代表ssid 名称
L加上以字节为单位的SSID的长度。
这两个分隔符值为3和23。
然后我们对SSID的每个字节进⾏循环,并为每个字节⽣成⼀组4个值:
两个值—⼀个⽤于字节的每个字节,如下⼀节所述。
然后是两个分离器值3和23。
值以相同的⽅式⽣成,⽤于关键短语(ssid = 1399 password = 1459)。
注意:TI Android library和Java applet库⽣成了如上所述的值,奇怪的是,TI iOS库产⽣了稍微不同的
排序(这显然不会影响CC3000解码数据的能⼒)。这种差异可以在后⾯的⽰例数据长度转储中看到。
⼀旦我们有了所有这些值然后UDP数据包,每⼀个对应于⼀个值的数据量,从机发送运⾏智能配置应⽤程序,即⼀个刚刚描述的值⽣成,到另⼀个系统在同⼀⽹络(⽬前总是⽹络的默认⽹关)。
值发送多次,直到外部党,即CC3000启⽤设备,成功地处理他们从所有其他的⽹络流量,并使⽤它们来连接⽹络,这时它的⼴告出现在⽹络的⽅式传
image.png
注意,包含i的⾼nibble的值是在包含i的低nibble之前⽣成的,并注意到caret,即。这⾥使⽤“^”,意味着XOR,⽽不是
image.png
关键字以同样的⽅式编码,注意序列号在编码关键字时从0重新开始,也就是说,该值不是从编码SSID进⾏的。
⽬前,智能配置在关键字长度上设置了32个字符的上限,即短于相关WPA2标准允许的最⼤长度。
发现了⼀种⽅法,即从⼀个安全的⽆线⽹络向⼀个外部的⼀⽅(没有相关的⽹络关键字)主动地泄露信息,这很有趣,并且想知道是否有⼈曾经遇到过它,或者它是否新颖?我在Stack Overflow上问过这个问题,但后来我把这个问题转移到了妹⽹站crypto.stackexchange,因为⼈们认为那⾥更合适。
更新:2013年10⽉21⽇:我⾄少得到了⼀个好答案。在2007年的⼀篇论⽂中,P. Martin称“安全⽆线⽹络中的秘密通道”,你可以到第
4.4.2节“UDP数据包⼤⼩与MAC框架⼤⼩的实验”,它基本上描述了智能配置所使⽤的过程。关于智能配置,专利的问题已经出现了⼀两次(尽管从来没有⼈提供过任何实际的专利申请或授予专利号的指针)。我的问题的答案和其他评论似乎表明,智能配置背后的基本思想是绝对先
选择UDP包的⽬的地。当前的逻辑总是将UDP消息发送到默认⽹关地址,该消息会将SSID等编码到默认⽹关地址。然⽽,只要它是⽹络上另
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论