打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
永不消逝的电波(三):低功耗蓝牙(BLE)入门之如何调戏别人的小米手环

0×00 前言

蓝牙(Bluetooth),一种无线技术标准,用来让固定与移动设备,在短距离间交换数据,以形成个人局域网(PAN)。其使用短波特高频(UHF)无线电波,经由2.4至2.485 GHz的ISM频段来进行通信。1994年由电信商爱立信发展出这个技术。它最初的设计,是希望创建一个RS-232数据线的无线通讯替代版本。

蓝牙技术目前由蓝牙技术联盟(SIG)来负责维护其技术标准,这个联盟拥有超过20,000间公司成员,其成员的领域分布在电信、电脑、网络与消费性电子产品上。

蓝牙也是目前数码产品中不可或缺的模块。蓝牙技术的出现让我们在连接各种设备的时候不再被繁多的数据线所束缚,比如音响、电脑、鼠标、键盘,甚至是汽车。

0×01 蓝牙版本更新

蓝牙技术版本更新:1.1、1.2、2.0、2.1、3.0、4.0、4.1、4.2

蓝牙1.1标准:为最早期版本,传输率约在748~810kb/s,因是早期设计,容易受到同频率之产品所干扰下影响通讯质量。蓝牙1.2标准:同样是只有 748~810kb/s 的传输率,但在加上了(改善 Software)抗干扰跳频功能。蓝牙2.0标准:1.2 的改良提升版,传输率约在 1.8M/s~2.1M/s,开始支持双工模式——即一面作语音通讯,同时亦可以传输档案/高质素图片。蓝牙2.1标准:2007年8月2日,蓝牙技术联盟正式批准了蓝牙2.1版规范,即“蓝牙2.1+EDR”,可供未来的设备自由使用。相对2.0版本主要是提高了待机时间2倍以上,技术标准没有根本性变化。蓝牙3.0标准:2009年4月21日,蓝牙技术联盟颁布的新一代标准规范"Bluetooth Core Specification  Version 3.0 High Speed"(蓝牙核心规范3.0版 ),核心是"Generic Alternate  MAC/PHY"(AMP)一种全新的交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。3.0的数据传输率提高到了大约24Mbps(即可在需要的时候调用802.11 WI-FI用于实现高速数据传输)。3.0的传输速速率是2.0的八倍。蓝牙4.0标准:于2010年7月7日正式发布,是蓝牙3.0+HS规范的补充,新版本的最大意义在于低功耗,同时加强不同OEM厂商之间的设备兼容性,并且降低延迟,理论最高传输速度依然为24Mbps(即3MB/s),有效覆盖范围扩大到100米(之前的版本为10米)。4.0是专门面向对成本和功耗都有较高要求的无线方案,可广泛用于卫生保健、体育健身、家庭娱乐、安全保障等诸多领域。....

正如上面所说,蓝牙4.0是以低功耗技术为代表优势的蓝牙核心规格版本。

0×02 低功耗蓝牙术语及概念:

蓝牙设备所用波段是无需认可的2.4 GHz ISM(工业、科研和医疗)波段。跳频收发器用于对抗干扰及信号衰减。

2.1 频率和信道:

蓝牙系统所使用的波段为2.4 GHz ISM波段。其频率范围是2400 – 2483.5 MHz

BlueTooth 有79个射频信道,按0-78排序,并于2402 MHz开始,以1 MHz分隔:

channel 00 : 2.402000000 Ghzchannel 01 : 2.403000000 Ghz…channel 78 : 2.480000000 Ghz

BTLE有40个频道:

