BLE Hacking:使用Ubertooth one扫描嗅探低功耗蓝牙

本文作者:雪碧0xroot@漏洞盒子安全实验室

0x00 前言

低功耗蓝牙(Low Energy; LE),又视为Bluetooth Smart或蓝牙核心规格4.0版本。其特点具备节能、便于采用,是蓝牙技术专为物联网(Internet of Things; IOT)开发的技术版本。
类似文章推荐:永不消逝的电波(三):低功耗蓝牙(BLE)入门之如何调戏别人的小米手环

BLE主打功能是快速搜索,快速连接,超低功耗保持连接和传输数据,弱点是数据传输速率低,由于BLE的低功耗特点,因此普遍用于穿戴设备。

我们比较熟悉的网络有 Zigbee,WIFI、Bluetooth(传统蓝牙),三者之间的关系如下:

Clipboard Image.png

不同的无线数据传输协议在数据传输速率利传输距离有各自的使用范围。Zigbee、蓝牙以及 WIFI 标准都是工作在 2.4GHz 频段的无线通信标准。

传统蓝牙数据传输速率小于 3Mbps,典型数据传输距离为 2-10m,蓝牙技术的典型应用是在两部手机之间进行小量数据的传输。

WIFI 最高数据传输速率可达 50Mbps,典型数据传输距离在 30-100m,WIFI 技术提供了一种 Intemet 的无线接入技术。

0x01 蓝牙与低功耗蓝牙

1.1 标准

蓝牙无线技术是使用范围最广泛的全球短距离无线标准之一,全新的蓝牙 4.0 版本将传统蓝牙,高速蓝牙和低功耗蓝牙技术三种蓝牙技术合而为一。它集成了蓝牙技术在无线连接上的固有优势,同时增加了高速蓝牙和低功耗蓝牙的特点,这三个规格可以组合使用,也可以单独使用,低功耗蓝牙即 ble 是蓝牙 4.0 的核心规范,该技术最大特点是拥有超低的运行功耗和待机功耗,蓝牙低功耗设备使用一粒纽扣电池可以连续工作数年之久,可应用与对成本和功耗都有严格要求的无线方案,而且随之智能机的发展将有着更加广泛的领域。

BLE分为三部分Service、Characteristic、Descriptor,这三部分都由UUID作为唯一标示符。一个蓝牙4.0的终端可以包含多个Service,一个Service可以包含多个Characteristic,一个Characteristic包含一个Value和多个Descriptor,一个Descriptor包含一个Value。

BLE 规范中定义了 GAP(Generic Access Profile)和 GATT(Generic Attribute)两个基本配置文件。

GAP 层负责设备访问模式和进程,包括设备发现,建立连接,终止连接。初始化安全特征和设备配置。

GATT 层用于已连接的蓝牙设备之间的数据通信。

1.2 BLE特点&优势

1.2.1高可靠性

对于无线通信而言,由于电磁波在传输过程中容易受很多因素的干扰,例如,障碍物的阻挡、天气状况等,因此,无线通信系统在数据传输过程中具有内在的不可靠性。蓝牙技术联盟 SIG 在指定蓝牙 4.0 规范时已经考虑到了这种数据传输过程中的内在的不确定性,在射频,基带协议,链路管理协议中采用可靠性措施,包括:差错检测和矫正,进行数据编解码,数据降噪等,极大地提高了蓝牙无线数据传输的可靠性,另外,使用自适应调频技术,能最大程度地减少和其他 2.4G 无线电波的串扰。

1.2.2 低成本、低功耗

低功耗蓝牙支持两种部署方式:双模式和单模式,一般智能机上采用双模式,外设一般采用 BLE 单模。

BLE 技术可以应用于 8-bit MCU, 目前 TI 公司推出的兼容 BluetoothLE 协议的 SoC芯片 CC254X 每片价格在 7.6 元左右, 外接几个阻容器件构成的滤波电路和 PCB 天线即可实现网络节点的构建。Nodic的NRF51822也不过才10元人民币。

低功耗设计:蓝牙 4.0 版本强化了蓝牙在数据传输上的低功耗性能,功耗较传统蓝牙降低了 90%。

