Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/matheus-garbelini/esp32_bluetooth_classic_sniffer
Embedded-System-SicherheitPaket-Sniffing & AnalyseBluetooth-SicherheitExploitationDrahtlose SicherheitHardware-Hacking
GitHubmatheus-garbelini/esp32_bluetooth_classic_sniffer

esp32_bluetooth_classic_sniffer

Aktiver Bluetooth-BR/EDR-Sniffer/Injector, so günstig, wie es mit einem ESP32-Board nur geht. Funktioniert mit Scapy ;-)

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
598775vor 3 JahrenVon Kitploit geprüft

BrakTooth ESP32 BR/EDR aktiver Sniffer/Injector

Einfacher "Monitor-Modus" für Bluetooth Classic. Schnüffle oder injiziere BR/EDR-Basisband-Pakete in ESP32-BT-Verbindungen.

Dies ist ein per Reverse Engineering erstellter aktiver BR/EDR-Sniffer und ein ESP32-Patching-Framework, mit dem die Bluetooth-(BT)-BR/EDR-Interaktion zwischen ESP32-Controller und einem entfernten Ziel untersucht werden kann.

Anders als passive Sniffer, die nicht mit dem BT-Netzwerk (Piconetz) interagieren, verbindet sich der aktive Sniffer selbst mit dem entfernten BT-Gerät (BR/EDR-Ziel) und ermöglicht das Testen des BT-Protokolls bis hinunter zur Basisband-Schicht, während er von einem BT-Host-Stack wie blue-kitchen geführt wird. Der BrakTooth-Sniffer unterstützt günstige Boards wie ESP32-DOIT (4 $) oder ESP32-DevKitC (10 $).

Inhaltsverzeichnis
  • Vereinfachter Setup-Überblick
  • 1) Installation
    • A. Linux-Anforderungen installieren (Ubuntu 18.04 / 20.04)
    • B. Benutzerdefinierte Firmware auf ESP32 flashen
  • 2) Verwendungshinweise
    • Beispiel 1 - Mit entferntem Ziel verbinden (Master-Rolle)
    • Beispiel 2 - Auf BT-Verbindung warten (Slave-Rolle)
    • Beispiel 3 - HCI-Brückenmodus (mit anderem BT-Host-Stack verbinden)
  • 3) Firmware aus dem Quellcode kompilieren (ESP32-Patching-Framework)
  • 4) BT-Host-Programme anpassen (Profile)
  • Software-Architektur des BrakTooth-Sniffers
  • Funktionsübersicht
  • Danksagungen

Vereinfachter Setup-Überblick

poc_setup

1) Installation

A. Linux-Anforderungen installieren (Ubuntu 18.04 / 20.04)
root@kitploit:~
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. Benutzerdefinierte Firmware auf ESP32 flashen

Bevor Sie den BrakTooth-Sniffer verwenden, müssen Sie eine benutzerdefinierte Firmware auf Ihr ESP32-Board hochladen:

root@kitploit:~
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.

Wichtig: Bei einigen Boards müssen Sie die BOOT-Taste gedrückt halten, um den ESP32 ordnungsgemäß in den Flash-Modus zu versetzen.

2) Verwendungshinweise

root@kitploit:~
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.

Sie können den Sniffer entweder in der Master- oder in der Slave-Rolle starten. Wenn Sie das Argument --target hinzufügen, versucht der Sniffer, eine Verbindung zu Ihrem entfernten Ziel herzustellen. Andernfalls wartet er einfach darauf, dass sich jemand mit ihm verbindet.

Schließlich erstellt --bridge-only nur das HCI-Pseudo-Terminal (/dev/pts/x), sodass der ESP32 als standardmäßiger HCI-BT-Controller fungieren kann. Sie können diese Funktion verwenden, um einen beliebigen anderen BT-Host-Stack mit dem ESP32 zu verbinden.

Beispiel 1 - Mit entferntem Ziel verbinden (Master-Rolle)
root@kitploit:~
./BTSnifferBREDR.py --port=/dev/ttyUSB0 --target=E0:D4:E8:19:C7:69 --live-terminal --live-wireshark

mode_master

Beispiel 2 - Auf BT-Verbindung warten (Slave-Rolle)
root@kitploit:~
./BTSnifferBREDR.py --port=/dev/ttyUSB0 --live-terminal --live-wireshark
Beispiel 3 - HCI-Brückenmodus (mit anderem BT-Host-Stack verbinden)
root@kitploit:~
./BTSnifferBREDR.py --port=/dev/ttyUSB0 --bridge-only --live-terminal --live-wireshark

mode_bridge_only

3) Firmware aus dem Quellcode kompilieren (ESP32-Patching-Framework)

Der Quellcode kann direkt aus dem Repository ESP32 Firmware Patching Framework wie folgt kompiliert werden:

root@kitploit:~
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

