• 手把手教你做一个天猫精灵(五、尝试抓取智能家居数据)


    之前的章节讲了利用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的路径

    tls编辑

    重启电脑,再打开Wireshark抓包就可以抓TLS/SSL加密之后的数据了。

    解密后数据

    Wireshark也能抓取MQTT协议的包,只要在过滤器中输入mqtt即可:

    mqtt

    然而并没有发现MQTT的数据包,然后登陆路由器终端,找到智能家居的IP,比如这个海尔洗衣机的IP是192.168.2.102:

    海尔洗衣机

    然后在Wireshark过滤器中搜索对应的IP:

    结果这个洗衣机是通过UDP协议传输的,而这个UDP协议的上层协议很有可能是厂家自己封装的协议。。

    思考

    目前物联网智能家居的生态还不是很开放。有能力的大厂家甚至都自己实现了智能语音功能,再加上市场竞争激烈,即使小厂家也不愿意将传输的数据分享给外部。所以当下环境真正实现万物联网还是很遥远的,赛博朋克的世界甚至更是遥不可及。我认为当前能够愿意联网的家居可能仅限于电灯、开关之类的小电器。因为它们本身没有科技创新点,而加入联网特性能成为它们的买点。因此以后可能会出一期有关蓝牙接入的文章。

    本章介绍了本地抓取智能家居数据包的一种方案,如果抓取到数据后也可以通过sniff等方法将流量复制给我们的MQTT服务器,从而实现我们对家居的智能控制。下一章将介绍一种软件接入MQTT的例子——将QQ接入物联网功能。

  • 相关阅读:
    Java二十三种设计模式-享元模式(12/23)
    你还在 Docker 中跑 MySQL?恭喜你,可以下岗了!
    揭秘!为什么在外面修电脑这么坑?
    Unity UGUI Image Maskable
    wayland(xdg_wm_base) + egl + opengles 光照模型实例(十五)
    Spring源码分析(十六)循环依赖3:其他场景下循环依赖分析,以及神器@Lazy懒加载解决循环依赖
    c# 修改数据集
    [NOIP2015 提高组] 跳石头—二分答案
    git的基本使用
    求个做飞桨上面的题,价🉑谈
  • 原文地址:https://www.cnblogs.com/littlebutt/p/16759111.html