首页 > 其他分享 >BLE低功耗蓝牙

BLE低功耗蓝牙

时间:2024-06-22 21:10:47浏览次数:4  
标签:配置文件 GATT 低功耗 蓝牙 BLE 设备

ble低功耗蓝牙

ble流量嗅探与重放

低功耗蓝牙协议栈

BLE是低功耗蓝牙的英文缩写(Bluetooth Low Energy),是蓝牙4.0版本起开始支持的新的、低功耗版本的蓝牙技术规范。

低功耗蓝牙瞄准多个市场,特别是移动智能终端,智能家居,互联设备等领域,主要特点包括:

  • 低功耗,使用纽扣电池就可以运行数月至数年。
  • 快连接,毫秒级的连接速度,传统蓝牙甚至长达数分钟。
  • 远距离,长达数百米的通信距离,而传统蓝牙通常10米左右。

qq_pic_merged_1719058374210

物理层(phy):使用GFSK调制无线信号,并将2.4GHz频段划分为40个射频信道(3个广播信道,37个数据信道)。

  • 直接测试模式(DTM):通过测试仪器直接连接蓝牙设备控制接口,自动完成与蓝牙模块之间的交互命令和蓝牙参数的设定,从而对蓝牙模块进行测试。

  • 链路层(LL):定义逻辑通道并为通道选择调频技术;控制设备的射频状态(等待、广播、扫描、发起连接等)和角色;控制数据包的发送时机、完整性等。

  • 主机控制器接口(HCI):为主机和控制器提供统一的通信接口。这一层的功能可以通过软件API来实现,也可以使用硬件外设来实现。

  • 逻辑链路控制和适配协议(L2CAP):用于协商与建立逻辑通信信道。BLE使用固定逻辑通信信道来传输协议数据,可避免建立信道时带来的额外时间消耗。

  • 安全管理器(SM):定义了设备配对与密钥分配的方式,并为设备之间的安全连接和数据交换提供服务。

  • 属性协议(ATT):定义了访问服务端设备数据的规则(比如读、写等)。数据存储在属性服务器的属性(attribute)中,供属性客户端执行读写操作。

  • 通用属性规范(GAP):负责处理设备的访问模式和程序,具体包括定义蓝牙设备的角色、通信操作模式和过程,定义蓝牙地址、蓝牙名称等与蓝牙相关的参数。

  • 通用访问规范(GAP):主要用来控制设备连接和广播。通用访问规范可使你的设备被其他设备发现,并决定了你的设备是否可以或者怎样与交互设备进行通信。

  • 各种应用程序:基于蓝牙协议的应用程序

  • 通用属性配置文件(GATT)
    GATT配置文件定义了如何通过BLE连接来交换所有配置文件和用户数据。它为基于GATT的配置文件提供了参考框架和精确的用例,以确保不同供应商生产的设备之间的互操作性。标准的BLE配置文件都以GATT配置文件为基础,并且必须遵守GATT配置文件才能正常运行。

    ​ 尽管蓝牙规范在属性协议(ATT)中定义了属性,但定义的这些属性是与ATT相关的。ATT依靠公开的所有概念提供一系列精确的协议数据单元(PDU),以允许客户端访问服务器上的属性。

    ​ 而GATT进一步建立了严格的层次结构,允许使用一组简洁的规则在客户端和服务器之间访问与检索数据,而这些规则共同构成了所有基于 GATT 的配置文件使用的框架。

    在GATT服务器中,属性被分组为服务(service),每个服务可以包含零个或多个特征(characteristic),不同的特征之间用唯一的 UUID区分,这些特征又可以包括零个或多个描述符(descriptor)。对于声称与 GATT 兼容的任何 BLE 设备来说,都具有相应的层次结构。

    image-20240622201454991

    ​ 在日常生活中,一种常见的 BLE 设备是智能手环。假设它包含 3 个服务,分别是提供设备信息的服务、统计步数的服务和检测心率的服务。在提供设备信息的服务中,包含的特征有厂商信息、硬件信息和版本信息等,而在检测心率的服务中则包含心率的特征等。每个特征都有对应的值(value)和描述符,用于提供更多相关信息。心率特征中的值是与心率相关的数据,而描述符是对该value的描述说明,如value的单位。权限等。

    ​ 尽管BLE设备的配对操作是加密的,但每个特征的值可以在不加密的状态下进行读写。当特征值发生改变时,蓝牙设备会收到相应的通知。

智能灯泡攻击实验

工具:wireshark+52832dongle+lifesmart智能灯泡+lightblue+lifesmart

1.确定蓝牙设备