Die ESP32-Firmware-Binärdateien (firmware.bin, bootloader.bin, partitions.bin) werden nach erfolgreichem Build in den Ordner firmware kopiert. Anschließend können Sie die Firmware wie in Schritt 1.B) beschrieben flashen.

4) BT-Host-Programme anpassen (Profile)

Da der BrakTooth-Sniffer einen BT-Host-Stack zur Steuerung der Konnektivität verwendet, werden die folgenden modifizierten BlueKitchen-Beispiele verwendet:

  • host_stack/sdp_rfcomm_query - Dieses Programm initiiert eine Verbindung mit dem Slave-Gerät und versucht, SDP-Scanning und Pairing durchzuführen.
  • host_stack/spp_counter - Dieses Programm wartet auf Verbindungen und stellt eine SPP-Verbindung (serielle Schnittstelle) mit dem Master-Gerät her.

Sie können die aktuellen Programme um BT-Profile erweitern oder modifizieren, indem Sie der offiziellen Dokumentation von BlueKitchen folgen. Beachten Sie, dass der Ordner host_stack/bluekitchen/example/ bereits einige Profilbeispiele enthält.

Software-Architektur des BrakTooth-Sniffers

arch

Die benutzerdefinierte ESP32-BR/EDR-Sniffer/Injector-Firmware kommuniziert über einen USB-Seriell-Port mit dem Host-System und wartet auf den Empfang benutzerdefinierter Befehle oder HCI-Befehle. Beim Start wird eine HCI-Brücke erstellt, um das BrakTooth-eigene Protokoll von den standardmäßigen HCI-Befehlen zu trennen, die vom ESP32 gesendet oder empfangen werden. Sobald die Funktion "RX/TX-Sniffer" auf der ESP32-Firmware aktiviert ist, werden Basisband-Pakete direkt an das Skript BTSnifferBREDR.py weitergeleitet, das die geschnüffelten Pakete über das benutzerdefinierte Protokoll einfach decodiert und sie über Scapy ausgibt und/oder über Live-Capture an Wireshark sowie in den Ordner logs schreibt.

Funktionsübersicht

firmware_design

  • RX/TX-Sniffer: Erfasst Basisband-Pakete und leitet sie an den Host weiter. Unterstützte Pakete:
    • Basisband-Header
    • NULL/POLL vom entfernten Ziel
    • FHS (derzeit keine Scapy-Schicht)
    • EIR (derzeit keine Analyse)
    • ACL-Header
    • LMP
  • TX-Interception: Dies ermöglicht es dem Host-PC, TX-Pakete in Echtzeit zu modifizieren, bevor sie vom ESP32 über die Luftschnittstelle übertragen werden. Es erfordert jedoch ein ESP32-Board mit Hochgeschwindigkeits-USB wie ESP-PROG oder ESP-WROVER-KIT. Beide verfügen über einen FTD2232H-USB-zu-UART-Controller, der eine reduzierte USB-Polling-Latenz von 125us ermöglicht. (derzeit deaktiviert, leider).
  • TX-Injector: Dies ermöglicht es dem Host, BR/EDR-Pakete unmittelbar nach der BT-Paging-Prozedur und in jedem Übertragungsslot (d. h. alle 1,25 ms) zu injizieren, wobei Verzögerungen auftreten, wenn sich etwas in der internen LMP-Warteschlange des ESP32 befindet. (derzeit deaktiviert, leider).
  • RX/TX-Bypass: "Blendet" den ESP32-BT-Stack effektiv aus, sodass er nach der Paging-Prozedur keine LMP-Pakete mehr empfangen oder senden kann. Man kann dies nutzen, um eine eigenständige LMP-Zustandsmaschine auf dem Host und mit Scapy zu konstruieren 🙂. Diese Funktion könnte etwas Ähnliches ermöglichen wie das, was mit dem SweynTooth-nRF52-Dongle gemacht wurde, jedoch für BR/EDR.
  • ROM-Patcher: Installiert ROM-Hooks aus der Firmware heraus.
  • HCI IN/OUT: Standard-Kommunikationsschnittstelle mit dem BT-Host-Stack. Ein Drittanbieter-Stack wie bluekitchen.

Danksagungen

Die Analyse der Basisband-Pakete erweitert den InternalBlue-Broadcom-Wireshark-Dissector. Konkret wurde das h4bcm-Wireshark-Plugin erweitert, um einige weitere BT-Schichten und unseren benutzerdefinierten ESP32-Metadaten-Header zu unterstützen. Danke an @jiska2342.

Dank an alle folgenden Open-Source-Projekte:

  • Besonderer Dank an @Ebiroll für die Pflege des Xtensa-Moduls für Ghidra
  • @mringwal für den exzellenten Open-Source-BlueKitchen-BT-Host-Stack
  • InternalBlue-Projekt
  • Scapy-Bibliothek zur Paketmanipulation
  • Wireshark-Projekt
Tool herunterladen