传统蓝牙设备的待机耗电量一直是其缺陷之一,这与传统蓝牙技术采用16至32个频道进行广播有很大关系,而低功耗蓝牙仅适用 3个广播通道,且每次广播时射频的开启时间也有传统的 22.5ms 减少到 0.6~1.2ms,这两个协议规范的改变,大幅降低了因为广播数据导致的待机功耗。

低功耗蓝牙设计用深度睡眠状态来替换传统蓝牙的空闲状态,在深度睡眠状态下,主机 Host 长时间处于超低的负载循环 Duty Cycle 状态,只在需要运作时由控制器来启动,由于主机较控制器消耗的能源更多,因此这样的设计也节省了更多的能源。

1.2.3 快速启动、瞬间连接

此前蓝牙版本的启动速度非常缓慢,2.1 版本的蓝牙启动连接需要 6s 时间,而蓝牙4.0 版本仅需要 3ms 即可完成,几乎是瞬间连接。

1.2.4 传输距离极大提供

传统蓝牙传输距离一般 2-10m,而蓝牙 4.0 的有效传输距离可以达到 60~100m,传输距离提升了 10 倍,极大开拓了蓝牙技术的应用前景。

1.2.5 高安全性

为了保证数据传输的安全性,使用 AES-128 CCM 加密算法进行数据包加密认证,对于初学阶段,安全性问题可以暂时不考虑。

1.3 协议栈

协议栈内容请参考:Understanding Bluetooth Advertising Packets一文。

中文版:http://blog.csdn.net/ooakk/article/details/7302425

nuM77r7.gif

ble_packet.png

ble_adv_pdu.png

1.4 通信信道

BLE 工作在 ISM 频带,定义了两个频段,2.4GHz 频段和 896/915MHz 频带。在IEEE802.15.4 中共规定了 27 个信道:

在 2.4GHz 频段,共有 16 个信道,信道通信速率为 250kbps:

在 915MHz 频段,共有 10 个信道,信道通信速率为 40kbps:

在 868MHz 频段,有 1 个信道,信道通信速率为 20kbpS。

Clipboard Image.png

BLE 工作在 2.4GHz 频段,仅适用 3 个广播通道,适用所有蓝牙规范版本通用的自适应调频技术。

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

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

BTLE有40个频道(也称为信道),按37在第一个,后面由0-36,然后第39信道(那么38呢 🙂 )第38信道位于10和11之间:

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

40个频道中:37、38、39为广播信道,另外37个频道用于数据的传输:

使用德州仪器(TI)CC2540蓝牙低功耗模块配合官方的SmartRF协议软件包监听器:PACKET-SNIFFER,可对三个蓝牙广播信道进行嗅探。

Clipboard Image.png

使用方法可参考:Ti.com.cn/packet-sniffer 这种嗅探方案优点是廉价,不足是只能嗅探到广播信道的数据包,无法捕获连接完成后也就是设备通信过程中的数据包:

Clipboard Image.png

Clipboard Image.png

Clipboard Image.png

基于HackRF嗅探蓝牙数据包实际上也是可行的:

HACKRF-BTLE-sniffer

其方法参考jxj童鞋的BTLE packet sniffer based on HACKRF (function and performance similar to TI’s packet sniffer)
HackRF.NET 中文版:基于HACKRF的低功耗蓝牙(BTLE)packet sniffer/scanner

0x02 环境搭建:

我们说到上面的方案只能嗅探到广播信道的数据包,无法捕获通信过程中的蓝牙数据包,接下来我们将使用Ubertooth One来弥补上面方案的缺陷。

Image

2.1安装lib库

apt-get install python-software-properties
add-apt-repository ppa:pyside
apt-get update
apt-get install libnl-dev libusb-1.0-0-dev pyside-tools

2.2 安装libbtbb

wget https://github.com/greatscottgadgets/libbtbb/archive/2015-09-R2.tar.gz -O libbtbb-2015-09-R2.tar.gz
tar xf libbtbb-2015-09-R2.tar.gz
cd libbtbb-2015-09-R2
mkdir build
cd build
cmake ..
make
sudo make install

2.3 安装ubertooth

