基于树莓派的蓝牙协议抓包(树莓派的蓝牙可以用来干嘛)
toqiye 2024-09-09 08:41 7 浏览 0 评论
前言
前段时间尝试用虚拟机安装 Ubuntu 系统和一款软硬件开源的蓝牙抓包器 Ubertooth One 来搭建蓝牙嗅探环境,从官方推荐的 Ubuntu16.04 版本一直测试到 22.04 版本,看似简单的蓝牙环境嗅探,搭建过程却遇到各种问题,如各版本报错不一致,插件安装失败,ubertooth 固件问题等,查阅了很多材料,尝试了很久都没有成功,想到手头还有个树莓派,考虑到会有 wireshark 等界面交互连接了个 3.5 寸屏幕。
树莓派环境境说明
树莓派型号:树莓派4B
操作系统:Raspberry Pi OS 2023-05-03-raspios-bullseye/ Debian GNU/Linux 11 (bullseye)
Ubertooth 固件版本:ubertooth 2018-12-R1(更新固件后 ubertooth 2020-12-R1)
ubertooth tools 版本:libubertooth 1.1 (2020-12-R1), libbtbb 1.0 (2018-06-R1)
Wireshark版本:Version 3.4.10 (Git v3.4.10 packaged as 3.4.10-0+deb11u1)
树莓派系统安装
树莓派安装过程比较简单,简述一下。
1、下载官网刻录软件
官方网站:https://www.raspberrypi.com/software/
2、按需刻录树莓派系统
3、刻录时提前配置开启 ssh、wifi
4、将刻录好的储存卡插入到树莓派中
此时就可以ssh连接树莓派,如果有需要屏幕的情况比如 wireshark 图形界面等,可以连接自带的 hdmi 线到显示屏上,如果觉得连接显示屏有些麻烦,想用vnc连接远程桌面
5、VNC连接
终端输入命令sudo raspi-config,会弹出一个界面 选择 Interface Options -> VNC-> enable -> YES 即可开启 vnc。
6、调整临时分辨率
但默认连接vnc分辨率会比较小,无法看清屏幕内容 可以通过终端输入以下命令临时调整vnc分辨率,下次重启后失效。
vncserver -geometry 1920x1080
vnc 连接是地址后加 :1 选择通道 1,例如 192.168.1.1:1 即可连接,但 192.168.1.1 仍可正常连接 vnc。
蓝牙协议简介
蓝牙低能耗(Bluetooth Low Energy,或称 Bluetooth LE、BLE,旧商标 Bluetooth Smart)也称低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。
传统蓝牙和低功耗蓝牙对比:
低功耗蓝牙(Low Energy; LE),又视为 Bluetooth Smart 或蓝牙核心规格 4.0 版本。其特点具备节能、便于采用,是蓝牙技术专为物联网(Internet of Things; IOT)开发的技术版本。
BLE 主打功能是快速搜索,快速连接,超低功耗保持连接和传输数据,弱点是数据传输速率低,由于BLE的低功耗特点,因此普遍用于穿戴设备。
BLE 优点
1、高可靠性
对于无线通信而言,由于电磁波在传输过程中容易受很多因素的干扰,例如,障碍物的阻挡、天气状况等,因此,无线通信系统在数据传输过程中具有内在的不可靠性。蓝牙技术联盟 SIG 在指定蓝牙 4.0 规范时已经考虑到了这种数据传输过程中的内在的不确定性,在射频,基带协议,链路管理协议中采用可靠性措施,包括:差错检测和矫正,进行数据编解码,数据降噪等,极大地提高了蓝牙无线数据传输的可靠性,另外,使用自适应调频技术,能最大程度地减少和其他 2.4G 无线电波的串扰。
2、低成本、低功耗
低功耗蓝牙支持两种部署方式:双模式和单模式,一般智能机上采用双模式,外设一般采用 BLE 单模。
低功耗设计:蓝牙 4.0 版本强化了蓝牙在数据传输上的低功耗性能,功耗较传统蓝牙降低了 90%。
传统蓝牙设备的待机耗电量一直是其缺陷之一,这与传统蓝牙技术采用16至32个频道进行广播有很大关系,而低功耗蓝牙仅适用 3 个广播通道,且每次广播时射频的开启时间也有传统的 22.5ms 减少到 0.6~1.2ms,这两个协议规范的改变,大幅降低了因为广播数据导致的待机功耗。
低功耗蓝牙设计用深度睡眠状态来替换传统蓝牙的空闲状态,在深度睡眠状态下,主机 Host 长时间处于超低的负载循环 Duty Cycle 状态,只在需要运作时由控制器来启动,由于主机较控制器消耗的能源更多,因此这样的设计也节省了更多的能源。
3、快速启动/瞬间连接
此前蓝牙版本的启动速度非常缓慢,2.1 版本的蓝牙启动连接需要 6s 时间,而蓝牙4.0版本仅需要3ms 即可完成。
4、传输距离增强
传统蓝牙传输距离一般为 2-10 米,而蓝牙4.0的有效传输距离可以达到 60~100米,传输距离大大提高,极好的开拓了蓝牙技术的应用前景。
环境安装
测试发现自带源速度还是挺快的,这里就不用换源了。
1、安装依赖
可以通过 sudo passwd root 重置下 root 密码后再执行 sudo。
sudo apt-get install cmake libusb-1.0-0-dev make gcc g++ libbluetooth-dev \
pkg-config libpcap-dev python-numpy python-pyside python-qt4
2、安装 libbtbb
wget https://github.com/greatscottgadgets/libbtbb/archive/2020-12-R1.tar.gz -O libbtbb-2020-12-R1.tar.gz
tar -xf libbtbb-2020-12-R1.tar.gz
cd libbtbb-2020-12-R1
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
3、安装 Ubertooth tools
wget https://github.com/greatscottgadgets/ubertooth/releases/download/2020-12-R1/ubertooth-2020-12-R1.tar.xz
tar -xf ubertooth-2020-12-R1.tar.xz
cd ubertooth-2020-12-R1/host
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig
4、安装 wireshark 及 ubertooth 插件:
sudo apt-get install wireshark wireshark-dev libwireshark-dev cmake
cd libbtbb-2020-12-R1/wireshark/plugins/btb
mkdir build
cd build
cmake -DCMAKE_INSTALL_LIBDIR=/usr/lib/arm-linux-gnueabihf/wireshark/plugins/ ..
make
sudo make install
5、安装 wireshark 蓝牙插件
sudo apt-get install wireshark wireshark-dev libwireshark-dev cmake
cd libbtbb-2020-12-R1/wireshark/plugins/btbredr
mkdir build
cd build
cmake -DCMAKE_INSTALL_LIBDIR=/usr/lib/arm-linux-gnueabihf/wireshark/plugins/ ..
make
sudo make install
6、添加 wireshark 权限
sudo groupadd wireshark
sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod 4755 /usr/bin/dumpcap
sudo gpasswd -a 你的用户名 wireshark
刷新固件
安装好上述环境之后,如果你的 Ubertooth one 是之前买的,是需要更新一下固件版本:
查看一下当前固件版本:ubertooth-util -v
如果不是最新版本固件可以进入到之前下载的 ubertooth-2020-12-R1 文件夹下,找到 bluetooth_rxtx.dfu 文件。
cd ubertooth-2020-12-R1/ubertooth-one-firmware-bin/
ubertooth-dfu -d bluetooth_rxtx.dfu -r
运行刷新固件命令,设备将自动进入DFU模式并刷新固件。
如果上诉操作没有成功,可以尝试将图中设备短接一下再进行固件刷新命令图片
固件更新完成后可以再次通过 ubertooth-util -v 查看固件版本,查看是否已更新固件成功。
tips
如果最后出现 control message unsupported,则意味着更新固件失败。可以通过运行 ubertooth-util -r 或重新拔插 Ubertooth 后再进行固件更新。
开始嗅探
使用 ubertooth-btle 进行扫描,在 Wireshark 中捕获 BLE 数据。
1、终端运行命令:mkfifo /tmp/pipe 创建管道文件
2、打开 Wireshark,单击捕获(Capture)->选项(Options)点击窗口右侧的管理接口(Manage Interfaces)按钮。
在管道(Pipe)文本框中,键入 “/tmp/pipe”,单击 OK 保存后点击“开始”,完成后在终端中,运行 ubertooth-btle:
ubertooth-btle -f -c /tmp/pipe
在 Wireshark 窗口中,可以看到数据包滚动。
可以使用 ubertooth-btle -f -c test.pcap 抓包并保存到本地。
直接导入 wireshark 可能会显示不正常,需要对 wireshark 进行一些配置。
1、单击编辑(Edit)->首选项(Preferences)
2、单击协议(Protocols)-> DLT_USER
3、单击编辑,点击加号(+),在DLT下,选择“用户0(DLT = 147),在有效载荷协议下,输入:btle
配置完成后,直接在 wireshark 中打开即可图片。
使用 hcitool 进行扫描
常用命令 hcitool scan : 扫描附近蓝牙设备。
hcitool lescan : 扫描附近低功耗蓝牙设备。
使用 bluetoothctl 进行扫描
bluetoothctl
scan on
相关推荐
- 基于Python查找图像中最常见的颜色
-
如果我们能够得知道一幅图像中最多的颜色是什么的话,可以帮助我们解决很多实际问题。例如在农业领域中想确定水果的成熟度,我们可以通过检查水果的颜色是否落在特定范围内,来判断它们是否已经成熟。接下来我们将使...
- 出大要几次/圣彼得堡悖论
-
程序:fromrandomimportrandomdeffn():n=1whilerandom()<0.5:n+=1returnny=[fn()...
- 使用OpenCV测量图像中物体之间的距离
-
原文链接:https://www.pyimagesearch.com/2016/04/04/measuring-distance-between-objects-in-an-image-with-op...
- 让颜色更加饱满和有冲击力:图像颜色校正
-
大家拍照或图片时,获取会遇到图像颜色与实际颜色存在色差的现象。我们看一个标准色卡的图片:第一张图片就是有色差的图片,这种现象一般是相机或光线的原因造成的,我们可以通过标准色卡进行校正。第一张图片是有色...
- Python 数据分析 : 实例
-
1、构建矩阵生成4x4形式的矩阵,矩阵中的数据是1~10之间的随机数random_list=np.random.random(16)random_list=np.round(...
- 用这些免费开源的图标库,为你的项目画龙点睛
-
精致好看的图标能够为你的项目增色不少,今天我就整理了一期图标库精选系列,希望你可以从中找到自己喜欢的图标库。下面就跟我来一场视觉的盛宴,我会一一介绍GitHub上品牌、流行、极小,各具特色的免费精...
- ICON设计规范之图标尺寸
-
编辑导语:图标设计是UI设计中不可缺少的元素,它看似简单,但其实内含门道。本篇文章里,作者就对icon设计的相关知识和icon绘制方法做出经验介绍。如果你对icon设计也想要有所了解的话,那就点进来看...
- PHP开发必备VSCode插件(大全)
-
通用chinese(simplified...):简体中文语言包liveserverhtml:实时预览prettier-codeformatter:最流行的代码格式化插件...
- 增强用户体验:前端开发中HTML5和CSS3表格属性的应用与优化研究
-
摘要:本文探讨了在前端开发中HTML5和CSS3表格属性的应用与优化。首先介绍了HTML5中常用的表格元素和CSS3中丰富的表格样式属性,旨在帮助开发人员定制表格的外观和样式。其次,研究了表格结构的优...
- 产品经理小技术:图片素材随手找,原型设计快又好
-
数十万互联网从业者的共同关注!作者:牛冰峰博客:http://uxfeng.com/画图——这项古老而精细的做法,是一代代产品狗们得以传承的立足之本。草图、线框图、思维导图、PPT插图、数据汇报图表、...
- MAUI Blazor 项目实战 - 从0到1轻松构建多平台应用UI
-
前言最近在项目中尝鲜了MAUI,总体感受下来还是挺不错的,优缺点并存,但是瑕不掩瑜,目前随着.Net版本的迭代升级对它的支持也越来越友好,相信未来可期!感兴趣的朋友欢迎关注。文章中如有不妥的地方,也请...
- webstorm常用的插件
-
1、AtomMaterialIcons推荐原因:这款插件不仅...
- 「智能家居」自动化平台nodered第三方节点dashboard的使用
-
自带节点库讲完了,开始说说第三方节点库dashboard,该库提供另一个可配置的UI页面,可以配置一些表单元素,以及图表。先来看一下别人使用dashboard制作的面板吧,是不是很漂亮。接下来我们一...
- 「炫丽」从0开始做一个WPF+Blazor对话小程序
-
大家好,我是沙漠尽头的狼。...
- MAUI使用Masa blazor组件库
-
上一篇(点击阅读)我们实现了UI在Web端(BlazorServer/Wasm)和客户端(Windows/macOS/Android/iOS)共享,这篇我加上MasaBlazor组件库的引用,并...
你 发表评论:
欢迎- 一周热门
-
-
如何评估预测值与真实值之间的匹配质量
-
如何解决npm安装依赖报错ERESOLVE unable to resolve dependency tree
-
超详细的cmder工具介绍及功能、快捷键说明
-
畅网 N5105 四口 2.5G 小主机安装 WIN10 对比 WIN11 跑分
-
常见面试第三题之Activity的几种启动模式介绍
-
软件推荐丨gocron —— 定时任务管理系统
-
一分钟带你认识了解电信光猫(电信光猫有什么用途)
-
聊聊C++20最大的变革之一 —— Coroutine,看不懂你打我(一)
-
硬核!Rust异步编程方式重大升级:新版Tokio如何提升10倍性能详解
-
Vite 4.0 正式发布(vite版本)
-
- 最近发表
- 标签列表
-
- systemproperties (65)
- npm版本管理 (61)
- localhost:15672 (59)
- materialtheme (86)
- node-ssh (68)
- 图床搭建 (62)
- vue3addeventlistener (60)
- mybatisselectone (78)
- css圆形进度条 (69)
- androidble蓝牙开发 (62)
- android-gif-drawable (60)
- appender-ref (64)
- springbootmockito (68)
- css边框渐变色和圆角 (58)
- gsonfastjson (59)
- 依赖注入的方式 (62)
- cookie跨域共享 (63)
- easyexcel导出图片 (77)
- dp数组 (61)
- js获取兄弟节点 (68)
- sysctl-a (60)
- java知音 (58)
- window.target (62)
- apimodel注解的作用 (60)
- window.onerror (66)