三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Kali Linux 2023下,手把手教你搞定Ubertooth One驱动与libbtbb编译(避坑指南)

Kali Linux 2023下,手把手教你搞定Ubertooth One驱动与libbtbb编译(避坑指南)

Kali Linux 2023下Ubertooth One驱动与libbtbb编译全流程解析

在网络安全和渗透测试领域,蓝牙安全分析正变得越来越重要。Ubertooth One作为一款开源的蓝牙测试工具,能够帮助安全研究人员捕获和分析蓝牙通信数据。然而,在最新的Kali Linux 2023环境中配置Ubertooth One时,很多用户会遇到各种依赖问题和编译错误,特别是当按照网络上过时的教程操作时。

本文将详细介绍在Kali Linux 2023中配置Ubertooth One的全过程,包括驱动安装、libbtbb库编译以及常见问题的解决方案。不同于简单的步骤罗列,我们会深入解释每个命令的作用和背后的原理,帮助你真正理解整个配置过程。

1. 环境准备与依赖安装

在开始之前,请确保你使用的是Kali Linux 2023的最新版本,并且已经以root用户身份登录。我们将从最基本的系统更新开始,逐步安装所有必要的依赖包。

首先更新系统软件包列表:

apt-get update

接下来安装Ubertooth的基础软件包和必要的开发工具:

apt install -y ubertooth libusb-1.0-0-dev libbluetooth-dev pkg-config cmake gcc git

这些软件包包括:

  • ubertooth: Ubertooth One的基本驱动和工具
  • libusb-1.0-0-dev: USB设备开发库
  • libbluetooth-dev: 蓝牙开发库
  • pkg-config: 帮助编译器找到库文件
  • cmake: 构建系统
  • gcc: GNU编译器集合
  • git: 版本控制工具

安装完成后,更新系统的共享库缓存:

ldconfig

注意:ldconfig命令会刷新系统的库缓存,确保新安装的库能够被正确找到。忽略这一步可能导致后续编译时出现库找不到的错误。

2. Ubertooth One硬件识别与验证

现在,将Ubertooth One设备插入电脑的USB接口。要验证设备是否被正确识别,可以运行:

lsusb | grep Ubertooth

如果设备被正确识别,你应该能看到类似下面的输出:

Bus 001 Device 004: ID 1d50:6002 OpenMoko, Inc. Ubertooth One

接下来,检查设备的固件版本:

ubertooth-util -v

这个命令会显示设备的固件版本信息。如果看到类似"Firmware version: 2020-03-R1"的输出,说明设备已经被正确识别。

常见问题:如果ubertooth-util -v命令没有输出或报错,可能是以下原因:

  1. 设备没有被正确识别 - 尝试重新插拔设备
  2. 权限问题 - 确保你以root用户运行命令
  3. 驱动未正确安装 - 检查lsusb输出

3. 获取并编译libbtbb库

libbtbb(Bluetooth Baseband)库是Ubertooth工具链的核心组件,它提供了蓝牙基带协议的解码功能。我们将从GitHub获取最新版本的源代码并编译安装。

首先,克隆libbtbb的Git仓库:

git clone https://github.com/greatscottgadgets/libbtbb.git cd libbtbb

提示:相比直接下载压缩包,使用git克隆仓库可以更方便地获取更新和切换版本。

创建一个构建目录并进入:

mkdir build cd build

现在使用cmake配置构建环境:

cmake ..

如果配置成功,你会看到类似下面的输出:

-- Configuring done -- Generating done -- Build files have been written to: /root/libbtbb/build

接下来编译并安装库:

make -j$(nproc) make install

-j$(nproc)参数会让make使用所有可用的CPU核心进行并行编译,显著加快编译速度。

最后,再次更新系统的库缓存:

ldconfig

4. 常见问题与解决方案

在实际操作中,你可能会遇到各种问题。下面列出了一些常见问题及其解决方案:

4.1 编译时找不到依赖库

错误信息可能类似于:

CMake Error at CMakeLists.txt:10 (find_package): Could not find a package configuration file provided by "libusb-1.0" with any of the following names:

解决方案是确保安装了所有必要的开发包:

apt install -y libusb-1.0-0-dev libbluetooth-dev

4.2 设备权限问题

如果非root用户无法访问Ubertooth设备,可以创建udev规则:

echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1d50", ATTR{idProduct}=="6002", MODE="0666"' > /etc/udev/rules.d/10-ubertooth.rules udevadm control --reload-rules

4.3 固件版本不匹配

如果ubertooth-util -v显示固件版本过旧,可能需要更新固件:

ubertooth-dfu -d firmware/bluetooth_rxtx.dfu -U

5. 使用Wireshark捕获蓝牙数据

配置完成后,我们可以使用Wireshark来捕获和分析蓝牙通信数据。首先确保Wireshark已安装:

apt install -y wireshark

创建一个命名管道用于数据传输:

mkfifo /tmp/pipe

在Wireshark中:

  1. 点击"Capture" → "Manage Interfaces"
  2. 选择"Pipes"选项卡
  3. 添加管道路径/tmp/pipe
  4. 点击"Start"开始捕获

在另一个终端中,运行以下命令开始捕获蓝牙低功耗(BLE)通信:

ubertooth-btle -f -c /tmp/pipe

现在你应该能在Wireshark中看到捕获到的蓝牙数据包了。

← 返回列表