channel 37 : 2.402000000 Ghzchannel 00 : 2.404000000 Ghzchannel 01 : 2.406000000 Ghzchannel 02 : 2.408000000 Ghzchannel 03 : 2.410000000 Ghzchannel 04 : 2.412000000 Ghzchannel 05 : 2.414000000 Ghzchannel 06 : 2.416000000 Ghzchannel 07 : 2.418000000 Ghzchannel 08 : 2.420000000 Ghzchannel 09 : 2.422000000 Ghzchannel 10 : 2.424000000 Ghzchannel 38 : 2.426000000 Ghzchannel 11 : 2.428000000 Ghzchannel 12 : 2.430000000 Ghzchannel 13 : 2.432000000 Ghzchannel 14 : 2.434000000 Ghzchannel 15 : 2.436000000 Ghzchannel 16 : 2.438000000 Ghzchannel 17 : 2.440000000 Ghzchannel 18 : 2.442000000 Ghzchannel 19 : 2.444000000 Ghzchannel 20 : 2.446000000 Ghzchannel 21 : 2.448000000 Ghzchannel 22 : 2.450000000 Ghzchannel 23 : 2.452000000 Ghzchannel 24 : 2.454000000 Ghzchannel 25 : 2.456000000 Ghzchannel 26 : 2.458000000 Ghzchannel 27 : 2.460000000 Ghzchannel 28 : 2.462000000 Ghzchannel 29 : 2.464000000 Ghzchannel 30 : 2.466000000 Ghzchannel 31 : 2.468000000 Ghzchannel 32 : 2.470000000 Ghzchannel 33 : 2.472000000 Ghzchannel 34 : 2.474000000 Ghzchannel 35 : 2.476000000 Ghzchannel 36 : 2.478000000 Ghzchannel 39 : 2.480000000 Ghz

2.2 蓝牙规格:

