一.入网流程
蓝牙Mesh入网的过程即为 Privisioner 将将未配网设备加入到Mesh网络的过程。
主要又一下几步:
1.未配网设备 广播unprovision beacon 。
2.provisioner接收到unprovision beacon, 发送连接邀请给未配网设备
3.交换公钥(可通过OOB,无OOB则使用默认公钥 )
4.认证
5.配置数据分发,完成入网
二.抓包分析
1.配网设备广播的unprovision beacon
Byte 1 : 0x18 表示有效数据长度大小,即不包括本字节,后面还有0x18个字节数据
Byte 2: 0x2b 表示数据帧类型 为 Mesh Beacon数据类型。
0x2a 表示Mesh message,用于入网后的数据交互的格式
0x01 表示普通BLE广播包
0x29 表示PB_ADV 数据类型,常用于广播承载时 发送Genic Provision PDU
Byte 3: 0x00 表示此设备 未配网,即unprovisioned device beacon
0x01 表示此设备已加入mesh 网络, 即secure network beacon
0x02-0xFF 保留
Byte 4-19 表示设备UUID
Byte 20-21 表示OOB,此处为0,即不带OOB
Byte 22-25 表示URI Hash 统一资源标识符 (URI) 数据类型,与OOB共同使用
2. 开始配网交互
provisioning PDUs 消息格式
上图中TYPE字段 为Provisioning PDUs的类型
0x00:Provisioning Invite
0x01:Provisioning Capabilities
0x02:Provisioning Start
0x03:Provisioning Public Key
0x04:Provisioning Input Complete
0x05:Provisioning Confirmation
0x06:Provisioning Random
0x07:Provisioning Data
0x08:Provisioning Complete
0x09:Provisioning Failed
0x0A-0xFF:RFU
(1)Provisioner 发送邀请 provisioning invite
(2) 未配网设备发送此消息告诉配网者当前节点支持的配网功能 Provisioning Capabilities
此次配网并未使用OOB,所以后面的相关字节均为0
(3)配网者发送此消息告诉未配网设备选择的配网方式。Provisioning Start
(4)配网者发送此消息,传输Public Key。Provisioning Public Key
(5)发送给对端的OOB授权码数据。Provisioning Confirmation
Output OOB方式:未配网设备展示授权码,配网者输入授权码,配网者响应Confirmation消息。
Input OOB方式:配网者展示授权码,未配网设备输入授权码,未配网设备响应Input Complete消息,然后配网者响应Confirmation消息。此处为NO OOB 模式,配网者发送Provisioning Confirmation消息,参数域为空,设备收到后响应Provisioning Confirmation消息,表示确认 。
Provisoner展示授权码
未配网设备响应
(6)发送给对端的随机值认证确认信息。 Provisioning Random
未配网设备收到配网者发送的Confirmation信息,然后响应Confirmation信息回配网者,此时配网者收到后发送Random消息,未配网设备收到后验证Confirmation信息,验证完毕后再响应Random消息回配网者,然后配网者也进行Confirmation的验证操作。
Provisoner发送
未配网设备响应
(7)配网者传递给未配网设备的配网信息。Provisioning Data
抓包数据中心的 Encrypted provisioning data 为加密后的数据,不为真正的数据。
(8)未配网设备发送此消息表明配网成功。参数域为空。 Provisioning Complete