BLE直接Data channel抓包方法汇总
之前一致在做一些有关与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抓包方法汇总的更多相关文章
- Android抓包方法(二)之Tcpdump命令+Wireshark
Android抓包方法(二) 之Tcpdump命令+Wireshark 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分 ...
- ADB工具和手机抓包方法介绍
Android抓包方法 工具包内容如下:(下载地址:http://download.csdn.net/download/yezhaohui2011/8368061) adb ——谷歌提供的安卓远程调试 ...
- Android 下使用tcpdump网络抓包方法
Android 下使用tcpdump网络抓包方法 抓包需要tcpdump以及Root权限,tcpdump在本文后有下载. 首先把tcpdump传进手机,用adb命令(放SD卡有时会有问题,我一次可以用 ...
- 【转载】linux下的usb抓包方法
1 linux下的usb抓包方法 1.配置内核使能usb monitor: make menuconfig Device Drivers --> ...
- linux下的usb抓包方法
1 linux下的usb抓包方法1.配置内核使能usb monitor: make menuconfig Device Drivers --> ...
- 【burp】配置HTTPS抓包方法
以Chrome为例,配置HTTPS抓包方法 1.获取破解版的burp,将BurpLoader.jar和burpsuite_pro_v1.5.18.jar放到一个路径下 2.在cmd里进入上述两个jar ...
- Android抓包方法(三)之Win7笔记本Wifi热点+WireShark工具
Android抓包方法(三) 之Win7笔记本Wifi热点+WireShark工具 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等 ...
- Android抓包方法(一)之Fiddler代理
Android抓包方法(一) 之Fiddler代理 前言: 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 不管是之前做HTML5手机 ...
- Android抓包方法(转)
Android抓包方法(转) 作者:Findyou 地址:http://www.cnblogs.com/findyou/p/3491014.html 前言: 做前端测试,基本要求会抓包,会分析请求数据 ...
随机推荐
- [Effective Java 读书笔记] 第二章 创建和销毁对象 第一条
第二章 创建和销毁对象 第一条 使用静态工厂方法替代构造器,原因: 静态工厂方法可以有不同的名字,也就是说,构造器只能通过参数的不同来区分不同的目的,静态工厂在名字上就能表达不同的目的 静态工厂方法 ...
- 几个点认识Nginx服务器
Nginx 其实就是一款轻量级的 Web 服务器.反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用. 那么你可能会问了:“不是说 Nginx 吗?怎么又扯出来一个 W ...
- js+css页面横屏
<!DOCTYPE html> <html lang='zh'> <head> <meta charset="utf-8" /> & ...
- 将win10激活为专业工作站版并且永久激活(图文详细教程)
简介 win10升级为专业版.教育版.专业工作站版永久激活详细图文教程(注:只要使用相对应的产品密钥,所有的版本都可以激活) win10家庭版其实就是阉割版,越来越多的人想升级为专业版.很多电脑用户选 ...
- 【Java编程思想读书笔记】继承中父类的初始化方式
继承中父类的初始化方式 p144页有感 一.提出问题 假设有一些类,这些类有继承关系的时候,当初始化一个子类对象,对于该类的父类而言,发生了什么呢?是仅仅只是复制了一个引用还是也会同时new一个父类对 ...
- React中ref的使用
直接获取DOM元素时使用的,一般情况下尽量不要使用ref
- 6.【Spring Cloud Alibaba】API网关-SpringCloudGateway
SpringCloud Gateway是什么?优缺点分析 springCloud Gateway优点 springCloud Gateway缺点 编写SpringCloundGateway pom.x ...
- ASP.NET Core MVC学习笔记
最近由于疫情紧张,遂在家办公,在领导的带领下,学习了一下.Net Core MVC. 一,构建web应用 1.选择c#-所有平台-web 找到ASP.NET Core web应用程序 2.项目命名之 ...
- Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片
场景 Android布局管理器-使用LinearLayout实现简单的登录窗口布局: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details ...
- DEVIL MAY CRY V:《鬼泣5》
“又是一个带孝子的故事”