Ubertooth One on OSX

Ubertooth (Übertooth?) One is a USB Bluetooth dongle that allows “monitoring” mode, which allows you to locate bluetooth devices in the vecinity even though they are not “discoverable” meaning that the bluetooth devices can be discovered even though they are not broadcasting their “SSID”.

I first learned about Ubertooth on Hak5…

… and went back to watch the video from ShmooCon where it was first introduced

… and ended up at the Hak5 store and took out my credit card…

image

.. and a few days ago I got my very own Ubertooth One in the mail Smile

photo

After I got it to work on a VMWare install of BackTrack 5 I decided to see if I can’t get this baby rock on OSX as well. Don’t take it the wrong way; I really love BackTrack 5 and my machine has plenty of juice to run it on VMWare – but why do it if you don’t need to?

This is how I did:

First of, I have MacPorts installed, so if you want to follow what I am doing I suggest you do the same.

sudo port install libusb py26-pyside-tools py26-pyusb-devel

Then I had to manually download and install libbtbb:

wget http://downloads.sourceforge.net/project/libbtbb/libbtbb.0.5.tgz
tar xvf libbtb.0.5.tgz
cd libbtbb

You need to modify the Makefile. Change this line:

$(CC) -shared -Wl,-soname,$(SONAME) -o $(LIB_FILE) $(OBJECT_FILES)

to:

$(CC) -shared -Wl -install_name $(INSTALL_DIR)/$(LIB_NAME) -o $(LIB_FILE) $(OBJECT_FILES)

and comment out / remove the following line:

$(LDCONFIG)

Once you have done that you can go ahead and compile and install libbtbb:

make
sudo make install

Now when libbtbb has been installed you can go ahead and download the ubertooth source:

wget http://downloads.sourceforge.net/project/ubertooth/ubertooth-r238.tar.gz
tar xvf ubertooth-r238.tar.gz

At this stage you should be able to test the Ubertooth adapter:

cd ubertooth-r238/host/specan_ui
python specan_ui.py

And you should see something like this:

image

As the last step we go ahead and compile the Ubertooth utilities as well:

cd ../bluetooth_rxtx

The next step is to modify the Makefile. This time it is quite a few changes that needs to be made. Basically you need to declare the variables CFLAGS and LFLAGS and make sure they are used in each compile statement. Below is a unified diff of the changes made:

--- Makefile.bak    2011-05-26 05:46:11.000000000 +0200
+++ Makefile    2011-07-05 10:49:14.000000000 +0200
@@ -20,23 +20,25 @@
CC = gcc
LIBUSB = usb-1.0
LIBBTBB = btbb
+CFLAGS = -I/opt/local/include/
+LFLAGS = -L/opt/local/lib/ -rpath,/opt/local/lib
 
all: ubertooth-dump ubertooth-lap ubertooth-specan ubertooth-util ubertooth-uap
 
ubertooth-dump: ubertooth-dump.c ubertooth.c ubertooth.h
-    $(CC) -l $(LIBUSB) -l $(LIBBTBB) ubertooth-dump.c ubertooth.c -o ubertooth-dump
+    $(CC) $(CFLAGS) $(LFLAGS) -l $(LIBUSB) -l $(LIBBTBB) ubertooth-dump.c ubertooth.c -o ubertooth-dump
 
ubertooth-lap: ubertooth-lap.c ubertooth.c ubertooth.h
-    $(CC) -l $(LIBUSB) -l $(LIBBTBB) ubertooth-lap.c ubertooth.c -o ubertooth-lap
+    $(CC) $(CFLAGS) $(LFLAGS) -l $(LIBUSB) -l $(LIBBTBB) ubertooth-lap.c ubertooth.c -o ubertooth-lap
 
ubertooth-specan: ubertooth-specan.c ubertooth.c ubertooth.h
-    $(CC) -l $(LIBUSB) -l $(LIBBTBB) ubertooth-specan.c ubertooth.c -o ubertooth-specan
+    $(CC) $(CFLAGS) $(LFLAGS) -l $(LIBUSB) -l $(LIBBTBB) ubertooth-specan.c ubertooth.c -o ubertooth-specan
 
ubertooth-util: ubertooth-util.c ubertooth.c ubertooth.h
-    $(CC) -l $(LIBUSB) -l $(LIBBTBB) ubertooth-util.c ubertooth.c -o ubertooth-util
+    $(CC) $(CFLAGS) $(LFLAGS) -l $(LIBUSB) -l $(LIBBTBB) ubertooth-util.c ubertooth.c -o ubertooth-util
 
ubertooth-uap: ubertooth-uap.c ubertooth.c ubertooth.h
-    $(CC) -l $(LIBUSB) -l $(LIBBTBB) ubertooth-uap.c ubertooth.c -o ubertooth-uap
+    $(CC) $(CFLAGS) $(LFLAGS) -l $(LIBUSB) -l $(LIBBTBB) ubertooth-uap.c ubertooth.c -o ubertooth-uap
 
clean:
     rm -f ubertooth-dump ubertooth-lap ubertooth-specan ubertooth-util ubertooth-uap *.o

Once you have modified the Makefile you can go ahead and compile the tools:

make

Once the tools are compiled you can go ahead and run ubertooth-lap to check to see if you see any data:

./ubertooth-lap

Now that we can see that it is working we can start getting it to play nice with other tools like Kismet and Wireshark

To be continued in another blog post

8 comments:

Jordan said...

Thanks for the info, but is there some secret to getting the specan ui running? I seem to be having trouble running Qt.

Traceback (most recent call last):
File "ubertooth-specan-ui", line 29, in
from PySide import QtCore, QtGui
File "/Library/Python/2.6/site-packages/PySide/__init__.py", line 2, in
import private
File "/Library/Python/2.6/site-packages/PySide/private.py", line 2, in
from QtCore import __moduleShutdown
ImportError: dlopen(/Library/Python/2.6/site-packages/PySide/QtCore.so, 2): no suitable image found. Did find:
/Library/Python/2.6/site-packages/PySide/QtCore.so: mach-o, but wrong architecture

Anonymous said...

Good information Michael, But i have a problem getting it to run under VM my selfe, I know Ossman is trying to debug this, If you have a solution how to get it up and running under VM could you please post it at Project page? I would really appriciate it and i know there are sevral others out there struggelig to get it to work in BT Vmware

oceanjt said...

First, thanks! This rocks.

Have you tried getting it working in LION yet? I'm having horrible qt4 issues. Macports and Homebrew both epic fail the install. Just wondering if you have had better luck.

Michael Boman said...

@Jordan: Sorry for the late reply, vacation got in the way. I have py26-pyside @1.0.4_0 (active) installed which seems to be the missing dependency. Try that and see how it works out for you.

Michael Boman said...

@oceanjt: I have now upgraded to Lion and it works, as far as I can tell, great.

Anonymous said...

Michael
How did you manage to get this to run under LION i get a failed to import usb.core error

Nic said...

im in the same boat as Michael, failed to import usb.core
other than that i followed your steps multiple times

i've made sure that i had all the dependencies installed.

Travis said...

Traceback (most recent call last):
File "specan_ui.py", line 24, in
import usb.core
ImportError: No module named usb.core


OSX LION

Post a Comment