Schnüffeln / Protokollieren Ihres eigenen Android-Bluetooth-Verkehrs

75

Ich habe kürzlich ein Chinesse-Gerät gekauft, das über Bluetooth mit einem Android-Telefon / Tablet verbunden ist. Da für Windows / Linux keine Anwendung verfügbar ist, möchte ich eine für den persönlichen Gebrauch erstellen.

Normalerweise stellt das Telefon eine Verbindung zum Gerät her und tauscht einige Daten aus. Ich habe den PC an das Gerät angeschlossen und in den seriellen Debugger geschaut und versucht, das Protokoll zu ermitteln (nur in eine Richtung). Das Telefon sendet nur einen Befehl an das Gerät. Aber diesmal kann ich nicht herausfinden, was es enthält.

Gibt es eine Software, mit der ich über Bluetooth gesendete Daten einsehen kann? Ich habe versucht, die App zu dekompilieren, aber sie sieht wirklich unfreundlich aus.

Vielen Dank.

peku33
quelle
2
Es ist ein Laser-Entfernungsmesser. Die Daten, die Sie davon erhalten, sind einfach d5 f0 ... ... milimiters_as_uint32 0d
peku33

Antworten:

83

Android 4.4 (Kit Kat) verfügt über eine neue Sniffing-Funktion für Bluetooth. Sie sollten es versuchen.

Wenn Sie jedoch kein Schnüffelgerät besitzen, haben Sie nicht unbedingt Pech. In vielen Fällen können wir mit einer neuen Funktion, die in Android 4.4 eingeführt wurde, positive Ergebnisse erzielen: Die Möglichkeit, alle Bluetooth-HCI-Pakete zu erfassen und in einer Datei zu speichern.

Wenn der Analyst die Erfassungsdatei durch Ausführen der zu testenden Anwendung vollständig ausgefüllt hat, kann er die von Android generierte Datei in den externen Speicher des Geräts ziehen und analysieren ( z. B. mit Wireshark ).

Sobald diese Einstellung aktiviert ist, speichert Android die Paketerfassung in /sdcard/btsnoop_hci.log, um sie vom Analysten abzurufen und zu überprüfen.

Geben Sie Folgendes ein, falls dies /sdcard/auf Ihrem Gerät nicht der richtige Pfad ist:

adb shell echo \$EXTERNAL_STORAGE

Wir können dann eine Shell öffnen und die Datei abrufen: $ adb pull /sdcard/btsnoop_hci.log und sie mit Wireshark überprüfen, genau wie ein PCAP, der zum Beispiel durch das Abhören von WiFi-Verkehr gesammelt wird. Es ist also sehr einfach und gut unterstützt:

Screenshot der Wireshark-Erfassung mit Android HCI Snoop

[Quelle]

Sie können dies aktivieren, indem Sie zu Einstellungen-> Entwickleroptionen gehen und dann das Kontrollkästchen neben "Bluetooth HCI Snoop Log" aktivieren.

Stephan Branczyk
quelle
9
@JackShultz Wenn btsnoop_hci.log nicht erstellt wird, öffnen Sie /etc/bluetooth/bt_stack.conf in einem Texteditor. Es enthält den Pfad zur Datei auf Ihrem Gerät. Für mich wurde es in /sdcard/Android/data/btsnoop_hci.log gespeichert.
Mr. Bungle
1
Ich erhalte eine Fehlermeldung: adb: Fehler: Remote-Objekt '/sdcard/btsnoop_hci.log' existiert nicht
IgorGanapolsky
1
@IgorGanapolsky adb Shell Echo \ $ EXTERNAL_STORAGE
Stephan Branczyk
3
@StephanBranczyk Diese Methode zum Abrufen von hci.log ist auf neueren Geräten (insbesondere Nexus und Pixel) möglicherweise veraltet. Sie müssen jetzt die Verknüpfung für Fehlerberichte in den Entwicklereinstellungen aktivieren, um dieses Protokoll manuell abzurufen.
IgorGanapolsky
1
Hatten Sie Glück, mit der Funktion "Fehlerbericht" Protokolle auf einem Pixel-Gerät abzurufen? Ich kann adb pulldie .logDatei nicht anzeigen oder per E-Mail erhalten. Das Ein- und Ausschalten der dev-Option hat keine Auswirkungen auf den bt_stack.confInhalt. Wurde diese Funktion in den neuesten Android-Versionen deaktiviert?
Nicolás Fantone
7

Dies kann auch dazu beitragen, den tatsächlichen Speicherort zu finden, an dem btsnoop_hci.log gespeichert wird:

adb shell "cat /etc/bluetooth/bt_stack.conf | grep FileName"
maximevince
quelle
Wenn ich versuche, diese Datei abzurufen, wird folgende Fehlermeldung angezeigt
IgorGanapolsky
Diese Konfigurationsdatei kann auch an einigen anderen Stellen gefunden werden, wie z. B. /system/etc/und/vendor/etc/
DearVolt