打开蓝牙灯泡并用产品官方app与其蓝牙连接,再使用lightblue检测蓝牙信号强度,找到一靠近灯泡信号飙升远离灯泡信号掉的最明显的设备就是蓝牙灯泡。

image-20240622202302750

这里是第二个设备,BULB。

2.wireshark抓蓝牙数据包

插上52832,监听目标设备,当52832指示灯变从红色闪烁变绿即连接成功。

image-20240622205827402

多次在app上开关灯泡,找到对应开关的服务。

image-20240622204720722

标记的2条是开关操作,发现每次操作value倒数第七位自增1,开灯末尾是181,关灯180.并且找到了servic和其特征的uuid红线划出了。

3.重放攻击

现在灯是开的,我们通过lightblue改写上述服务的特征值,达到重放攻击。

输入Value: 0e000000000000000000000410020180.灯灭

标签:配置文件,GATT,低功耗,蓝牙,BLE,设备
From: https://www.cnblogs.com/myxa/p/18262711

相关文章

  • Stable Diffusion部署教程,开启你的AI绘图之路
    本文环境系统:Ubuntu20.0464位内存:32G环境安装2.1安装GPU驱动在英伟达官网根据显卡型号、操作系统、CUDA等查询驱动版本。官网查询链接https://www.nvidia.com/Download/index.aspx?lang=en-us注意这里的CUDA版本,如未安装CUDA可以先选择一个版本,稍后再安装CUDA.点击S......
  • 解决unable to find valid certification path to requested target
    昨天访问供应商提供的接口还是正常的,今天早上上班却被告知系统功能总是提示错误,完全用不了,查询系统日志以及本地重新测试发现,调用供应商提供的接口提示unabletofindvalidcertificationpathtorequestedtargetjavax.net.ssl.SSLHandshakeException:GeneralOpenSslEngine......
  • 打卡信奥刷题(132)用Scratch图形化工具信奥P9913 [普及组]「RiOI-03」water problem
    「RiOI-03」waterproblem题目描述给定一个正整数nnn,问一个正方形能否被分割为nn......
  • [题解]AT_abc256_h [ABC256Ex] I like Query Problem
    思路首先可以看一下P4145,在P4145中使用了一种叫势能线段树的Trick。对于势能线段树,我个人的理解是,对于一段区间(或一个点)直接暴力维护,在经过很少的次数后操作将没有意义的题就可以使用势能线段树。在本题中,如果没有推平操作,显然我们可以直接使用势能线段树,时间复杂度可以轻......
  • [题解]AT_abc158_e [ABC158E] Divisible Substring
    思路首先发现一个事情,任意一个子串都可以由\(s\)的某一个后缀的后面删除一些字符得到。因此假如\(s\)的某一个后缀的值为\(x\),那么我们可以减去后面的我们不用的数字\(a\),然后除以\(10\)的若干次幂得到,即\(\frac{x-a}{10^n}\)。于是得到:\[\frac{x-a}{10^n}\equi......
  • blender4.1添加骨骼复制位置和复制旋转约束代码(Armature-Biped_Root)
    添加旋转旋转约束importbpy#定义骨架中骨骼的映射关系bone_mapping={"mixamorig:Hips":"Pelvis","mixamorig:LeftUpLeg":"Left_Thigh","mixamorig:LeftLeg":"Left_Calf","mixamorig:LeftFoot&q......
  • ImmutableMultiDict 添加字段
    ImmutableMultiDict是Flask中处理HTTP请求中的多值字典,它是不可变的,意味着一旦创建,其内容不能被修改。但是,你可以通过复制并修改它的方式来添加字段。以下是一个如何添加字段到ImmutableMultiDict的例子:fromwerkzeug.datastructuresimportImmutableMultiDict#......
  • redisson WRONGPASS invalid username-password pair or user is disable
    1、技术架构:若依微服务框架<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2021.1</version></dependency><dependency>......
  • flinksql API StreamTableEnvironment StreamStatementSet应用
    1.问题描述在应用flink实时消费kafka数据多端中,一般会使用flink原生的addsink或flinkSQL利用SqlDialect,比如消费kafka数据实时写入hive和kafka一般用两种方式:第一种方式是写入hive利用SqlDialect,写入kafka利用flink的旁路输出流+原生addSink第二种方式是写入hive和kafka都利用S......
  • Stable Diffusion一键安装教程含大量关键词模型包
    目前主流AI绘画平台主要有三种:MidjourneyStableDiffusionDALL·E相比较而言StableDiffusion。可以本地化不需要money不占用网络StableDiffusion下载地址想要Stablediffusion安装包的小伙伴可以在文末扫码,我给大家免费安排!1,电脑配置由于是将StableDiffusio......