BLE低功耗蓝牙

news/2024/9/24 4:20:16

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.灯灭

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/46630.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

国内外大模型生态发展报告!

很多同学只知类似Check GPT或者说对国内的一些比较了解,对国外的不太了解,所以在这总结。 1 大模型的发展 左表名称 参数 特点 发布时间GPT-2 15亿 英文底模,开源 2019年Google T5 110亿 多任务微调, 开源 2019年GPT-3.5 1750亿 人工反馈微调 2022年Meta OPT 1750亿 英文底模…

初识 SpringMVC,运行配置第一个Spring MVC 程序

1. 初识 SpringMVC,运行配置第一个Spring MVC 程序 @目录1. 初识 SpringMVC,运行配置第一个Spring MVC 程序1.1 什么是 MVC2. Spring MVC 概述2.1 Spring MVC 的作用:3. 运行配置第一个 Spring MVC 程序3.1 第一步:创建Maven模块3.2 第二步:添加 web 支持3.3 第三步:配置…

静态库与动态库

参考链接:https://www.bilibili.com/video/BV1N84y1J7hC/?spm_id_from=333.337.search-card.all.click&vd_source=91219057315288b0881021e879825aa3 静态库创建 使用VS创建时,可以搜索静态库,实现了逻辑后,然后可以切换到release模式下点击生成解决方案后会生成lib文…

kettle从入门到精通 第七十三课 ETL之kettle kettle调用http分页接口教程

场景:kettle调用http接口获取数据(由于数据量比较大,鉴于网络和性能考虑,所以接口是个分页接口)。 方案:构造页码list,然后循环调用接口。 1、总体设计1)、初始化分页参数pageNum=1,pageSize=20,这里的pageSize可以根据自己的需求自行调整,比如每次从接口取数100或者…

以指定版本创建django项目

1、在pacharm的文件菜单创建一个纯净项目,如下图所示使用虚拟环境2、在pycharm的终端窗口通过pip安装3.2版本的django,(tips:已默认设定从阿里云镜像下载),如下图所示:3、使用django-admin startproject 项目名 .(django-admin startproject page_dm01 .)在项目下创建…

MinIO Mirror技术Watcher

事件通知机制Watcher组件的工作流程S3 Event

Gitlab服务器邮箱配置,实现自动为用户发送邮件(注册发送验证链接)

一. 配置前准备工作及说明服务器系统版本:CentOS 7 postfix,并在终端运行systemctl status postfix检查服务是否已在运行状态,如果显示activate则表示正在运行[root@sage ~]$ systemctl status postfix ● postfix.service - Postfix Mail Transport AgentLoaded: loaded (/…

CentOS7安装Gitlab13详细步骤

环境配置CentOS Version 7.6Gitlab Version gitlab-ce-13.12.15-ce.0.el7.x86_64下载rpm包 Gitlab历史版本下载地址:https://packages.gitlab.com/gitlab/gitlab-ce(我在这里下载的 gitlab-ce-13.12.15-ce.0.el7.x86_64.rpm 建议使用下载工具进行下载)wget https://d20rj4el…