规格名称     规格类型     分配编码     规格级别警报类别ID     org.bluetooth.characteristic.alert_category_id     0x2A43     已采纳警报类别ID位掩码     org.bluetooth.characteristic.alert_category_id_bit_mask     0x2A42     已采纳警报级别     org.bluetooth.characteristic.alert_level     0x2A06     已采纳警报通知控制点     org.bluetooth.characteristic.alert_notification_control_point     0x2A44     已采纳警报状态     org.bluetooth.characteristic.alert_status     0x2A3F     已采纳Appearance     org.bluetooth.characteristic.gap.appearance     0x2A01     Adopted电池电量     org.bluetooth.characteristic.battery_level     0x2A19     已采纳血压功能     org.bluetooth.characteristic.blood_pressure_feature     0x2A49     已采纳血压测量     org.bluetooth.characteristic.blood_pressure_measurement     0x2A35     已采纳人体传感器定位     org.bluetooth.characteristic.body_sensor_location     0x2A38     已采纳引导键盘输入报告     org.bluetooth.characteristic.boot_keyboard_input_report     0x2A22     已采纳引导键盘输出报告     org.bluetooth.characteristic.boot_keyboard_output_report     0x2A32     已采纳引导鼠标输入报告     org.bluetooth.characteristic.boot_mouse_input_report     0x2A33     已采纳CSC功能     org.bluetooth.characteristic.csc_feature     0x2A5C     已采纳CSC测量     org.bluetooth.characteristic.csc_measurement     0x2A5B     已采纳当前时间     org.bluetooth.characteristic.current_time     0x2A2B     已采纳自行车功率控制点     bluetooth.characteristic.cycling_power_control_point     0x2A66     已采纳自行车功率特征     org.bluteooth.characteristic.cycling_power_feature     0x2A65     已采纳自行车功率测量     org.blueeooth.cycling_power_measurement     0x2A63     已采纳自行车功率矢量     org.bluetooth.characteristic.cycling_power_vector     0x2A64     已采纳日期时间     org.bluetooth.characteristic.date_time     0x2A08     已采纳星期日期时间     org.bluetooth.characteristic.day_date_time     0x2A0A     已采纳星期     org.bluetooth.characteristic.day_of_week     0x2A09     已采纳Device Name     org.bluetooth.characteristic.gap.device_name     0x2A00     Adopted日光节约时间偏移     org.bluetooth.characteristic.dst_offset     0x2A0D     已采纳准确时间256     org.bluetooth.characteristic.exact_time_256     0x2A0C     已采纳固件修订字符串     org.bluetooth.characteristic.firmware_revision_string     0x2A26     已采纳血糖功能     org.bluetooth.characteristic.glucose_feature     0x2A51     已采纳血糖测量     org.bluetooth.characteristic.glucose_measurement     0x2A18     已采纳血糖测量环境     org.bluetooth.characteristic.glucose_measurement_context     0x2A34     已采纳硬件修订字符串     org.bluetooth.characteristic.hardware_revision_string     0x2A27     已采纳心率控制点     org.bluetooth.characteristic.heart_rate_control_point     0x2A39     已采纳心率测量     org.bluetooth.characteristic.heart_rate_measurement     0x2A37     已采纳HID控制点     org.bluetooth.characteristic.hid_control_point     0x2A4C     已采纳HID信息     org.bluetooth.characteristic.hid_information     0x2A4A     已采纳IEEE 11073-20601监管认证数据表     org.bluetooth.characteristic.ieee_11073-20601_regulatory_certification_data_list     0x2A2A     已采纳中间体套囊压力     org.bluetooth.characteristic.intermediate_blood_pressure     0x2A36     已采纳中间体温度     org.bluetooth.characteristic.intermediate_temperature     0x2A1E     已采纳LN控制点     org.bluetooth.ln_control_point     0x2A6B     已采纳LN功能     org.bluetooth.characteristic.ln_feature     0x2A6A     已采纳当地时间信息     org.bluetooth.characteristic.local_time_information     0x2A0F     已采纳定位和速度     org.bluetooth.location_and_speed     0x2A67     已采纳制造商名称字符串     org.bluetooth.characteristic.manufacturer_name_string     0x2A29     已采纳测量间隔     org.bluetooth.characteristic.measurement_interval     0x2A21     已采纳型号字符串     org.bluetooth.characteristic.model_number_string     0x2A24     已采纳导航     org.bluetooth.characteristic.navigation     0x2A68     已采纳新警报     org.bluetooth.characteristic.new_alert     0x2A46     已采纳Peripheral Preferred Connection Parameters     org.bluetooth.characteristic.gap.peripheral_preferred_connection_parameters     0x2A04     AdoptedPeripheral Privacy Flag     org.bluetooth.characteristic.gap.peripheral_privacy_flag     0x2A02     AdoptedPnP ID     org.bluetooth.characteristic.pnp_id     0x2A50     已采纳定位质量     org.bluetooth.position_quality     0x2A69     已采纳协议模式     org.bluetooth.characteristic.protocol_mode     0x2A4E     已采纳Reconnection Address     org.bluetooth.characteristic.gap.reconnection_address     0x2A03     Adopted记录存取控制点     org.bluetooth.characteristic.record_access_control_point     0x2A52     已采纳参考时间信息     org.bluetooth.characteristic.reference_time_information     0x2A14     已采纳报告     org.bluetooth.characteristic.report     0x2A4D     已采纳报告地图     org.bluetooth.characteristic.report_map     0x2A4B     已采纳振铃器控制点     org.bluetooth.characteristic.ringer_control_point     0x2A40     已采纳振铃器设定     org.bluetooth.characteristic.ringer_setting     0x2A41     已采纳RSC功能     org.bluetooth.characteristic.rsc_feature     0x2A54     已采纳RSC测量     org.bluetooth.characteristic.rsc_measurement     0x2A53     已采纳SC控制点     org.bluetooth.characteristic.sc_control_point     0x2A55     已采纳扫描间隔窗口     org.bluetooth.characteristic.scan_interval_window     0x2A4F     已采纳扫描刷新     org.bluetooth.characteristic.scan_refresh     0x2A31     已采纳传感器定位     org.bluetooth.characteristic.sensor_location     0x2A5D     已采纳序列号字符串     org.bluetooth.characteristic.serial_number_string     0x2A25     已采纳Service Changed     org.bluetooth.characteristic.gatt.service_changed     0x2A05     Adopted软件修订字符串     org.bluetooth.characteristic.software_revision_string     0x2A28     已采纳获支持的新警报类别     org.bluetooth.characteristic.supported_new_alert_category     0x2A47     已采纳获支持的未读警报类别     org.bluetooth.characteristic.supported_unread_alert_category     0x2A48     已采纳系统ID     org.bluetooth.characteristic.system_id     0x2A23     已采纳温度测量     org.bluetooth.characteristic.temperature_measurement     0x2A1C     已采纳温度类型     org.bluetooth.characteristic.temperature_type     0x2A1D     已采纳时间准确度     org.bluetooth.characteristic.time_accuracy     0x2A12     已采纳时间源     org.bluetooth.characteristic.time_source     0x2A13     已采纳时间更新控制点     org.bluetooth.characteristic.time_update_control_point     0x2A16     已采纳时间更新状态     org.bluetooth.characteristic.time_update_state     0x2A17     已采纳日光节约时间的时间     org.bluetooth.characteristic.time_with_dst     0x2A11     已采纳时区     org.bluetooth.characteristic.time_zone     0x2A0E     已采纳射频功率     org.bluetooth.characteristic.tx_power_level     0x2A07     已采纳未读警报状态     org.bluetooth.characteristic.unread_alert_status     0x2A45     已采纳记忆码     UUID规格     UUID     参考规格?设备名称?     uuid16     0x2A00     蓝牙核心规格第3卷C部分第12.1节?外观?     uuid16     0x2A01     蓝牙核心规格第3卷C部分第12.2节?外置设备隐私标志?     uuid16     0x2A02     蓝牙核心规格第3卷C部分第12.3节?重新连接地址?     uuid16     0x2A03     蓝牙核心规格第3卷C部分第12.4节?外置设备首选连接参数?     uuid16     0x2A04     蓝牙核心规格第3卷C部分第12.5节?服务更改?     uuid16     0x2A05     蓝牙核心规格第3卷G部分第7.1节

