<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://elvis.hcw.ac.at/wiki/index.php?action=history&amp;feed=atom&amp;title=Sphero_BB-8_Robot%3A_Bluetooth_Connection_Sniffing</id>
	<title>Sphero BB-8 Robot: Bluetooth Connection Sniffing - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://elvis.hcw.ac.at/wiki/index.php?action=history&amp;feed=atom&amp;title=Sphero_BB-8_Robot%3A_Bluetooth_Connection_Sniffing"/>
	<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Sphero_BB-8_Robot:_Bluetooth_Connection_Sniffing&amp;action=history"/>
	<updated>2026-09-10T17:38:28Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Sphero_BB-8_Robot:_Bluetooth_Connection_Sniffing&amp;diff=5745&amp;oldid=prev</id>
		<title>Bnagl: Created the Documentation about the Sphero BB-8 Robot</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Sphero_BB-8_Robot:_Bluetooth_Connection_Sniffing&amp;diff=5745&amp;oldid=prev"/>
		<updated>2020-12-29T17:17:04Z</updated>

		<summary type="html">&lt;p&gt;Created the Documentation about the Sphero BB-8 Robot&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This documentation is about the basics of Bluetooth hacking performed on the Sphero BB-8 Robot with GATT Tool and Bluetooth Connection Sniffing with the Ubertooth One. &lt;br /&gt;
All results were obtained using GATT Tool or Bluetooth Connection Sniffing with Ubertooth and analyzed with Wireshark.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Linux distribution (Ubuntu 20.04.1 desktop amd64 was used for this documentation)&lt;br /&gt;
* Ubertooth One&lt;br /&gt;
* Wireshark&lt;br /&gt;
* hcitool&lt;br /&gt;
* gatttool&lt;br /&gt;
* bluetooth-btle&lt;br /&gt;
* Sphero BB-8 App&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
Ensure that the Bluetooth service is running&lt;br /&gt;
 sudo service bluetooth status&lt;br /&gt;
&lt;br /&gt;
Check if hcitool finds your Bluetooth sender&lt;br /&gt;
 hcitool dev&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039; On some bluetooth dongles you need to enable the LE mode if you encounter problems while scanning or connecting.&lt;br /&gt;
 btmgmt le on&lt;br /&gt;
&lt;br /&gt;
=== Retrieve the Bluetooth Address of the victim device via hcitool ===&lt;br /&gt;
To retrieve the address of the targeted device you need to use hcitool to scan for bluetooth devices.&lt;br /&gt;
&lt;br /&gt;
 hcitool lescan&lt;br /&gt;
 LE Scan ...&lt;br /&gt;
 C0:BF:30:97:52:B3 (unknown)&lt;br /&gt;
 C0:BF:30:97:52:B3 BB-52B3&lt;br /&gt;
&lt;br /&gt;
=== Connect to the target device and read its characteristics with GATT Tool ===&lt;br /&gt;
Characteristics can hint good starting points so we try to connect to the target device with GATT Tool and read its characteristics.&lt;br /&gt;
 sudo gatttool -t random -I &amp;lt;Bluetooth interface&amp;gt; -b &amp;lt;BD_ADDR&amp;gt;&lt;br /&gt;
 connect&lt;br /&gt;
&lt;br /&gt;
Depending on which bluetooth device you want to use you need to enter the name of the interface, you can get the name of your Bluetooth interfaces using hcitool.&lt;br /&gt;
&lt;br /&gt;
Connecting to the Device in interactive mode&lt;br /&gt;
 sudo gatttool -t random -I hci0 -b C0:BF:30:97:52:B3&lt;br /&gt;
 connect&lt;br /&gt;
