Difference between revisions of "Setting Up Ubertooth on macOS for Bluetooth Hacking"
AMaksimovic (talk | contribs) |
AMaksimovic (talk | contribs) |
||
| Line 18: | Line 18: | ||
== Description == | == Description == | ||
=== Step 1 - | === Step 1 - Install homebrew === | ||
Enter these commands in the shell | Enter these commands in the shell | ||
| Line 34: | Line 34: | ||
python3.12 -m venv myenv | python3.12 -m venv myenv | ||
source myenv/bin/activate | source myenv/bin/activate | ||
=== Step 3 - Install libusb, wget, cmake, pkg-config === | |||
Enter these commands in the shell | |||
brew install libusb wget cmake pkg-config | |||
=== Step 4 - Install the Bluetooth baseband library === | |||
Enter these commands in the shell | |||
wget https://github.com/greatscottgadgets/libbtbb/archive/2020-12-R1.tar.gz -O libbtbb-2020-12-R1.tar.gz | |||
tar -xf libbtbb-2020-12-R1.tar.gz | |||
cd libbtbb-2020-12-R1 | |||
mkdir build | |||
cd build | |||
cmake .. | |||
make | |||
sudo make install | |||
If errors occur with installing distutils switch to setuptools instead. | |||
pip install setuptools | |||
After installing the setuptools also change the "from distutils import setup" line in the setup.py and setup.py.in file if necessary. | |||
from setuptools import setup | |||
If you get errors regarding the environment variables showing that your library wasnt found you need to set the library path via the MacOs's dynamic linker. | |||
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH | |||
or make it persistent in shell configurations: | |||
~/.zshrc | |||
=== Step 5 - Install the Ubertooth repository === | |||
Enter these commands in the shell | |||
wget https://github.com/greatscottgadgets/ubertooth/releases/download/2020-12-R1/ubertooth-2020-12-R1.tar.xz | |||
tar -xf ubertooth-2020-12-R1.tar.xz | |||
cd ubertooth-2020-12-R1/host | |||
mkdir build | |||
cd build | |||
cmake .. | |||
make | |||
sudo make install | |||
=== Step 6 - Install Crackle === | |||
Enter these commands in the shell | |||
python3.12 -m venv myenv | |||
source myenv/bin/activate | |||
=== Step 7 - Install bleak library === | |||
Enter these commands in the shell | |||
python3.12 -m venv myenv | |||
source myenv/bin/activate | |||
=== Step 8 - Test Ubertooth One === | |||
Enter these commands in the shell | |||
python3.12 -m venv myenv | |||
source myenv/bin/activate | |||
=== Step 9 - Read characteristics === | |||
Enter these commands in the shell | |||
python3.12 -m venv myenv | |||
source myenv/bin/activate | |||
=== Step 10 - Subscribe to characteristics === | |||
Enter these commands in the shell | |||
python3.12 -m venv myenv | |||
source myenv/bin/activate | |||
=== Step 11 - Manipulate characteristics === | |||
Enter these commands in the shell | |||
python3.12 -m venv myenv | |||
source myenv/bin/activate | |||
Revision as of 18:32, 3 December 2024
Summary
This is a step-by-step guide on how to sniff Bluetooth Low Energy (BLE) packets between a Polar Vantage Smartwatch and a phone using the Ubertooth One. It will go into detail on the setup on a MacBook Air with MacOS using a python environment for the libraries that are used for the setup. Additionally every step of the actual sniff will be outlined. This guide is based on the seminar paper "Smartwatch Hacking Attack" that was written within the FH-course "Selected IT-Security Chapters".
Requirements
- Hardware tools: Ubertooth One: Firmware version: 2020-12-R1 (API:1.07)
- Smartwatch: Polar Vantage M
- Phone: Samsung Galaxy J3
- Unix-based Operating System: macOS (macOS Sequoia 15.1.1), on a MacBook Air with an Apple M1 chip.
- Virtual Environment: Python Environment: Python 3.12
- Packages: libusb, wget, cmake, pkg-config, setuptools, pyqt5, numpy
- Libraries: libbtbb, bleak
- Software Tools: Crackle
These setup steps for the Ubertooth tool are also summarized here Ubertooth - Build Guide - https://ubertooth.readthedocs.io/en/latest/build_guide.html.
Description
Step 1 - Install homebrew
Enter these commands in the shell
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" echo bar echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc eval "$(/opt/homebrew/bin/brew shellenv)"
Step 2 - Install Python Environment
Enter these commands in the shell
python3.12 -m venv myenv source myenv/bin/activate
Step 3 - Install libusb, wget, cmake, pkg-config
Enter these commands in the shell
brew install libusb wget cmake pkg-config
Step 4 - Install the Bluetooth baseband library
Enter these commands in the shell
wget https://github.com/greatscottgadgets/libbtbb/archive/2020-12-R1.tar.gz -O libbtbb-2020-12-R1.tar.gz tar -xf libbtbb-2020-12-R1.tar.gz cd libbtbb-2020-12-R1 mkdir build cd build cmake .. make sudo make install
If errors occur with installing distutils switch to setuptools instead.
pip install setuptools
After installing the setuptools also change the "from distutils import setup" line in the setup.py and setup.py.in file if necessary.
from setuptools import setup
If you get errors regarding the environment variables showing that your library wasnt found you need to set the library path via the MacOs's dynamic linker.
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
or make it persistent in shell configurations:
~/.zshrc
Step 5 - Install the Ubertooth repository
Enter these commands in the shell
wget https://github.com/greatscottgadgets/ubertooth/releases/download/2020-12-R1/ubertooth-2020-12-R1.tar.xz tar -xf ubertooth-2020-12-R1.tar.xz cd ubertooth-2020-12-R1/host mkdir build cd build cmake .. make sudo make install
Step 6 - Install Crackle
Enter these commands in the shell
python3.12 -m venv myenv source myenv/bin/activate
Step 7 - Install bleak library
Enter these commands in the shell
python3.12 -m venv myenv source myenv/bin/activate
Step 8 - Test Ubertooth One
Enter these commands in the shell
python3.12 -m venv myenv source myenv/bin/activate
Step 9 - Read characteristics
Enter these commands in the shell
python3.12 -m venv myenv source myenv/bin/activate
Step 10 - Subscribe to characteristics
Enter these commands in the shell
python3.12 -m venv myenv source myenv/bin/activate
Step 11 - Manipulate characteristics
Enter these commands in the shell
python3.12 -m venv myenv source myenv/bin/activate
Used Hardware
Device to be used with this documentation Maybe another device to be used with this documentation
Courses
- A course where this documentation was used (2017, 2018)
- Another one (2018)