如何优雅的调戏小米手环

在公司调试蓝牙4.0的适合弄到了同事小米的手环,然后网上查到相关的资料,找到别人破解的控制手环震动的接口,于是我就做了一点微小的工作,嘿嘿嘿。
<h3>一、蓝牙4.0介绍</h3>

蓝牙4.0应用开发中比较常与开发者打交道的是GATT(The Generic Attribute Profile)协议,GATT协议确定了ble连接中的Server和Client进行数据交互的过程和格式,它是ble通信的核心,也是ble应用开发者必须了解的。举个简单例子,小米手环中的各种数据,例如行走距离、热量消耗等都是通过GATT进行传输

GATT协议实际跟HTTP协议比较像,在HTTP协议中,Client向Server请求一个特定的URL,然后Server收到请求后,根据这个URL以及相关的参数向Client发送对应的数据。而在GATT中,与URL对应的就是UUID,Client向Server请求特定的UUID,然后Server把这个UUID对应的数据发送给Client。除了读取数据之外,Client还可以向Server对应的UUID写入数据,这个跟HTTP的post请求有点相似。

在GATT,数据是通过分层的方式进行组织的,如下图所示。

GATT Attribute

每一个Server可以有多个Service,每个Service下面可以有多个Characteristic,每一个Characteristic下面可以有多个Descripter。其中Service、Characteristic、Descripter都有自己的唯一UUID。Characteristic、Descripter都对应着特定自己的数据,Client可以向Server请求其对应的数据,并可以对其中的某些数据进行写操作。

其中值得注意的是每一个UUID对应的数据的最大长度被限制为512个字节。

**小米手环的名字对应的UUID如下:**
Service:0000ffe0-0000-1000-8000-00805f9b34fb
Characteristic:0000ff02 -0000-1000-8000-00805f9b34fb </code>

<h3>二、调戏手环</h3>

**小米手环的震动控制对应的UUID如下:**
Service:00001802-0000-1000-8000-00805f9b34fb
Characteristic:00002a06-0000-1000-8000-00805f9b34fb
往该Characteristic中写入1时会震动两次,写入2时会震动八次。</code>

知道了对应的UUID,一切就比较好办了。首先扫描设备,接下来连接设备,然后发现服务,获取到对应的Characteristic,再往里面写数据,一气呵成。


蓝牙连接过程
蓝牙连接过程

部分Android代码如下:

        UUID shakeServiceUUID=UUID.fromString("00001802-0000-1000-8000-00805f9b34fb");
        UUID shakeCharaUUID=UUID.fromString("00002a06-0000-1000-8000-00805f9b34fb");
        BluetoothGattService shakeService=mBluetoothGatt.getService(shakeServiceUUID);
        BluetoothGattCharacteristic shakeChara=shakeService.getCharacteristic(shakeCharaUUID);
        //1震动两次,2震动八次
        shakeChara.setValue(new byte[2]);
        mBluetoothGatt.writeCharacteristic(shakeChara);

参考资料:
safari
Xiaomi Mi Band BLE Protocol reverse-engineering and API
小米手环蓝牙协议研究
蓝牙学习之①:调戏小米手环

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容

  • 低功耗蓝牙(BLE)设备的通信基本协议是 GATT, 要操作 BLE 设备,第一步就是要连接设备,其实就是连接 B...
    风雨byt阅读 3,715评论 1 11
  • 蓝牙 蓝牙的波段为2400-2483.5MHz(包括防护频带)。这是全球范围内无需取得执照(但定不是无管制的)的工...
    苏永茂阅读 5,976评论 0 11
  • 前言: 本文主要描述Android BLE的一些基础知识及相关操作流程,不牵扯具体的业务实现,其中提供了针对广播包...
    幻影宇寰阅读 5,216评论 6 19
  • Key Terms And Concepts 关键术语和概念 Here is a summary of key B...
    Jaesoon阅读 2,394评论 0 5
  • 夜里 春雷暴动 按捺已久的情感 化作雨水 肆意拍打凹凸不平的地面 踏荆棘之途 是为赴钢笔之约 我依旧能清晰察觉 池...
    wiwi_ies阅读 260评论 3 5