0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于树莓派的蓝牙协议抓包

jf_vLt34KHi 来源:Tide安全团队 2023-07-04 17:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

10x00前言

前段时间尝试用虚拟机安装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.下载官网刻录软件

2.按需刻录树莓派系统

1d94e118-1a4a-11ee-962d-dac502259ad0.jpg

3.刻录时提前配置开启ssh、wifi

1dada216-1a4a-11ee-962d-dac502259ad0.jpg

4.将刻录好的储存卡插入到树莓派中

此时就可以ssh连接树莓派,如果有需要屏幕的情况比如wireshark图形界面等,可以连接自带的hdmi线到显示屏上,如果觉得连接显示屏有些麻烦,想用vnc连接远程桌面

VNC连接

终端输入命令sudo raspi-config,会弹出一个界面选择Interface Options -> VNC-> enable -> YES即可开启vnc

1dc44aca-1a4a-11ee-962d-dac502259ad0.jpg

调整临时分辨率

但默认连接vnc分辨率会比较小,无法看清屏幕内容可以通过终端输入以下命令临时调整vnc分辨率,下次重启后失效

vncserver -geometry 1920x1080

vnc连接是地址后加:1选择通道1,例如192.168.1.1:1即可连接,但192.168.1.1仍可正常连接vnc

20x01蓝牙协议简介

蓝牙低能耗(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart)也称低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。

传统蓝牙和低功耗蓝牙对比:

1e03bec6-1a4a-11ee-962d-dac502259ad0.jpg-w1455