2.3 蓝牙UUID

UUID是“Universally Unique Identifier”的简称,通用唯一识别码的意思。对于蓝牙设备,每个服务都有通用、独立、唯一的UUID与之对应。

例举:

#蓝牙串口服务SerialPortServiceClass_UUID = '{00001101-0000-1000-8000-00805F9B34FB}'LANAccessUsingPPPServiceClass_UUID = '{00001102-0000-1000-8000-00805F9B34FB}'#拨号网络服务DialupNetworkingServiceClass_UUID = '{00001103-0000-1000-8000-00805F9B34FB}'#信息同步服务IrMCSyncServiceClass_UUID = '{00001104-0000-1000-8000-00805F9B34FB}'SDP_OBEXObjectPushServiceClass_UUID = '{00001105-0000-1000-8000-00805F9B34FB}'#文件传输服务OBEXFileTransferServiceClass_UUID = '{00001106-0000-1000-8000-00805F9B34FB}'

分享几个蓝牙相关的文章、扫描器和App:

基于HACKRF的低功耗蓝牙(BTLE)packet sniffer/scanner

项目地址:https://github.com/JiaoXianjun/BTLE

博客:http://sdr-x.github.io/BTLE-SNIFFER/

手机App(iphone)

BLE ScannerLightBlue

0×03 调戏小米手环

小米手环的主要功能包括查看运动量,监测睡眠质量,智能闹钟唤醒等。可以通过手机应用实时查看运动量,监测走路和跑步的效果,还可以通过云端识别更多的运动项目。

小米手环配备了低功耗蓝牙芯片及加速传感器,待机可达30天。(→_→ 这里真的不是广告,虽然,看起来很像… 顺便吐槽一下渣米手环,蓝牙信号不稳定经常断线…)

今年360HackPwn大会上,有小米手环破解的演示和讲解(木有去现场只能自己动手玩了)。下面用到刚刚推荐的LightBlue这个App,打开App可以看到附件的蓝牙设备信号:

连接上小米手环,我们可以看到这些参数:

UUID:FEE0

0xFF010xFF02......0xFF0F

UUID:FEE1

0xFEDD0xFEDE......0xFFD20xFFd3

UUID:FEE7

0xFEC70xFEC80xFEC9

immediate Alert

Alert Level

在Alert Level中“Write new value”(写入新值)1和2都行(震动级别:0不震动、1轻微&小幅震动、2强烈震动)可控制小米手环的震动。通过这种方法,可控制一定范围内任何人的小米手环,使其不停震动…(听起来,总感觉怪怪的→_→ )

0×04 演示视频:

0×05 参考:

百科、文库

http://developer.bluetooth.cn/libs/Cn/Overview/CoreArc/2013/1231/4.html

https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.alert_level.xml

Exploring Bluetooth & iBeacons – from software to radio signals and back    

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
小米手环iOS开发实战(一):iOS蓝牙框架CoreBluetooth
蓝牙 UUID 解释
关于Android 5.x的低功耗蓝牙BLE开发简介
蓝牙技术了解
Android BLE与终端通信(五)——Google API BLE4
BLE简介和Android BLE编程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服