之前一致在做一些有关与BLE安全研究的“基础设施建设”工作,我们知道,在BLE进入跳频之后,所有的固定标志都会消失,但是是不是意味着没办法了?不是的。我会提出一些恢复出来的方法。

首先,前导码分析,BLE包的前导码是10101010或者01010101,且与Access Address的LSB有关,所以,按照协议,BLE包的前九位是101010101或者010101010,我们可以通过这个,对整个的数据进行一次初筛。但是这个初筛还远远不够,因为仅仅9位特征,在每秒1M的速率下很容易就会产生一个假的数据包,我们还需要更多的校验。

RFU表示的是为未来的协议进行预留,在协议4.0中,RFU是这样的

协议中规定,RUF应该为0

 这样的话,我们的特征比较位就多了6位,过滤掉的无效包的数量是成几何状增长的。这里需要注意的是,真正的蓝牙芯片是不会进行这个筛选的,也就是如果发送方的芯片不按套路出牌,接收方也是可能准确的收到包的,由于蓝牙芯片的底层不开放,我也不清楚具体的实现,还有,这只是针对蓝牙4.0,如果之后的协议有更改,要具体分析。

Access address也是可以作为一个检验的条件的,如果上上述条件(前导码和RFU)满足的情况下,去截取Access Address,收到了两个一样的,那就基本可以确定这个就是一个正在使用中的Access Address,继而确定数据包。

恐怕最令人信服的确定方法,就是CRC校验了,因为它本身就是做这个的,可是在data channel里的CRC计算好像并不那么容易,CRC的三个要素是生成多项式,输入值和CRC初值,可是CRC初值是在双方的CONNECT_REQ包中随机由主机确定的,正如上文所说,data channel中没有固定的成分,所以我们要恢复出CRC的初值,这对未来包的确定,甚至伪造发包都十分有用。

CRC初值的计算我用了一个比较有意思的方法———“解方程”,或者叫,约束性求解。我使用了SMT-lib语言进行了一个bit输入下的逆操作,求解引擎输出值显示BLE的CRC24算法生成多项式是可逆的,并输出了一组特解。我并不清楚这个特解是否为唯一解。

后来有仔细看了看bit序列,感觉用约束性求解有点麻烦了,在已知输入输出和生成多项式的条件下,直接使用LFSR就行了,也就是生成CRC的LFSR的逆运算。

BLE直接Data channel抓包方法汇总的更多相关文章

  1. Android抓包方法(二)之Tcpdump命令+Wireshark

    Android抓包方法(二) 之Tcpdump命令+Wireshark 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分 ...

  2. ADB工具和手机抓包方法介绍

    Android抓包方法 工具包内容如下:(下载地址:http://download.csdn.net/download/yezhaohui2011/8368061) adb ——谷歌提供的安卓远程调试 ...

  3. Android 下使用tcpdump网络抓包方法

    Android 下使用tcpdump网络抓包方法 抓包需要tcpdump以及Root权限,tcpdump在本文后有下载. 首先把tcpdump传进手机,用adb命令(放SD卡有时会有问题,我一次可以用 ...

  4. 【转载】linux下的usb抓包方法

    1 linux下的usb抓包方法 1.配置内核使能usb monitor: make menuconfig                   Device Drivers -->        ...

  5. linux下的usb抓包方法

    1 linux下的usb抓包方法1.配置内核使能usb monitor: make menuconfig                   Device Drivers -->        ...

  6. 【burp】配置HTTPS抓包方法

    以Chrome为例,配置HTTPS抓包方法 1.获取破解版的burp,将BurpLoader.jar和burpsuite_pro_v1.5.18.jar放到一个路径下 2.在cmd里进入上述两个jar ...

  7. Android抓包方法(三)之Win7笔记本Wifi热点+WireShark工具

    Android抓包方法(三) 之Win7笔记本Wifi热点+WireShark工具 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等 ...

  8. Android抓包方法(一)之Fiddler代理

    Android抓包方法(一) 之Fiddler代理 前言: 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 不管是之前做HTML5手机 ...

  9. Android抓包方法(转)

    Android抓包方法(转) 作者:Findyou 地址:http://www.cnblogs.com/findyou/p/3491014.html 前言: 做前端测试,基本要求会抓包,会分析请求数据 ...

随机推荐

  1. 《Head first设计模式》之观察者模式

    观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新. 客户有一个WeatherData对象,负责追踪温度.湿度和气压等数据.现在客户给我们提了个 ...

  2. WLAN802.11

    IEEE 802.11,1997年,原始标准(2Mbit/s,播在2.4GHz).DSSS, FHSS.该协议的一大缺点是它提供了太多的选择使得互操作性很难实现.所以它不严密,更像是一个beta标准, ...

  3. ODBC连接数据库实例

    2012-12-13 22:27 (分类:默认分类) 1.首先建立数据源,正常情况下载控制面板-管理工具-数据源,打开后有用户DSN系统DSN 两者区别在于系统级的DSN,就是对该系统的所有登录用户可 ...

  4. [CentOS7 mini]Linux命令补全 yum install bash-completion

    CentOS7 mini默认不带命令补全需要自行安装 使用国内yum清华源 安装完后退出当前窗口再登录生效 # yum install -y bash-completion 已加载插件:fastest ...

  5. Serverless + Egg.js 后台管理系统实战

    本文将介绍如何基于 Egg.js 和 Serverless 实现一个后台管理系统 作为一名前端开发者,在选择 Nodejs 后端服务框架时,第一时间会想到 Egg.js,不得不说 Egg.js 是一个 ...

  6. Android9.0 Settings 修改踩坑记录

    问题现象 上图展示的很清楚,当系统语言为中文时,PreferenceScreen 中的折叠项 summary 描述重复显示的 bug,系统语言为英文时正常. 修改历程 先搜索 当前显示了 字符串,还真 ...

  7. ARC-082F Sandglass

    题意 有一个含有两个玻璃球的沙漏,分别称这两个玻璃球为\(

  8. 802.11 MAC基础

    MAC(媒介访问控制层)位于各式物理层之上,控制数据的传输.它负责核心成帧操作以及与有线骨干网络之间的交互. 802.11采用载波监听多路访问/冲突避免(CSMA/CA)机制来控制对传输媒介的访问. ...

  9. 字段类型(uniqueidentifier)问题

    环境:SQL 2016: 语句 select * from A where PID=JoID 上述查询语句中的Where PID=JoID条件中PID的字段类型为varchar(50)而JoID的字段 ...

  10. SQL中的事务ACID

    概述: 事务是由一系列语句构成的逻辑工作单元.事务和存储过程等批处理有一定程度上的相似之处, 通常都是为了完成一定业务逻辑而将一条或者多条语句“封装”起来,使它们与其他语句之间出现一个逻辑上的边界,并 ...