物联网设备快速入网的方式
现在物联网处于一个快速发展的时期,而设备入网的方式影响着产品的用户体验。
市场面上现有的入网方式有:
1.wifi模块开启ap模式,然后通过网页登陆wifi模块的后台,通过网页配置路由器的账号密码接入网络,随后设备切换成station模式去连接服务器;
2.wifi模块里面集成了airkiss协议,通过手机的微信把路由器的账号密码传给wifi模块。
Air Kiss技术原理简介
802.11是IEEE制定的无线局域网协议,802.11以802.2的逻辑链路控制封装来携带IP封包,因此能够以802.2 SNAP格式接收无线网络数据。如果开启wifi芯片的混杂模式监听空间中的无线信号,并以802.2 SNAP格式从数据链路层截取数据,就会得到如下图所示的数据包:
DA字段表示目标mac地址,SA字段表示源mac地址,Length字段表示后面数据的长度,LLC字段表示LLC头,SNAP字段包括3bytes的厂商代码和2bytes的协议类型标识,DATA字段为负载,对于加密信道来说是密文的,FCS字段表示帧检验序列。
从无线信号监听方的角度来说,不管无线信道有没有加密,DA、SA、Length、LLC、SNAP、FCS字段总是暴露的,因此信号监听方便有了从这6个字段获取信息的可能。但从发送方的角度来说,由于操作系统的限制(比如ISO或者Android),DA、SA、LLC、SNAP、FCS五个字段的控制需要很高的控制权限,发送方一般是很难拿到的。因此只剩下Length这一字段,发送方可以通过改变其所需要发送数据包的长度进行很方便的控制。所以,只要制定出一套利用长度编码的通信协议,就可利用802.2 SNAP 数据包中的Length字段进行信息传递。
在实际应用中,我们采用UDP广播包作为信息的载体。信息发送方向空间中发送一系列的UDP广播包,其中每一包的长度(即Length字段)都按照Air Kiss通信协议进行编码,信息接收方利用混杂模式监听空间中的无线信号,并从数据链路层截取802.2 SNAP格式数据包,便可得到已编码的Length字段,随后接收方便可根据Air Kiss通信协议解析出需要的信息。整个过程如下图所示:
3.wifi模块集成smartlink协议,通过手机app把路由器账号密码传给wifi模块。
基本思想就是利用广播包,我们知道以太网在最底层是以太网数据包,无线则更是广播包,天线发送数据包到空中,接收端接收到数据包,然后处理,供各层使用。
在应用层,UDP协议可以发送广播包,所以,APP或者PC程序,发送一个UDP数据包,在包中放置SSID跟密码,然后插座接受到该包之后,解析包,获得SSID跟密码,就可以配置自己,链接路由器了。
花了五个小时分析了汉枫的模块SmartLink的实现细节;
协议用了UDP广播数据包,手机向本地广播地址,端口49999,发送特定编码的数据包;
显然,模块可以嗅探到该数据包,无线数据包中已经包含了SSID,以及加密方式,所以,模块仅仅需要从数据包中推算出密码,就可以成功连接本地AP了。
汉枫用了一个很傻的效率较低的协议;
将每一个密码字符编码为UDP包负载的字节数,一个回车,一个换行以及密码字节数;一个会话发送四次,再发送仅包含smartconfig的字符串的UDP包,如果模块配置成功,则回复包含mac地址的UDP包,手机从而知道了mac地址跟IP地址。
看似复杂,但仍然很容易猜测到,所以说很傻;其实单数据包编码所有密码发送,效率最高,smartlink速度最快。。此次协议分析,也让我得到了一个很可怕的结论,如果明文发送密码,那即使别人不知道WIFI密码,也可以嗅探到明文数据包,很为手机软件的安全性担心。。
4.wifi模块集成esp touch协议(smart config技术),通过手机app把路由器账号密码传给wifi模块。
ESP-TOUCH是Espressif公司自主研究的一键智能配网工具,帮助用户将使用ESP8266的硬件产品连接Wi-Fi网络。用户只需在手机上配合硬件产品进行简单的操作即可实现智能配网连接Wi-Fi路由。
目前app是开源的,Android和iOS代码均可在github上下载到,设备端RTOS版本SDK和NON_OS版本SDK使用同样的ESP-TOUCH。下载地址如下:
安卓版 |
https://github.com/EspressifApp/ESP-TOUCHForAndroid |
最新版本:0.3.4.5 |
ios版 |
https://github.com/EspressifApp/ESP-TOUCHForIOS |
最新版本:0.3.5.1 |
正式版app也可以各大应用市场下载到。同时ESP-TOUCH用户指南手册可在Espressif官网下载到,目前最新版本为30b-esp-touch_user_guide_cn_v1.1_20160412.pdf。目前官方对ESP-TOUCH持续优化中,应用时请使用最新版本的代码。
ESP-TOUCH的设备端解码Espressif没有开源,提供的是一个smartconfig.a文件,但提供了sniffer接口供需要自己开发的键配网协议的用户使用。sniffer接口使用指南也可在Espressif官网下载到,详见esp8266-technical_reference_cn.pdf的第14章《sniffer应用设计说明》以及20a-esp8266_rtos_sdk_programming_guide_cn.pdf的第4部分《sniffer结构体说明》。
由于设备一开始并未连接Wi-Fi网络,ESP-TOUCH无法直接向设备发送数据,ESP-TOUCH只能通过向手机当前接入的AP发送一系列UDP包,其中每一包的长度(Length字段)都按照ESP-TOUCH的通讯协议编码,SSID和密码就包含在Length字段中
受MTU长度限制,一个udp数据包Length最大只能传输10bit数据(最大1500byte),而udp数据包长度和丢包率/乱序率成正比,即数据包长度越长,丢包率/乱序率越高,所有一般将最大数据包长度限制在9bit以内
此时设备应工作在在混杂模式下,才能接收到ESP-TOUCH发送的数据包.在混杂模式下,设备将收到当前环境下所有环境下所有Wi-Fi设备(AP/STATION)数据,需要通过一定的算法,才能正确的识别到ESP-TOUCH的数据包.
5.wifi模块集成airlink协议,通过手机app把路由器账号密码传给wifi模块。
GoKit二代同样可以直接使用机智云提供的现成APP进行配置板卡无线连接(APP可以通过机智云官网下载),具体的流程与一代一样(GoKit一代),不过,尽管如此,GoKit二代的资料还是属于在慢慢完善中,笔者在第一次配置二代的Wifi模块的AirLink网络模式时也遇到了点问题,跟一代的操作还是有些区别的。
GoKit一代是通过按一下KEY2按键进入AirLink网络配置模式,而二代则要通过按住KEY2按键,直到RGB LED点亮绿色才能进行下一步操作,如下图所示。
剩下的配置就和一代完全一样,通过APP提示一步一步操作即可。有兴趣的可以参考GoKit一代的评测文章,配置完就可以通过手机APP来实现对板卡的控制,如启动电机,调节电机转速,点亮RGB LED等。
参考资料:
1.ESP-TOUCH编码规则及解码
2.【安卓学习之第三方库】wifi模块 之 SmartLink
3.Air Kiss(飞吻)技术实现方案
物联网设备快速入网的方式相关推荐
- 笔记本电脑网络连接显示红叉_物联网设备的网络连接---上篇
在一个物联网场景中,设备连接是底层基础.由于物联网设备的多样性,涉及到各个工业领域中的标准或规范,这就需要综合的软硬件技术将它们连接起来. 本文分别从物联网组网技术和传输协议的角度来介绍物联网系统所面 ...
- 物联网设备的网络连接---上篇
在一个物联网场景中,设备连接是底层基础.由于物联网设备的多样性,涉及到各个工业领域中的标准或规范,这就需要综合的软硬件技术将它们连接起来. 本文分别从物联网组网技术和传输协议的角度来介绍物联网系统所面 ...
- 【基于Web攻击】的方式发现并攻击物联网设备,又是一个入狱小技巧
近二十年来,DNS重绑定(DNS rebinding)攻击一直是讨论的话题.尽管浏览器厂商做出了努力,但仍然无法找到一个能稳定抵御这些攻击的防御系统.据说这类问题八年前就已经被修复了.但是这类攻击通过 ...
- 【物联网】15.物联网设备联网方式(WiFi/蓝牙/ZigBee)
上文说了控制器部分,但是物联网之所以单独从嵌入式提炼出来,主要还是因为其联网的属性,这部分常见的通信方式有: Wi-Fi 如果采用Wi-Fi 连接方式,通过Wi-Fi 接入点就能够连接网络.通过它,可 ...
- 物联网设备是如何被破解的?分析一种篡改IoT固件内容的攻击方式
随着智能硬件进入到人们的生活,人们的生活质量开始有逐步的提高,人们与智能硬件之间的联系更加紧密.同时,智能硬件的安全问题也必须引起高度重视,因为其直接影响到人身安全.社会安全和国家安全. 大家是否有想 ...
- 物联网设备上云难?华为云IoT帮你一键完成模型定义,快速在线调试设备
摘要:在不到3分钟的操作里,不仅完成了一款智慧烟感设备在云端的模型定义,还通过在线调试了解到了设备和远端通信的过程. 本文分享自华为云社区<物联网设备上云难?华为云IoT帮你一键完成模型定义,快 ...
- 【图解】物联网设备的N种Wi-Fi配网方式
1 背景介绍 物联网时代,各种各样的智能物联网设备正走进我们我们的生活,智能门锁.摄像头.猫眼门铃.扫地机.智能音箱.空气净化器.体脂秤等等. 这些物联网设备都有一个共同的特征,就是可以联网,通过配套 ...
- 物联网设备僵尸网络趋势分析
物联网(IoT)僵尸网络作者正在适应更安全的物联网设备的转变,这已经将***者的注意力转移到利用物联网设备的漏洞上.由于物联网设备安全性仍处于起步阶段,因此发现命令注入等基本漏洞并不少见. 2018年 ...
- OTA固件升级对于物联网设备的重要性
物联网(IoT)代表着一个重要的发展趋势,逐渐将日常生活中的各个方面相互连接在一起.不同于早期的路由器等无线设备(每个房间或者办公室安装一个)在数量上的局限性,物联网将会非常深入的渗透到方方面面,并且 ...
最新文章
- 常用Maven插件介绍(上)
- python ** 运算符_Python从入门到放弃运算符(2)
- buu Cipher
- 走在网页游戏开发的路上(十)
- centos6.8 安装python3.6
- mysql 多个库一起导出_MYSQL 导出多个库
- SecureCRT使用过程中 光标会丢失的问题
- 【分析模板】excel or sas
- [翻译]ElasticSearch官方文档-执行查询和过滤操作
- 软件测试开发人员的价值如何体现?
- Unreal Engine 4 —— 基于Kajiya-Kay的材质迭代
- 各省简称 拼音 缩写_全国所有城市拼音及缩写
- 几款引擎比较 BigWorld Unreal CryEngine等
- 互融云人行二代征信系统对接服务
- Python编写键盘记录器
- 马化腾罕见点评马云和李彦宏,BAT大佬思维谁更胜一筹?
- Linux服务情书,Linux定时任务给心爱的小姐姐发情书
- ubuntu basler相机opencv
- Unix 文件系统的核心目录总结
- STC8系列单片机硬件I2C使用教程(二)