Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
esp32_bluetooth_classic_sniffer — 主动蓝牙 BR/EDR 嗅探器/注入器,价格与任何 ESP32 开发板一样低廉。可与 Scapy 配合使用 ;-) | Kitploit
工具/GitHubGitHub/matheus-garbelini/esp32_bluetooth_classic_sniffer
嵌入式系统安全数据包嗅探与分析蓝牙安全漏洞利用无线安全硬件黑客
GitHubmatheus-garbelini/esp32_bluetooth_classic_sniffer

esp32_bluetooth_classic_sniffer

主动蓝牙 BR/EDR 嗅探器/注入器,价格与任何 ESP32 开发板一样低廉。可与 Scapy 配合使用 ;-)

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
59877483年前Kitploit 审核通过

BrakTooth ESP32 BR/EDR 主动嗅探器/注入器

适用于蓝牙经典的简单“监控模式”。在 ESP32 蓝牙连接中嗅探或注入 BR/EDR 基带数据包。

这是一个逆向工程的 主动 BR/EDR 嗅探器,以及 ESP32 补丁框架,可用于探索 ESP32 控制器与远程目标之间的蓝牙 (BT) BR/EDR 交互。

与 被动 嗅探器不同,被动嗅探器不与 BT 网络(微微网)交互,而 主动 嗅探器会连接到远程 BT 设备(BR/EDR 目标),并允许在 BT 主机协议栈(如 blue-kitchen)的指导下,对 BT 协议进行直至基带层的测试。BrakTooth 嗅探器支持廉价的开发板,例如 ESP32-DOIT(4 美元)或 ESP32-DevKitC(10 美元)。

目录
  • 简化设置概览
  • 1) 安装
    • A. 安装 Linux 依赖(Ubuntu 18.04 / 20.04)
    • B. 向 ESP32 烧录自定义固件
  • 2) 使用说明
    • 示例 1 - 连接到远程目标(主角色)
    • 示例 2 - 等待 BT 连接(从角色)
    • 示例 3 - HCI 桥接模式(连接其他 BT 主机协议栈)
  • 3) 从源码编译固件(ESP32 补丁框架)
  • 4) 自定义 BT 主机程序(Profile)
  • BrakTooth 嗅探器的软件架构
  • 功能概览
  • 致谢

简化设置概览

poc_setup

1) 安装

A. 安装 Linux 依赖(Ubuntu 18.04 / 20.04)
git clone https://github.com/Matheus-Garbelini/esp32_bluetooth_classic_sniffer
cd esp32_bluetooth_classic_sniffer
./requirements.sh # (sudo required) Installs latest wireshark and standalone python3 runtime
./build.sh 		  # Build BT Host programs and Wireshark h4bcm dissector
B. 向 ESP32 烧录自定义固件

在开始使用 BrakTooth 嗅探器之前,你需要将自定义固件上传到你的 ESP32 开发板:

sudo chown $USER:$USER /dev/ttyUSB0 # Give user permission to serial port to avoid using sudo
./firmware.py flash /dev/ttyUSB0 # Change ttyUSB0 to match your port name
# Note: ESP-WROVER-KIT or ESP-ETHERNET-KIT uses /dev/ttyUSB1 instead as the first port is for the FTDI JTAG circuit.

重要提示:某些开发板需要按住 BOOT 按钮才能让 ESP32 正确进入烧录模式。

2) 使用说明

Usage: BTSnifferBREDR.py [OPTIONS]
Options:
  --port TEXT       Serial port name (/dev/ttyUSBx for Linux)
  --host TEXT       BDAddress of local host (default: E0:D4:E8:19:C7:68)
  --target TEXT     BDAddress of remote target (ex: a8:96:75:25:c2:ac)
  --live-wireshark  Opens Wireshark live session
  --live-terminal   Show a summary of each packet on terminal
  --bridge-only     Starts the HCI bridge without connecting any BT Host stack
  --help            Show this message and exit.

你可以以主角色或从角色启动嗅探器。如果使用 --target 参数,嗅探器将尝试连接你的远程目标。否则,它只会等待其他设备连接上来。

最后,--bridge-only 仅创建 HCI 伪终端(/dev/pts/x),使 ESP32 可以作为一个标准的 HCI BT 控制器运行。你可以使用此功能将任何其他 BT 主机协议栈连接到 ESP32。

示例 1 - 连接到远程目标(主角色)
./BTSnifferBREDR.py --port=/dev/ttyUSB0 --target=E0:D4:E8:19:C7:69 --live-terminal --live-wireshark