wget https://github.com/greatscottgadgets/ubertooth/releases/download/2015-09-R2/ubertooth-2015-09-R2.tar.xz -O ubertooth-2015-09-R2.tar.xz
tar xf ubertooth-2015-09-R2.tar.xz
cd ubertooth-2015-09-R2/host
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

2.4 安装wireshark

sudo apt-get install checkinstall
wget https://www.wireshark.org/download/src/wireshark-2.0.3.tar.bz2
tar -xvf wireshark-2.0.3.tar.bz2
cd wireshark-2.0.3
./configure
make
make install

2.5 安装kismet

wget https://kismetwireless.net/code/kismet-2013-03-R1b.tar.xz
tar xf kismet-2013-03-R1b.tar.xz
cd kismet-2013-03-R1b
ln -s ../ubertooth-2015-09-R2/host/kismet/plugin-ubertooth .
./configure
make && make plugins
sudo make suidinstall
sudo make plugins-install

2.6 安装BLE解密工具crackle (开源项目地址)

git clone https://github.com/mikeryan/crackle.git
cd crackle
make
make install

找到kismet的配置文件kismet.conf ,把”pcapbtbb”加入到kismet.conf的logtypes= 里边

Clipboard Image.png

Clipboard Image.png

 0x03 嗅探扫描

3.1 spectool

spectool_curses

Clipboard Image.png

spectool_gtk 扫描附近信号并在频谱上显示:

Clipboard Image.png

spectool_raw RAW中文解释是“原材料”或“未经处理的东西”,这里猜测是显示设备捕获到的未经处理的信号数据:

Clipboard Image.png

spectool_net  将Ubertooth One作为一台“硬件服务器”,并监听TCP:30569端口,局域网内任何可以跟主机建立通信的PC可通过Ubertoothe主机IP+30569共享设备。连接方式:在另外一台主机终端上执行:spectool_gtk
—>选择Open Network Device —>输入ip、端口。

Clipboard Image.png

3.2 hcitool

root@0xroot:~# hcitool --help
hcitool - HCI Tool ver 4.99
Usage:
    hcitool [options]  [command parameters]
Options:
    --help    Display help
    -i dev    HCI device
Commands:
    dev     Display local devices
    inq     Inquire remote devices
    scan    Scan for remote devices
    name    Get name from remote device
    info    Get information from remote device
    spinq    Start periodic inquiry
    epinq    Exit periodic inquiry
    cmd     Submit arbitrary HCI commands
    con     Display active connections
    cc      Create connection to remote device
    dc      Disconnect from remote device
    sr      Switch master/slave role
    cpt     Change connection packet type
    rssi    Display connection RSSI
    lq      Display link quality
    tpl     Display transmit power level
    afh     Display AFH channel map
    lp      Set/display link policy settings
    lst     Set/display link supervision timeout
    auth    Request authentication
    enc     Set connection encryption
    key     Change connection link key
    clkoff    Read clock offset
    clock    Read local or remote clock
    lescan    Start LE scan
    lewladd    Add device to LE White List
    lewlrm    Remove device from LE White List
    lewlsz    Read size of LE White List
    lewlclr    Clear LE White list
    lecc    Create a LE Connection
    ledc    Disconnect a LE Connection
    lecup    LE Connection Update

hcitool scan :扫描附近蓝牙设备

hcitool lescan :扫描附近低功耗蓝牙设备

图片1a.png

3.3 gatttool

root@0xroot:~# gatttool -h
Usage:
  gatttool [OPTION...]

Help Options:
  -h, --help                                Show help options
  --help-all                                Show all help options
  --help-gatt                               Show all GATT commands
  --help-params                             Show all Primary Services/Characteristics arguments
  --help-char-read-write                    Show all Characteristics Value/Descriptor Read/Write arguments

Application Options:
  -i, --adapter=hciX                        Specify local adapter interface
  -b, --device=MAC                          Specify remote Bluetooth address
  -m, --mtu=MTU                             Specify the MTU size
  -p, --psm=PSM                             Specify the PSM for GATT/ATT over BR/EDR
  -l, --sec-level=[low | medium | high]     Set security level. Default: low
  -I, --interactive                         Use interactive mode