&lt;br /&gt;
&amp;quot;hci0&amp;quot; is the Bluetooth dongle name and can differ on your device.&lt;br /&gt;
When connected we can interact with the device. Now read the Characteristics of the target.&lt;br /&gt;
&lt;br /&gt;
 characteristics&lt;br /&gt;
 handle: 0x0002, char properties: 0x02, char value handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb&lt;br /&gt;
 handle: 0x0004, char properties: 0x02, char value handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb&lt;br /&gt;
 handle: 0x0006, char properties: 0x02, char value handle: 0x0007, uuid: 00002a04-0000-1000-8000-00805f9b34fb&lt;br /&gt;
 handle: 0x0009, char properties: 0x22, char value handle: 0x000a, uuid: 00002a05-0000-1000-8000-00805f9b34fb&lt;br /&gt;
 handle: 0x000d, char properties: 0x0c, char value handle: 0x000e, uuid: 22bb746f-2ba1-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x000f, char properties: 0x10, char value handle: 0x0010, uuid: 22bb746f-2ba6-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x0013, char properties: 0x0a, char value handle: 0x0014, uuid: 22bb746f-2bb1-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x0016, char properties: 0x08, char value handle: 0x0017, uuid: 22bb746f-2bb2-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x0019, char properties: 0x1e, char value handle: 0x001a, uuid: 22bb746f-2bb6-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x001d, char properties: 0x0e, char value handle: 0x001e, uuid: 22bb746f-2bb7-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x0020, char properties: 0x02, char value handle: 0x0021, uuid: 22bb746f-2bb8-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x0023, char properties: 0x02, char value handle: 0x0024, uuid: 22bb746f-2bb9-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x0026, char properties: 0x02, char value handle: 0x0027, uuid: 22bb746f-2bba-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x0029, char properties: 0x0c, char value handle: 0x002a, uuid: 22bb746f-2bbd-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x002b, char properties: 0x0a, char value handle: 0x002c, uuid: 22bb746f-2bbe-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x002e, char properties: 0x0e, char value handle: 0x002f, uuid: 22bb746f-2bbf-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x0031, char properties: 0x0e, char value handle: 0x0032, uuid: 22bb746f-3bba-7554-2d6f-726568705327&lt;br /&gt;
 handle: 0x0035, char properties: 0x0a, char value handle: 0x0036, uuid: 00001013-d102-11e1-9b23-00025b00a5a5&lt;br /&gt;
 handle: 0x0037, char properties: 0x08, char value handle: 0x0038, uuid: 00001017-d102-11e1-9b23-00025b00a5a5&lt;br /&gt;
 handle: 0x0039, char properties: 0x12, char value handle: 0x003a, uuid: 00001014-d102-11e1-9b23-00025b00a5a5&lt;br /&gt;
 handle: 0x003d, char properties: 0x02, char value handle: 0x003e, uuid: 00002a27-0000-1000-8000-00805f9b34fb&lt;br /&gt;
 handle: 0x003f, char properties: 0x02, char value handle: 0x0040, uuid: 00002a25-0000-1000-8000-00805f9b34fb&lt;br /&gt;
 handle: 0x0042, char properties: 0x02, char value handle: 0x0043, uuid: 00002a24-0000-1000-8000-00805f9b34fb&lt;br /&gt;
 handle: 0x0044, char properties: 0x02, char value handle: 0x0045, uuid: 00002a29-0000-1000-8000-00805f9b34fb&lt;br /&gt;
 handle: 0x0046, char properties: 0x02, char value handle: 0x0047, uuid: 00002a26-0000-1000-8000-00805f9b34fb&lt;br /&gt;
&lt;br /&gt;
=== Analyzing the Characteristics with the GATT Tool ===&lt;br /&gt;
These are the Characteristics that could be analyzed.&lt;br /&gt;
&lt;br /&gt;
[[File:BB8Characteristics.PNG|500px]]&lt;br /&gt;
&lt;br /&gt;
The Properties must be read as the following chart shows:&lt;br /&gt;
&lt;br /&gt;
[[File:CharacterProperties.png|500px]]&lt;br /&gt;
&lt;br /&gt;
==== [1] Read the Device Name ====&lt;br /&gt;
&lt;br /&gt;
Read the device name:&lt;br /&gt;
 char-read-hnd 3&lt;br /&gt;
 Characteristic value/descriptor: 42 42 2d 35 32 42 33&lt;br /&gt;
&lt;br /&gt;
Hex to ASCII:&lt;br /&gt;
 42 42 2d 35 32 42 33 --&amp;gt; BB-52B3&lt;br /&gt;
