最近在折腾自己用代码控制米家设备的方法 (不得不吐槽米家 App 提供的控制能力实在是太弱了), 目前已经能用局域网通信协议 读到网关及其 zigbee 子设备的上报事件, 以及用 miio 控制 wifi 设备的开关, 但是一些新设备 miio 项目支持得并不及时, 所以需要自己抓包看.
- 这是手动抓包方法: https://github.com/jghaanstra/com.robot.xiaomi-mi#wireshark
- 这是抓包后用 miio 命令行工具分析的方法: https://github.com/aholstenson/miio/blob/master/docs/protocol.md#analyzing-the-capture
但是我感觉这样抓包还是效率很低, 要先录制一段导出为 json 保存文件再用 miio protocol json-dump 命令去解析, 很麻烦, 如果想省事一点, 一次录很多个命令的话, 又不容易理清这些包之间的关系. 所以我想是不是能直接用 wireshark 的插件功能, 定制一个插件告诉 wireshark 怎么解析 miio 协议的 UDP 包 (当然要根据 token), 这样就能一边操作一边看到具体包的形态和内容, 就能高效很多.
然后查了一下发现 wireshark 果然是支持插件的,
- 这是 wireshark lua 插件文档: https://wiki.wireshark.org/Lua
- 这是 Xiaomi Mi Home Binary Protocol 的二进制协议文档: https://github.com/OpenMiHome/mihome-binary-protocol/blob/master/doc/PROTOCOL.md
一通文档查下来, 觉得可行性还是很高的, 不知道有没有朋友搞过这样的插件呢? 跪求分享 :)
