概述
智能家电逐步迈进百姓家,作为一个技术员,必须知道智能单品是怎么接入网络。怎么理解配网呢,简单说就像你家里来了一个新朋友,你要把自家的wifi账号密码告诉她。
主流的配网方式分为两大类,一类是手动配网,一类是自动配网(个人理解)。
手动配网:
手动配网就是主动把wifi账号密码告诉智能硬件,可以通过芯片自带的串口等接口主动把信息发到wifi芯片(透传模式)。此外,wifi芯片上电后开启AP,手机等设备以station身份将账号密码通过UPD、TCP等方式传输至智能硬件,收到密码后智能硬件转变身份,由AP变为STATION模式,链接指定ssid完成配网。
自动配网:
自动配网可以理解做抓包,智能硬件抓取空间中的wifi数据帧,这些数据帧中间含有wifi账号密码。当然,此时的wifi工作在一种特殊模式下,抓到的数据帧也不是一般的数据帧。
wifi工作模式:
能够抓数据包的wifi此时处于混杂模式,混杂模式简单来说就是可以抓取空间中当前信道下的所有数据包(理论下,芯片处理能力足够。)抓取的是数据链路层数据包。能够抓包的wifi芯片必须支持混杂模式,我现在使用的有瑞昱、高通这些芯片都是支持混杂模式的,可以实现自动配网。
wifi帧处理:
一般配网信息由手机发出,通知路由器发配网信息。我们需要对wifi帧(802.11)有一个详细的了解
位于数据链路层的wifi帧具有以上结构,除了DATA数据字段加密,其余字段全部可见,wifi在混杂模式下,可以将该包抓下来,但是全部数据都抓下来是没用的。手机通知路由器发出的包叫做组播包,其实组播包也是一种广播包,IP地址范围是224.0.0.0-239.255.255.255(详细可见https://www.cnblogs.com/ghj1976/p/5276452.html),广播地址是为FF。组播仅在组播范围内广播,不进行全局域网广播。配网时,手机需要加入组播,填充目标IP,进行UDP数据传输。IP地址与MAC地址映射关系为:将MAC地址的前25位设定为01.00.5e(此时应该是路由器替换该字段),而MAC地址的后23位对应IP地址的位(目标地址后三段),因为UDP面向无连接,即使目标IP不存在,也可以传输数据。
我抓包数据如下
关键代码
这个和上面所说的对应。
在进行抓包的时候进行相应的滤波处理可以将不需要的数据包过滤掉,规定协议时候,我们有三个字段可以使用,举个例子,你可以ssid放在第三字段,第三字段用来过滤做过滤条件,第一字段用作序号(使用mac地址隐藏IP,很高明),此处自己YY。我使用的是RTL8711进行抓包,因为它的SDK把以802.11帧源码暴露出来了,嘿嘿。高通的已被封装,无从入手。自动配网原理仅此而已。下面的是我抓取的配网信息,前面的是序号后面的是ssid以及key(此处显示不完整),应为UDP无连接,有的包不一定能够抓到,因此序号对配网很重要,智能硬件可以和手机协商多次重发,知道收到完整配网信息。收到配置信息后,退出混杂模式,使用Station链接wifi,完成配网
此外还有使用广播包进行配网的,广播包的目标mac全为FF,此时能用的仅仅有长度字段和镇序列字段FCS,根据这两个可以进行配网。
听说好像还有个mDNS进行配网,还是苹果用的,有空研究下。
最后
以上就是花痴冷风为你收集整理的wifi配网原理的全部内容,希望文章能够帮你解决wifi配网原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复