&lt;br /&gt;
==== [2] presumably Writing the direction ====&lt;br /&gt;
When commanding the robot to move via the App, a write command gets send to the 0x000e handle. Under the circumstances I assume this is the direction to move.&lt;br /&gt;
 char-write-cmd 0e 820958580000009d5870010000d089051b000000&lt;br /&gt;
 Error: Characteristic Write Request failed: Attribute requires authorization before read/write&lt;br /&gt;
&lt;br /&gt;
Couldn&amp;#039;t get it to work. Requires authorization but increasing the sec-level in GAT Tool resulted in another error.&lt;br /&gt;
&lt;br /&gt;
==== [3] presumable Getting Notified about location ====&lt;br /&gt;
Everytime the robot moves, it sends a notfication to the master. Under the circumstances I assume this is the current location.&lt;br /&gt;
 Notification handle = 0x0010 value: ff fe 01 00 02 02 fa&lt;br /&gt;
&lt;br /&gt;
==== [4] Read the Hardware Revision String ====&lt;br /&gt;
&lt;br /&gt;
Read the Hardware Revision String:&lt;br /&gt;
 char-read-hnd 3e&lt;br /&gt;
 Characteristic value/descriptor: 41 00 00 00 00 00&lt;br /&gt;
&lt;br /&gt;
Hex to ASCII&lt;br /&gt;
 41 00 00 00 00 00 --&amp;gt; A&lt;br /&gt;
&lt;br /&gt;
==== [5] Read the Bluetooth Address ====&lt;br /&gt;
Read the Bluetooth Address:&lt;br /&gt;
 char-read-hnd 40&lt;br /&gt;
 Characteristic value/descriptor: 43 30 3a 42 46 3a 33 30 3a 39 37 3a 35 32 3a 42 33&lt;br /&gt;
&lt;br /&gt;
Hex to ASCII&lt;br /&gt;
 43 30 3a 42 46 3a 33 30 3a 39 37 3a 35 32 3a 42 33 --&amp;gt; C0:BF:30:97:52:B3&lt;br /&gt;
&lt;br /&gt;
==== [6] Read the Model Number ====&lt;br /&gt;
Read the Model Number:&lt;br /&gt;
 char-read-hnd 43&lt;br /&gt;
 Characteristic value/descriptor: 33 30 00&lt;br /&gt;
&lt;br /&gt;
Hex to ASCII&lt;br /&gt;
 33 30 00 --&amp;gt; 30&lt;br /&gt;
&lt;br /&gt;
==== [7] Read the Manufactor Name String ====&lt;br /&gt;
Read the Manufactor Name String:&lt;br /&gt;
 char-read-hnd 45&lt;br /&gt;
 Characteristic value/descriptor: 53 70 68 65 72 6f &lt;br /&gt;
&lt;br /&gt;
Hex to ASCII&lt;br /&gt;
 53 70 68 65 72 6f  --&amp;gt; Sphero&lt;br /&gt;
&lt;br /&gt;
==== [8] Read the Firmware Revision String ====&lt;br /&gt;
Read the Firmware Revision String:&lt;br /&gt;
 char-read-hnd 47&lt;br /&gt;
 Characteristic value/descriptor: 31 2e 34 37 &lt;br /&gt;
&lt;br /&gt;
Hex to ASCII&lt;br /&gt;
 31 2e 34 37 --&amp;gt; 1.47&lt;br /&gt;
&lt;br /&gt;
=== Sniffing with Wireshark ===&lt;br /&gt;
If you want to sniff BLE connection then please follow this guide: [[Bluetooth Sniffing with Ubertooth: A Step-by-step guide]]&lt;br /&gt;
For this particullary device the ATT Protocol packets are interesting. You can filter them in Wireshark like shown in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:WireSharkBB8Capture.PNG|700px]] &lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[Ubertooth One, 2.4 GHz wireless development platform]]&lt;br /&gt;
* [[Sphero BB8 robot]]&lt;br /&gt;
* Bluetooth device that supports BLE&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Bluetooth Sniffing with Ubertooth: A Step-by-step guide]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>Bnagl</name></author>
	</entry>
</feed>