SmartConfig 技术原理_第1页
SmartConfig 技术原理_第2页
SmartConfig 技术原理_第3页
SmartConfig 技术原理_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SmartConfig技术原理简单来说,这是一种让你可以在没有和其他设备(支持SmartConfig技术)建立任何性质的通讯链路的情况下,配置该设备接入wifi网络虚构一个实际场景的话,会是这样:你购买了一个带有wifi的摄像头,不过这个摄像头没有usb,没有以太网,没有蓝牙,没有nfc,gsm就更不可能了,只有wifi,那么问题来了:你如何配置这个摄像头接入你家的wifi?乍一想,没有数据链路,如何进行数据交换?对的,SmartConfig就是用在这种场景下的,如果这个摄像头的wifi支持SmartConfig技术,那么你只需这样几个步骤摄像头插上电源安装制造商提供的手机app(应用无需任何

2、特殊权限,只需要手机当前是接入wifi的)在摄像头附近打开app,输入你家wifi的密码,点击确认,稍等片刻,?不出意外的话,摄像头已经接入你家wifi了这项技术由德州仪器提出,并且应用在自己的CC300O系列芯片上.不过,从原理上来说,支持混杂模式的wifi芯片都可以应用该技术猜想首先,你可能会联想到是不是这个app控制了手机,让手机主动接入摄像头的wifi网络,然后交换数据.这确实是一个行得通的办法,但是却不实用,控制操作系统更换当前的网络连接是敏感操作,普通的app没这个权限,那么就需要用户参与其中,对于一般的用户而言,这样的流程就显得复杂且难以理解了这样看来,摄像头并没有和你控制的任何

3、一个设备建立任何性质的连接一般来说,我们潜意识里会默认通讯都是双向的,以这个习惯来看待SmartConfig似乎觉得匪夷所思其实,在这种场景下,我们只需要能够把wifi的名称和密码告诉摄像头就行了,摄像头有没有回馈并不重要顺着这个思路,我们发现可以这么做,手机app上生成一个包含wifi名称和密码的二维码,然后放置在摄像头前,摄像头只要识别了二维码自然就可以接入wifi但是,扫二维码的方式依赖视频信号输入,并不是通用的手段(因为现实场景中的设备并不都是摄像头),而且场景里也没有采用这种做法这么分析下来,传播wifi信息的渠道只可能是wifi本身了摄像头尚未接入wifi,况且wifi也是加密的,

4、app并没有能力控制wifi的底层通讯,app又是如何将信息成功外泄给摄像头的?共识理解SmartConfig原理前需要说两个共识无线数据的传播形式必定是广播至少目前是这样,因为我所知道的能做到点对点的无线传输只有量子隐形传输,可惜还在实验室中既然是广播,那么必然可以被监听,就像一个酒吧里有两个中国人和两个俄罗斯人,中国人和中国人说话,俄罗斯人听得到,只不过听不懂,反之亦然任何可控的模式都可以被用于编码,用于数据交换当前wifi应用的几种主流加密方式都存在一个特点,明文的长度和加密后的密文长度之间是线性关系即:密文长度=明文长度+算法相关的常量C,也就是说,只要明文长度可控,密文的长度即是可控

5、的这个特点是SmartConfig的核心原理原理如果了解的帧格式,你就知道,链路层载荷数据(即网络层头部及网络层数)在数据帧中是清晰可辨的,只要接收到帧就可以立刻提取出载荷数据,计算载荷数据的长度自不用说,而这里的载荷数据,通常就是密文常见的两种数据帧格式:=顾:阪tF-JffAPtoStation密文长度有了,接下来我们看一下明文的结构普通权限的应用程序是没有能力完全控制和定义传输层及下层所有协议数据的,唯一可以完全控制的就是应用层数据,那就继续分析一下TCP/IP协议栈中的网络层和传输层的数据结构常用的网络层协议非IPv4莫属,IPv4的头部绝大多数情况下都是定长的20字节,长度几乎完全可

6、控传输层协议我们选择UDP,因为UDP协议头部为定长的8字节,完全可控(当然,选择UDP还有别的原因)这么看来,我们有能力完全控制明文的长度明文长度=20+8+应用层数据长度密文长度也脱口而出密文长度=20+8+应用层数据长度+?算法相关的常量C如果我需要你发出一个密文长度为1000字节的帧,那么你只需要在UDP中塞满任意(1000-20-8-C)个字节即可接下来,只要我们利用可控的密文长度定义一张编码表即可将数据告诉任何知道这张编码表的设备了原理说完了,按照这个原理,几乎可以实现任意数据的传播,至于SmartConfig采用何种编码,没必要关心流程示例我们定义一张编码表,简单示意一下整个过程