低功耗蓝牙(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米,传输距离大大提高,极好的开拓了蓝牙技术的应用前景。

30x02环境安装

测试发现自带源速度还是挺快的,这里就不用换源了

1、安装依赖

可以通过 sudo passwd root 重置下root密码后再执行sudo

sudoapt-getinstallcmakelibusb-1.0-0-devmakegccg++libbluetooth-dev
pkg-configlibpcap-devpython-numpypython-pysidepython-qt4

2、安装libbtbb

wgethttps://github.com/greatscottgadgets/libbtbb/archive/2020-12-R1.tar.gz-Olibbtbb-2020-12-R1.tar.gz
tar-xflibbtbb-2020-12-R1.tar.gz
cdlibbtbb-2020-12-R1
mkdirbuild
cdbuild
cmake..
make
sudomakeinstall
sudoldconfig

3、安装 Ubertooth tools

wgethttps://github.com/greatscottgadgets/ubertooth/releases/download/2020-12-R1/ubertooth-2020-12-R1.tar.xz
tar-xfubertooth-2020-12-R1.tar.xz
cdubertooth-2020-12-R1/host
mkdirbuild
cdbuild
cmake..
make
sudomakeinstall
sudoldconfig

4、安装wireshark及ubertooth插件:

sudoapt-getinstallwiresharkwireshark-devlibwireshark-devcmake
cdlibbtbb-2020-12-R1/wireshark/plugins/btb
mkdirbuild
cdbuild
cmake-DCMAKE_INSTALL_LIBDIR=/usr/lib/arm-linux-gnueabihf/wireshark/plugins/..
make
sudomakeinstall

5、安装wireshark蓝牙插件

sudoapt-getinstallwiresharkwireshark-devlibwireshark-devcmake
cdlibbtbb-2020-12-R1/wireshark/plugins/btbredr
mkdirbuild
cdbuild
cmake-DCMAKE_INSTALL_LIBDIR=/usr/lib/arm-linux-gnueabihf/wireshark/plugins/..
make
sudomakeinstall

添加wireshark权限

sudogroupaddwireshark
sudochgrpwireshark/usr/bin/dumpcap
sudochmod4755/usr/bin/dumpcap
sudogpasswd-a你的用户名wireshark

0x03刷新固件

安装好上述环境之后,如果你的Ubertooth one是之前买的,是需要更新一下固件版本:

查看一下当前固件版本:ubertooth-util -v

1e17829e-1a4a-11ee-962d-dac502259ad0.jpg

如果不是最新版本固件可以进入到之前下载的ubertooth-2020-12-R1文件夹下,找到 bluetooth_rxtx.dfu文件

cdubertooth-2020-12-R1/ubertooth-one-firmware-bin/
ubertooth-dfu-dbluetooth_rxtx.dfu-r

1e25da24-1a4a-11ee-962d-dac502259ad0.jpg

运行刷新固件命令,设备将自动进入DFU模式并刷新固件。

如果上诉操作没有成功,可以尝试将图中设备短接一下再进行固件刷新命令

固件更新完成后可以再次通过ubertooth-util -v查看固件版本,查看是否已更新固件成功。

tips

如果最后出现control message unsupported,则意味着更新固件失败。可以通过运行ubertooth-util -r 或重新拔插Ubertooth后再进行固件更新。

40x04 开始嗅探

使用ubertooth-btle进行扫描

在Wireshark中捕获BLE数据

1.终端运行命令:mkfifo /tmp/pipe创建管道文件

2.打开 Wireshark,单击捕获(Capture )->选项(Options)点击窗口右侧的管理接口(Manage Interfaces)按钮

1e55c6ee-1a4a-11ee-962d-dac502259ad0.jpg

在管道(Pipe)文本框中,键入“ /tmp/pipe”,单击OK保存后点击“开始”,完成后在终端中,运行ubertooth-btle:

ubertooth-btle -f -c /tmp/pipe

在 Wireshark 窗口中,可以看到数据包滚动。

1e75cd5e-1a4a-11ee-962d-dac502259ad0.jpg

可以使用ubertooth-btle -f -c test.pcap抓包并保存到本地

1e94d6f4-1a4a-11ee-962d-dac502259ad0.jpg

直接导入wireshark可能会显示不正常,需要对wireshark进行一些配置

1.单击编辑(Edit)->首选项(Preferences)

2.单击协议(Protocols)-> DLT_USER

3.单击编辑,点击加号(+),在DLT下,选择“用户0(DLT = 147),在有效载荷协议下,输入:btle

1eb56b6c-1a4a-11ee-962d-dac502259ad0.jpg

配置完成后,直接在wireshark中打开即可

1ecf4b5e-1a4a-11ee-962d-dac502259ad0.jpg

使用hcitool进行扫描

常用命令hcitool scan :扫描附近蓝牙设备

1ef5f2c2-1a4a-11ee-962d-dac502259ad0.jpg

hcitool lescan :扫描附近低功耗蓝牙设备

1f0ded64-1a4a-11ee-962d-dac502259ad0.jpg

使用bluetoothctl进行扫描

#bluetoothctl
#scanon
1f2bcc12-1a4a-11ee-962d-dac502259ad0.jpg





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 虚拟机
    +关注

    关注

    1

    文章

    966

    浏览量

    29647
  • 蓝牙协议
    +关注

    关注

    1

    文章

    33

    浏览量

    11618
  • 树莓派
    +关注

    关注

    122

    文章

    2060

    浏览量

    107996
  • Ubuntu系统
    +关注

    关注

    0

    文章

    92

    浏览量

    4374

原文标题:基于树莓派的蓝牙协议抓包

文章出处:【微信号:Tide安全团队,微信公众号:Tide安全团队】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    经典蓝牙解析说明

    在无线通信协议的开发过程中,器是工程师们不可或缺的工具。掌握器的使用,就如同拥有了能够洞察无线电波的“火眼金睛”。这不仅使我们能够验
    的头像 发表于 07-24 09:04 3892次阅读
    经典<b class='flag-5'>蓝牙</b><b class='flag-5'>抓</b><b class='flag-5'>包</b>解析说明

    请问蓝牙USB Dongle是否可以蓝牙2.0数据

    各位社区朋友, 现在蓝牙USB Dongle可以蓝牙4.0数据,是否可以2.0数据呢?
    发表于 09-26 10:32

    如何使树莓与Arduino蓝牙通信?

    树莓三代自带蓝牙模块 如何使树莓与Arduino蓝牙通信,Arduino采集的数据传送到
    发表于 06-05 05:55

    如何实现树莓蓝牙通讯

    目录一.准备工作二.利用蓝牙工具进行调试三.编译使用gattlib一.准备工作我使用的蓝牙模块是大夏龙雀的DX-BT16,支持BLE4.2协议树莓
    发表于 03-02 06:14

    请问BLE-Dongle是否支持协议分析?请问怎么进行协议分析?

    如题,请问贵司的BLE-Dongle是否支持协议分析?请问怎么进行协议分析?
    发表于 09-07 07:12

    树莓装机教程

    树莓装机教程树莓装机教程树莓装机教程树莓
    发表于 11-25 10:14 52次下载

    树莓3如何启动蓝牙连接_树莓3如何设置系统时间_树莓3如何设置中文环境

    本文主要说明树莓3如何启动蓝牙连接,如何设置系统时间以及如何设置中文环境的教程步骤,具体的一起来了解一下详细信息。
    发表于 12-08 15:55 1.4w次阅读
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>3如何启动<b class='flag-5'>蓝牙</b>连接_<b class='flag-5'>树莓</b><b class='flag-5'>派</b>3如何设置系统时间_<b class='flag-5'>树莓</b><b class='flag-5'>派</b>3如何设置中文环境

    树莓是什么树莓的简单介绍

    要想玩转树莓,首先得知道树莓是什么。在本节中,作者将带领大家揭开树莓的神秘面纱,了解
    发表于 05-15 18:09 31次下载
    <b class='flag-5'>树莓</b><b class='flag-5'>派</b>是什么<b class='flag-5'>树莓</b><b class='flag-5'>派</b>的简单介绍

    微雪电子树莓配件G 游戏机配件介绍

    树莓掌上游戏机配件 3.5寸屏 不含树莓 60帧游戏体验 告别画面丢失和卡顿 型号 RPi配件
    的头像 发表于 11-14 14:27 2012次阅读
    微雪电子<b class='flag-5'>树莓</b><b class='flag-5'>派</b>配件<b class='flag-5'>包</b>G 游戏机配件<b class='flag-5'>包</b>介绍

    微雪电子树莓AlphaBot配件介绍

    树莓 智能机器人 Raspberry Pi智能车配件 可以实现循迹、避障、红外遥控、网络视频监控等功能 型号 AlphaBot-Pi配件
    的头像 发表于 11-18 15:05 2162次阅读
    微雪电子<b class='flag-5'>树莓</b><b class='flag-5'>派</b>AlphaBot配件<b class='flag-5'>包</b>介绍

    微雪电子树莓4代B传感器配件介绍

    树莓4代B传感器配件 含ARPI600 13种常用传感器等 不含树莓4代主板 型号 PI4B Sensor Acce
    的头像 发表于 11-27 10:56 2173次阅读
    微雪电子<b class='flag-5'>树莓</b><b class='flag-5'>派</b>4代B传感器配件<b class='flag-5'>包</b>介绍

    微雪电子树莓4代B显示配件介绍

    树莓4代B显示配件 含7寸电容屏超清屏 SD卡等 不含PI4B 不含树莓4代B主板 型号 PI4B Display Acce
    的头像 发表于 11-27 11:09 2190次阅读
    微雪电子<b class='flag-5'>树莓</b><b class='flag-5'>派</b>4代B显示配件<b class='flag-5'>包</b>介绍

    微雪电子树莓配件E简介

    树莓配件E 含5寸电阻屏带外壳 SD卡 电源等 5寸高清触摸屏、高速16GB Micro SD卡、量身定做的一体机外壳,将你树莓打造成
    的头像 发表于 01-10 09:45 1642次阅读
    微雪电子<b class='flag-5'>树莓</b><b class='flag-5'>派</b>配件<b class='flag-5'>包</b>E简介

    Wireshark数据网络协议的分析

    。使用它,可以以各种方式抓取用户所需要的网络数据。但是用户往往无法从数据中直接获取所需要的数据。这是由于所有的信息在传输过程中,都会被按照各种网络协议进行封装。用户想要从海量的数据
    发表于 10-12 08:00 1次下载
    Wireshark数据<b class='flag-5'>抓</b><b class='flag-5'>包</b>网络<b class='flag-5'>协议</b>的分析

    【RT-Thread学习笔记】好用高性价比的BLE蓝牙

    作为基于蓝牙协议的开发者,少不了各种需要分析蓝牙报文的应用场景;而专业的蓝牙
    的头像 发表于 07-30 11:45 3545次阅读
    【RT-Thread学习笔记】好用高性价比的BLE<b class='flag-5'>蓝牙</b><b class='flag-5'>抓</b><b class='flag-5'>包</b>器