Setting Up Ubertooth on macOS for Bluetooth Hacking

From Elvis Wiki
Revision as of 18:32, 3 December 2024 by AMaksimovic (talk | contribs)

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

References