7、:密文长度=映射释义1234=起始符;连续的3个起始符,用于表示数据传输开始1324=结束符;连续的3个结束符,用于表示数据传输结束110=间隔符;连续的2个间隔符,用于表示数据符之间的间隔=数据符;表示ASCII0 x00=数据符;表示ASCII0 x011127=数据符;表示ASCII0 x7F假设我们要把字符串”CJey”(密码)告诉摄像头,整个流程大致如下:(假设常量C为16)手机app部分:打开手机app,在输入框中填入要发送的字符串”CJey”,点击发送app连续发送三个UDP广播包,填充数据为1190个0 x00字节(1234-16-20-8=1190),表示传输开始app发送一

8、个UDP广播包,填充数据为1023个0 x00字节(1067-16-20-8=1023),传输字符Capp连续发送两个UDP广播包,填充数据为66个0 x00字节(110-16-20-8=66),表示数据间隔app发送一个UDP广播包,填充数据为1030个0 x00字节(1074-16-20-8=1030),传输字符Japp连续发送两个UDP广播包,填充数据为66个0 x00字节(110-16-20-8=66),表示数据间隔app发送一个UDP广播包,填充数据为1057个0 x00字节(1101-16-20-8=1057),传输字符eapp连续发送两个UDP广播包,填充数据为66个0 x00字

9、节(110-16-20-8=66),表示数据间隔app发送一个UDP广播包,填充数据为1077个0 x00字节(1121-16-20-8=1077),传输字符yapp连续发送三个UDP广播包,填充数据为1280个0 x00字节(1324-16-20-8=1280),表示传输结束从1开始循环多次,直到超时或者摄像头成功接入wifi,向app汇报成功摄像头部分:摄像头通电,没有可用的wifi,进入混杂模式,开始监听信号覆盖范围内的所有wifi数据帧捕获数据帧,如果连续收到3个密文长度为1234,且来自于同一个发射源X的数据帧,则进入下一步,否则重复2捕获发射源X的数据帧,持续捕获密文长度为110或

10、者1000-1127之间的数据帧,直到捕获到连续3个密文长度为1324的数据帧将上述数据帧按照编码表进行映射,由于手机app并非是独占网络,所以捕获到的数据可能有噪音,比如解码出来的结果可能是(/表示分隔符):ACX/J/oe/ymmm如果没有噪音,记为候选数据RC,重复捕获X,进行二次验证,通过则表示接收完成,没通过也重复捕获X,将这次所得结果同上一次做交集,循环如此直到得出唯一结果,即RC,之后再重复5由于捕获的数据帧头部信息中已经包含了wifi的bssid信息,使用”CJey”作为密码去尝试连接相应的wifi,成功则向app报告,失败则继续重复2混杂模式(PromiscuousMode)

11、混杂模式(PromiscuousMode)是指一台机器能够接收所有经过它的数据流,而不论其目的地址是否是他。是相对于通常模式(又称“非混杂模式”)而言的。这被员使用来诊断网络问题,但是也被无认证的想偷听(其可能包括和其它敏感的信息)的人利用。一个非路由选择节点在混杂模式下一般仅能够在相同的(对和无线)内监控通信到和来自其它节点或环(对令牌环或FDDI),其是为什么网络被用于对抗恶意的混杂模式。混杂模式就是接收所有经过网卡的,包括不是发给本机的包。默认情况下网卡只把发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。简单的讲,混杂模式就是指网卡能接受所有通过它的数据流,不管是什么格式,什

12、么地址的。事实上,计算机收到数据包后,由网络层进行判断,确定是递交上层(传输层),还是丢弃,还是递交下层(数据链路层、MAC子层)转发。通常在需要用到,例如、capsa时,需要把网卡置于混杂模式,需要用到软件Winpcap。winpcap是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为Win32应用程序提供访问网络底层的能力。对于广播式集线器(Hub)来说,假如PC1、PC2、PC3接在同一个Hub上,当PC1给PC3发送包时,Hub将广播这个包,所以PC2实际上也可以看到这个包,但一般情况下它会将这个发给PC3的包丢弃,但如果处于混杂模式,PC2的网

13、卡驱动程序就不会丢弃这个包,而是把这个包送给上层的驱动程序,应用程序。简单的说,网卡的混杂模式是为而提供的。网卡具有如下的几种工作模式:1)广播模式(BroadCastModel):它的物理地址(MAC)地址是OXffffff的帧为广播帧,工作在广播模式的网卡接收广播帧。2)多播传送(MultiCastModel):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。3)直接模式(DirectModel):工作在直接模式下的网卡只接收目地址是自己Mac地址的帧。4)混杂模式(

14、PromiscuousModel):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的。Sniffer类的软件一般都采用将网卡设置成混杂模式来获取数据包,设为混杂模式之后,因为网卡会接收所有能够接收到的数据,所以这个时候的数据量非常大,所以在设置为混杂模式同时,一般要设置过滤条件。sniffer之类的软件将网卡设置为混杂模式,只是供自己监听数据(根据用户的要求自动设置过滤条件),在这类软件退出之后会自动将网卡还原为正常工作模式。具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(rawsocket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论