gatttool -b 1C:96:5A:FF:4B:E7 -I
[   ][1C:96:5A:FF:4B:E7][LE]> help
help                                           Show this help
exit                                           Exit interactive mode
quit                                           Exit interactive mode
connect         [address]                      Connect to a remote device
disconnect                                     Disconnect from a remote device
primary         [UUID]                         Primary Service Discovery
characteristics [start hnd [end hnd [UUID]]]   Characteristics Discovery
char-desc       [start hnd] [end hnd]          Characteristics Descriptor Discovery
char-read-hnd    [offset]              Characteristics Value/Descriptor Read by handle
char-read-uuid   [start hnd] [end hnd]   Characteristics Value/Descriptor Read by UUID
char-write-req              Characteristic Value Write (Write Request)
char-write-cmd              Characteristic Value Write (No response)
sec-level       [low | medium | high]          Set security level. Default: low
mtu                                     Exchange MTU for GATT/ATT
[   ][1C:96:5A:FF:4B:E7][LE]> 

3.4 ubertooth-scan

root@0xroot:~# ubertooth-scan --help
ubertooth-scan: invalid option -- '-'
ubertooth-scan - active(bluez) device scan and inquiry supported by Ubertooth
Usage:
    -h this Help
    -U set ubertooth device to use
    -s hci Scan - perform HCI scan
    -t scan Time (seconds) - length of time to sniff packets. [Default: 20s]
    -x eXtended scan - retrieve additional information about target devices
    -b Bluetooth device (hci0)

ubertooth-scan -s

 

图片1b.png

3.5 ubertooth-btle

ubertooth-btle - passive Bluetooth Low Energy monitoring
Usage:
    -h this help

    Major modes:
    -f follow connections
    -p promiscuous: sniff active connections
    -a[address] get/set access address (example: -a8e89bed6)
    -s
faux slave mode, using MAC addr (example: -s22:44:66:88:aa:cc)     -t
set connection following target (example: -t22:44:66:88:aa:cc)     Interference (use with -f or -p):     -i interfere with one connection and return to idle     -I interfere continuously     Data source:     -U set ubertooth device to use     Misc:     -r capture packets to PCAPNG file     -q capture packets to PCAP file (DLT_BLUETOOTH_LE_LL_WITH_PHDR)     -c capture packets to PCAP file (DLT_PPI)     -A advertising channel index (default 37)     -v[01] verify CRC mode, get status or enable/disable     -x allow n access address offenses (default 32) If an input file is not specified, an Ubertooth device is used for live capture. In get/set mode no capture occurs.

ubertooth-btle -f -c test.pcap
抓包&保存到本地

图片1c.png

使用这条命令我们可以把设备捕获到的数据包保存到本地,完成后可导入wireshark进行数据包、协议分析。

wireshark导入嗅探到的蓝牙数据包需要处理一下才能正常查看,不然无法正常分析数据:

Clipboard Image.png

Edit → Preferences → Protocols → DLT_USER → Edit → New

在payload protocol中输入btle

Clipboard Image.png

图片1e.png

使用规则过滤数据包:参考Capturing BLE in Wireshark

btle.data_header.length > 0 || btle.advertising_header.pdu_type == 0x05

图片1f.png

 

3.6 crackle

如果捕获到足够的数据包尤其是btsmp,那接下来便可以用crackle来破解tk和ltk:

crackle -i 

解密数据包,并把解密后的包另存:

crackle -i  -o 
crackle -i  -o  -l 

0x04 参考 && 感谢

Sniffing and decoding NRF24L01+ and Bluetooth LE packets for under $30
Bluetooth sniffing with Ubertooth : https://dominicspill.com/kiwicon/Spill-Ubertooth-Kiwicon-2012.pdf

Now I wanna sniff some Bluetooth: Sniffing and Cracking Bluetooth with the UbertoothOne

http://j2abro.blogspot.com.au/2014/06/understanding-bluetooth-advertising.html

 

http://j2abro.blogspot.com.au/2014/06/understanding-bluetooth-advertising.html 

http://j2abro.blogspot.com.au/2014/06/analyzing-bluetooth-advertising-with.html 

http://cerescontrols.com/tutorials-3/sniffing-bluetooth-packets-with-kismet-and-wireshark-in-ubuntu-12-04/

