|
楼主 |
发表于 2017-8-8 22:27:24
|
显示全部楼层
哈哈哈 想听就得给金币了
抓包发现正常情况下小米网关每十秒发一个名为heartbeat组播 内容大概是这样 {"cmd":"heartbeat","model":"gateway","sid":"xxxx","short_id":x,"token":"xxxxxxxxx","data":"{\"ip\":\"xxxxxxxxx\"}" }里面有个token, HA发出去的KEY应该是我们写进去的key值加上这个token算出来了,抓到的包里 小米网关有两个数据处理方式 一个是 read 和write,read的时候不需要key 这也是为什么 我可以读到我传感器的信号, write的时候需要key+token算出来一个key值给网关,网关会计算出来真正的key,问题就发生在 当选择信号不好的信道的时候 会收不到token(应该是小米网关没发出来) 这里没法上截图 本来应该隔10秒 结果 可能20-30秒都没收到token 所以发出去的key值肯定是不对的 Invalid key。所以根本原因是小米的token组播发不出来。所以HA的工作程序也就很容易理解了 他就是可以监听组播 然后读取token算出KEY值,在根据格式给网关写命令 读命令和写命令是通过单播通信的
恩 抓包大法好 |
评分
-
查看全部评分
|