请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
楼主: XCray

[修仙教程] 【ESPHome】ESP32 DIY通用蓝牙网关,接入米家系门锁等各种设备

  [复制链接]

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11427
金钱
8496
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-6-17 12:24:58 | 显示全部楼层
本帖最后由 XCray 于 2021-7-24 17:17 编辑
ruan_yhang 发表于 2021-6-17 11:59
哥们,不用走老路了,这些我们已经验证过了,没有问题。理论上只要抓到 beaconkey 就可以,通过创米小白 ...

嗯,我也怀疑只有在重置重新绑定时这个密钥才会变,我现在观察快20天了,还没变
~~~~~~~~~~~
到现在差不多两个月了,密钥还是没变,看来只有在绑定时才会变。
回复

使用道具 举报

1

主题

45

帖子

767

积分

高级会员

Rank: 4

积分
767
金钱
722
HASS币
0
发表于 2021-6-21 23:47:14 | 显示全部楼层
本帖最后由 cpuahqvd 于 2021-6-21 23:48 编辑

试了一下,抓包截不到beaconkey或者bindkey
观察了一下frame control,发现实现得并不标准
Frame ctrl - 58 40

0101       10          0             0            0        1        0            0           0          000

version   auth    binding   registered  mesh   data  capability   MAC        is       reserved
  (5)     mode   valid.req?     flag         flag     flag     flag        flag    encrypted

按照控制位的描述,只有data,不含mac,也没有加密(或者说并没有实现小米官方加密框架)
但事实上包含了mac
怀疑门锁厂商自行实现了加密
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11427
金钱
8496
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-6-22 10:13:37 | 显示全部楼层
cpuahqvd 发表于 2021-6-21 23:47
试了一下,抓包截不到beaconkey或者bindkey
观察了一下frame control,发现实现得并不标准
Frame ctrl - 58 ...

你解析的顺序错了

58的意思是已加密、含mac、不含cap、含object、不含mesh

40的意思是未绑定、无操作、旧版本认证、版本号4

相信米家生态链里没有哪个厂家有必要自行实现加密,犯不上、自找麻烦
回复

使用道具 举报

1

主题

45

帖子

767

积分

高级会员

Rank: 4

积分
767
金钱
722
HASS币
0
发表于 2021-6-22 12:25:57 | 显示全部楼层
本帖最后由 cpuahqvd 于 2021-6-22 12:31 编辑
XCray 发表于 2021-6-22 10:13
你解析的顺序错了

58的意思是已加密、含mac、不含cap、含object、不含mesh

谢谢,可是在绑定设备的时候确实抓不到16字的密钥,只能抓到did,ltmk,device_cert,还有12字的token
绑定了好多次,每个请求都检查了,确定没有
改版的米家也试了,没有生成pairing.txt

接下去不知道该怎么弄了


回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11427
金钱
8496
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-6-22 13:23:33 来自手机 | 显示全部楼层
cpuahqvd 发表于 2021-6-22 12:25
谢谢,可是在绑定设备的时候确实抓不到16字的密钥,只能抓到did,ltmk,device_cert,还有12字的token
绑 ...

应该是抓包的方法不对。
绑定的时候,bindkey在手机与服务器、手机与蓝牙锁之间传输;在服务器与蓝牙网关之间周期性传输。
和服务器之间的通信当然也是加密的,截至目前好像还没人能解开(厂家内部除外),所以可行的办法是手机抓蓝牙包。

另外,可以找人借一个创米小白或者多模网关(我不会告诉你小米有七天内无理由退货的政策的),用一下就好,获取到密钥就够了,目前观察不重新绑定的话密钥也不会改变。
回复

使用道具 举报

1

主题

45

帖子

767

积分

高级会员

Rank: 4

积分
767
金钱
722
HASS币
0
发表于 2021-6-22 14:34:07 | 显示全部楼层
XCray 发表于 2021-6-22 13:23
应该是抓包的方法不对。
绑定的时候,bindkey在手机与服务器、手机与蓝牙锁之间传输;在服务器与蓝牙网关 ...

我是用PCAP Remote抓的,可以抓到https的数据包,但里面没有bindkey
抓蓝牙包就复杂了
我还是找个网关试试。。。
回复

使用道具 举报

1

主题

45

帖子

767

积分

高级会员

Rank: 4

积分
767
金钱
722
HASS币
0
发表于 2021-6-22 23:14:45 | 显示全部楼层
XCray 发表于 2021-6-22 13:23
应该是抓包的方法不对。
绑定的时候,bindkey在手机与服务器、手机与蓝牙锁之间传输;在服务器与蓝牙网关 ...

按照这一篇的说明,米家会发起一个/app/device/bltbind的post请求,但实测在绑定ojj门锁的时候并没有这个请求。
能帮忙试一下其他标准的米家门锁在绑定时有这个请求吗?按理来说米家生态链的加密框架都是一致的。还是说门锁产品比较特殊,不会在绑定时出现这个请求。
回复

使用道具 举报

106

主题

548

帖子

2728

积分

金牌会员

Rank: 6Rank: 6

积分
2728
金钱
2180
HASS币
20
发表于 2021-6-23 01:16:40 | 显示全部楼层
ESP32的蓝牙信号覆盖不行,隔一堵墙就收不到了……
回复

使用道具 举报

38

主题

2034

帖子

7562

积分

元老级技术达人

积分
7562
金钱
5513
HASS币
110
发表于 2021-6-23 09:12:52 | 显示全部楼层
有个ESP32 用作之前魅族温湿度的gate了  不知道能不能合二为一
回复

使用道具 举报

98

主题

2866

帖子

1万

积分

超级版主

智能家居&单板滑雪痴迷爱好者

Rank: 8Rank: 8

积分
11427
金钱
8496
HASS币
460

教程狂人突出贡献

 楼主| 发表于 2021-6-23 09:21:04 | 显示全部楼层
cpuahqvd 发表于 2021-6-22 23:14
按照这一篇的说明,米家会发起一个/app/device/bltbind的post请求,但实测在绑定ojj门锁的时候并没有这个 ...

我怀疑是你没弄对,安卓上抓包好像也挺复杂的,证书权限啥的任何一处错误都会导致出不来正确的结果。

我这儿没条件做这个测试了(没有网关能重新获得密钥,也没有安卓手机用于抓包)。不过我绝对相信只要ojj门锁可以接入米家,就一定符合小米的各项规范。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-3-29 06:15 , Processed in 0.052088 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表