mode_master

示例 2 - 等待 BT 连接(从角色)
./BTSnifferBREDR.py --port=/dev/ttyUSB0 --live-terminal --live-wireshark
示例 3 - HCI 桥接模式(连接其他 BT 主机协议栈)
./BTSnifferBREDR.py --port=/dev/ttyUSB0 --bridge-only --live-terminal --live-wireshark

mode_bridge_only

3) 从源码编译固件(ESP32 补丁框架)

源代码可以直接从 ESP32 固件补丁框架 仓库构建,如下所示:

cd firmware
./build_from_source.sh # clone submodule & build firmware with platformio environment 'sniffer-serial'
./firmware.py flash <serial port> # flash built firmware to ESP32 via serial port

构建成功后,ESP32 固件二进制文件(firmware.bin、bootloader.bin、partitions.bin)会被复制到 firmware 文件夹。然后,你可以按照步骤 1.B) 中所述继续烧录固件。

4) 自定义 BT 主机程序(Profile)

由于 BrakTooth 嗅探器使用 BT 主机协议栈来引导连接,因此使用了以下修改过的 BlueKitchen 示例:

  • host_stack/sdp_rfcomm_query - 该程序发起与从设备的连接,并尝试执行 SDP 扫描和配对。
  • host_stack/spp_counter - 该程序等待连接,并与主设备建立 spp(串口)连接。

你可以按照 BlueKitchen 的官方文档修改或添加 BT Profile 到当前程序中。请注意,host_stack/bluekitchen/example/ 文件夹已经包含了一些 Profile 示例。

BrakTooth 嗅探器的软件架构

arch

自定义的 ESP32 BR/EDR 嗅探器/注入器固件通过 USB 串口与主机系统通信,并等待接收自定义命令或 HCI 命令。启动时,会创建一个 HCI 桥,将 BrakTooth 自定义协议与 ESP32 发送或接收的标准 HCI 命令分离。一旦在 ESP32 固件上启用“RX/TX Sniffer”功能,基带数据包会直接转发给 BTSnifferBREDR.py 脚本,该脚本通过自定义协议对嗅探到的数据包进行解码,并通过 Scapy 打印,和/或通过实时捕获转储到 Wireshark 以及 logs 文件夹。

功能概览

firmware_design

  • RX/TX 嗅探器: 转储基带数据包并将其转发到主机。支持的数据包:
    • 基带头
    • 来自远程目标的 NULL/POLL
    • FHS(目前没有 Scapy 层)
    • EIR(目前未解析)
    • ACL 头
    • LMP
  • TX 拦截: 这允许主机 PC 在 ESP32 空中传输之前实时修改 TX 数据包。但需要一个具有高速 USB 的 ESP32 开发板,例如 ESP-PROG 或 ESP-WROVER-KIT。两者都配有 FTD2232H USB 转 UART 控制器,可将 USB 轮询延迟降低到 125us。 (目前禁用,抱歉)。
  • TX 注入器: 允许主机在 BT 寻呼过程之后以及每个传输时隙(即每 1.25ms)立即注入 BR/EDR 数据包,如果 ESP32 内部 LMP 队列中有内容,则会等待。 (目前禁用,抱歉)。
  • RX/TX 旁路: 在寻呼过程之后,有效地“屏蔽”ESP32 BT 协议栈接收或发送 LMP 数据包。你可以利用此功能在主机上使用 Scapy 构建独立的 LMP 状态机 🙂。此功能可能实现类似于 SweynTooth nRF52 dongle 中所做的操作,但针对的是 BR/EDR。
  • ROM 补丁器: 从固件内部安装 ROM 钩子。
  • HCI IN/OUT: 与 BT 主机协议栈的标准通信接口。第三方协议栈,例如 bluekitchen。

致谢

基带数据包的解析扩展了 InternalBlue Broadcom Wireshark 解析器。具体来说,该解析扩展了 h4bcm Wireshark 插件,以支持更多 BT 层以及我们自定义的 ESP32 元数据头。感谢 @jiska2342。

感谢以下所有开源项目:

  • 特别感谢 @Ebiroll 对 Ghidra 的 Xtensa 模块 的维护
  • 感谢 @mringwal 提供了出色的开源 BlueKitchen BT 主机协议栈
  • InternalBlue 项目
  • Scapy 数据包操作库
  • Wireshark 项目
下载工具