米家BLE广播协议(MI Beacon)Object字段解密

news/2024/12/22 13:13:15/

一、协议分析

参考链接:小米蓝牙广播数据解析(MiBeacon)

二、广播实例解析(门窗传感器广播数据)

在这里插入图片描述
service data 如下

95 FE 58 59 89 18 69 B3 D4 D7 38 C1 A4 60 2C 8F B1 3B 00 00 41 3D 5E 0A
Mi service UUID : 0xFE95
Frame Control
*C.1 根据Frame Control 字段定义确认是否包含
*C.2 根据Capability 字段确认是否包含

FieldName类型长度(byte)必备(o)/可选(M)说明实例
0Mi service UUIDu162M米家服务的UUIDFE 95
1Frame Controlbitmap2M控制位 (大端存储)59 58
2Product IDu162M产品ID89 18
3Frame Counteru81M序号69
4MAC Addressu86C.1设备MAC地址B3 D4 D7 38 C1 A4
5Capabilityu86C.1设备能力/
6I/O capabilityu82C.2I/O能力/
7objectu8n(根据实际需求)C.1触发事件或者广播属性 详见米家BLE Objecty协议60 2C 8F B1
8Random Numberu83C.1如果加密则必须字段,与Frame Counter 合并成4个字节的Counter, 用于防重放3B 00 00
8Message Integrity Checku84C.1如果加密则必须字段,4个字节41 3D 5E 0A

三、object字段解析

3.1 米家的加密认证(aes-128-ccm)

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。现在,高级加密标准已然成为对称密钥加密中最流行的算法之一。
aes-192密钥的长度为24字节,aes-256密钥的长度为32字节,aes-128密码的长度为16字节。
aes-ccm需要key,nonce,adata,另外aes-ccm不需要填充。 Counter with CBC-MAC (CCM)

在标准规范中,key的长度为16、24、32字节。

在标准规范中,nonce的长度为7~13字节。

在标准规范中,tag的长度为4、6、8、10、12、14、16字节。本工具加密时默认选择16字节。

在标准规范中,adata的长度没有要求。

加密时,需要填写明文、密码、nonce、选填adata,输出密文与Tag。

解密时,需要填写密码、nonce、密文、Tag,adata根据实际情况填写,得到明文。

3.2 密钥(key)获取

  1. 将门窗传感器和米家APP进行绑定,米家app会给传感器下发key(重新绑定之后才会更新)

  2. 下载工具 【工具源码】【工具下载】

  3. 获取密钥

3.3 用例解析

  1. 用例说明
    字段说明用例
    密码(Key)16byte 通过3.2步骤获取a6 5f 46 82 a2 d0 e7 34 5c a8 ff 9c 28 e5 db ff
    nonce(Nonce):随机数(12byte)。由 MAC Address+Product ID+Frame Counter + Random Number 组成B3 D4 D7 38 C1 A4 89 18 69 3B 00 00
    额外数据(adata):米家传感器使用的数据为 0x1111
    密文(CipherText):Object字段60 2C 8F B1
    Tag(Tag):Message Integrity Check 字段41 3D 5E 0A
    明文(plaintext):解析结果04 48 01 02
  2. 工具验证
    在线工具链接: https://const.net.cn/tool/aes/aes-ccm/
    在这里插入图片描述

http://www.ppmy.cn/news/499485.html

相关文章

MU-MIMO是什么

欢迎来到东用知识小课堂! 1.什么是MIMO MIMO:Multiple-Intput Multiple-Output,即多入多出系统,这里的入和出是相对于发射天线和接受天线构成的天线系统来讲。 通常的通信系统是单发单收,也就是SISO:Single-Input Sing…

【MySQL】MVCC是如何解决快照读下的幻读问题的

文章目录 LBCC当前读 MVCC隐藏列undo logRead View 总结 我们从上文中了解到InnoDB默认的事务隔离级别是repeatable read(后文中用简称RR),它为了解决该隔离级别下的幻读的并发问题,提出了LBCC和MVCC两种方案。其中LBCC解决的是当…

NVMe-MI 时代的NVMe SSD监控和管理

带外管理是企业级NVMe SSD的一种管理维护方式,它独立于主机的操作系统,无需登陆甚至无需系统启动,即可实现高效的NVMe设备监控、管理、升级等操作。它涉及BMC、SMBUS、VPD、IPMI这些技术和概念,它们早已有之并且非常成熟。 说到N…

manchi翻译中文 mi_女生发Mimanchi是什么意思,mi manchi翻译中文是我想你

微信是我们现在经常用到的一款软件,而且大家应该都知道,微信是自带翻译功能的,比如当你们在聊天的时候,发一些英文或者缩写,长按这个缩写翻译,就能够出来对应的内容,那么女生发Mimanchi是什么意…

树增强网络TAN与互信息MI

树增强网络TAN(Tree Augmented Net) 一、为什么要用TAN? 在之前的博客中提到了如何用朴素贝叶斯网络去解决SNS社区虚假账号识别的问题。当时在解决这个问题时,做了如下假设: 真实账号比非真实账号平均具有更大的日志密度、更大的好友密度、…

gdb mi接口命令入门大全

gdb入门的话,先看看我这个博客 gdb入门教程大全(清晰明了)_标biao的博客-CSDN博客 gdb mi简介 gdb mi接口协议有3个版本 GDB/MI Development and Front Ends (Debugging with GDB) 与gdb版本对应关系如下:(gdb指的是…

MI相关--学习笔记

MI(mutual information): 基于互信息的donsker-varadhan下界,则使用神经网络来估计互信息就转化为了一个优化问题,可以通过梯度上升算法来实现。互信息可以看做加强版的 correlation,correlation 只能反映变…

NVMe-MI协议解读

众所周知,在一个存储系统中,将设备管理与业务分离是一个良好的设计,比如在Nvme协议中就有一个Admin命令集,与IO命令分开。为了能够更规范合理得对NVMe SSD进行管理,NVMe-MI协议应运而生。 Nvme-MI(Management Interfa…