手把手教你做一个天猫精灵(五、尝试抓取智能家居数据)
之前的章节讲了利用fubuki-iot做了一个智能终端,但是苦于没有良好的开源生态所以只停留在DIY阶段。本章介绍一种获取智能家居数据的方式,有条件的可以尝试一下。
硬件准备
- 路由器(需要带镜像功能)
- RJ45(水晶头)数据线
搭建环境
首先在连接路由器WiFi的环境下登陆路由器控制端,一般是192.168开头的网页,选择高级配置,打开镜像开关。
源端口默认,这样可以镜像所有接入设备的流量。输出端口选择LAN1,这样通过RJ45数据线将路由器的LAN1端口于电脑相连,就可以实现本地电脑网卡接收路由器的镜像数据了。
抓包
既然要抓包,必不可少的工具就是Wireshark,点这里下载。按照步骤安装好以后选择抓取以太网的数据包,这时候应该可以看到抓取的结果了。
如果是TLS/SSL协议加密过的数据也可以通过以下步骤解密:
- 新建两个文件debug.log和key.txt
- 设置环境变量SSLKEYLOGFILE的值为debug.log的路径
- 配置Wireshark的TLS协议:点击“编辑”-“首选项”,选择“Protocols”-“TLS”,按下图填写对应的debug.log和key.txt的路径
重启电脑,再打开Wireshark抓包就可以抓TLS/SSL加密之后的数据了。
Wireshark也能抓取MQTT协议的包,只要在过滤器中输入mqtt即可:
然而并没有发现MQTT的数据包,然后登陆路由器终端,找到智能家居的IP,比如这个海尔洗衣机的IP是192.168.2.102:
然后在Wireshark过滤器中搜索对应的IP:
结果这个洗衣机是通过UDP协议传输的,而这个UDP协议的上层协议很有可能是厂家自己封装的协议。。
思考
目前物联网智能家居的生态还不是很开放。有能力的大厂家甚至都自己实现了智能语音功能,再加上市场竞争激烈,即使小厂家也不愿意将传输的数据分享给外部。所以当下环境真正实现万物联网还是很遥远的,赛博朋克的世界甚至更是遥不可及。我认为当前能够愿意联网的家居可能仅限于电灯、开关之类的小电器。因为它们本身没有科技创新点,而加入联网特性能成为它们的买点。因此以后可能会出一期有关蓝牙接入的文章。
本章介绍了本地抓取智能家居数据包的一种方案,如果抓取到数据后也可以通过sniff等方法将流量复制给我们的MQTT服务器,从而实现我们对家居的智能控制。下一章将介绍一种软件接入MQTT的例子——将QQ接入物联网功能。