https://github.com/greatscottgadgets/ubertooth/wiki/Build-Guide

https://github.com/greatscottgadgets/ubertooth/wiki/Capturing-BLE-in-Wireshark

http://stackoverflow.com/questions/23877761/sniffing-logging-your-own-android-bluetooth-traffic

https://lacklustre.net/bluetooth/wireshark.html

https://blog.lacklustre.net/posts/BLE_Fun_With_Ubertooth:_Sniffing_Bluetooth_Smart_and_Cracking_Its_Crypto/

http://superuser.com/questions/947593/how-can-i-sniff-bluetooth-traffic-coming-from-my-and-another-device

http://www.backtrack-linux.org/forums/showthread.php?t=41552

http://www.splitbits.com/2014/05/14/ubertooth-spectools-chromebook/

http://ubertooth.sourceforge.net/usage/start/

http://hackerific.net/2012/01/28/Spectrum-Tools-and-Ubertooth-One/

https://penturalabs.wordpress.com/2014/02/20/ubertooth-updated-for-2014/

https://blog.lacklustre.net/

博客地址:spriteking.com/archives/1546

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

补课:

【永不消逝的电波(一)】无线电入门篇

【永不消逝的电波(二)】HackRF入门:家用无线门铃信号重放

0x00 前言

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

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

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

0x01 蓝牙版本更新

蓝牙技术版本更新: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是以低功耗技术为代表优势的蓝牙核心规格版本。

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

蓝牙设备所用波段是无需认可的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 Ghz
channel 01 : 2.403000000 Ghz
…
channel 78 : 2.480000000 Ghz

BTLE有40个频道:

channel 37 : 2.402000000 Ghz
channel 00 : 2.404000000 Ghz
channel 01 : 2.406000000 Ghz
channel 02 : 2.408000000 Ghz
channel 03 : 2.410000000 Ghz
channel 04 : 2.412000000 Ghz
channel 05 : 2.414000000 Ghz
channel 06 : 2.416000000 Ghz
channel 07 : 2.418000000 Ghz
channel 08 : 2.420000000 Ghz
channel 09 : 2.422000000 Ghz
channel 10 : 2.424000000 Ghz
channel 38 : 2.426000000 Ghz
channel 11 : 2.428000000 Ghz
channel 12 : 2.430000000 Ghz
channel 13 : 2.432000000 Ghz
channel 14 : 2.434000000 Ghz
channel 15 : 2.436000000 Ghz
channel 16 : 2.438000000 Ghz
channel 17 : 2.440000000 Ghz
channel 18 : 2.442000000 Ghz
channel 19 : 2.444000000 Ghz
channel 20 : 2.446000000 Ghz
channel 21 : 2.448000000 Ghz
channel 22 : 2.450000000 Ghz
channel 23 : 2.452000000 Ghz
channel 24 : 2.454000000 Ghz
channel 25 : 2.456000000 Ghz
channel 26 : 2.458000000 Ghz
channel 27 : 2.460000000 Ghz
channel 28 : 2.462000000 Ghz
channel 29 : 2.464000000 Ghz
channel 30 : 2.466000000 Ghz
channel 31 : 2.468000000 Ghz
channel 32 : 2.470000000 Ghz
channel 33 : 2.472000000 Ghz
channel 34 : 2.474000000 Ghz
channel 35 : 2.476000000 Ghz
channel 36 : 2.478000000 Ghz
channel 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     Adopted
Peripheral Privacy Flag     org.bluetooth.characteristic.gap.peripheral_privacy_flag     0x2A02     Adopted
PnP 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 Scanner
LightBlue

0x03 调戏小米手环

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

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

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

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

 0xFF01
 0xFF02
 ......
 0xFF0F

UUID:FEE1

 0xFEDD
 0xFEDE
 ......
 0xFFD2
 0xFFd3

UUID:FEE7

 0xFEC7
 0xFEC8
 0xFEC9

immediate Alert

Alert Level

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

0x04 演示视频:

http://v.qq.com/iframe/player.html?vid=k0175kdx5ue&tiny=0&auto=0

0x05 参考:

百科、文库

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