Ir al contenido

Ubertooth

  • Hardware: Ubertooth One board + USB cable
  • Kernel support: Linux with libusb support
  • Drivers: libusb-1.0 library (Linux: apt-get install libusb-1.0-0-dev)
  • Connection: Plug into USB port on Linux/Mac machine
# List connected Ubertooth devices
ubertooth-util -u

# Display device info and serial number
ubertooth-util -i

# Check board version and firmware date
ubertooth-util -d
  • Keep antenna away from high-RF interference areas
  • Place device on non-conductive surface
  • Maintain 6+ inches clearance from WiFi routers
  • Use external antenna for better range (Ubertooth has internal antenna)
# Display firmware version and build date
ubertooth-util -d

# Compare with latest release
git clone https://github.com/greatscottgadgets/ubertooth.git
cd ubertooth/firmware
git log --oneline | head -5
# Clone Ubertooth repository
git clone https://github.com/greatscottgadgets/ubertooth.git
cd ubertooth/firmware

# Build firmware (requires arm-none-eabi-gcc)
make

# Flash to device (puts device in DFU mode)
ubertooth-util -f build/ubertooth_usb.elf

# Verify update
ubertooth-util -d
# Enter DFU mode manually if flashing fails
# Hold DFU button while plugging in USB

# List devices in DFU mode
dfu-util -l

# Restore from binary backup
dfu-util -D ubertooth_usb.dfu -d 1d50:402b -a 0
# Basic Bluetooth Classic packet capture
ubertooth-rx

# Capture with specific channel hop (37-39 are BLE advertising)
ubertooth-rx -c 37

# Capture and save to PCAP file
ubertooth-rx -o capture.pcap

# Capture with verbose output (show packet details)
ubertooth-rx -v

# Set LAP (Lower Address Part) to follow specific device
ubertooth-rx -l 0x123456
# Use btbb tools with Ubertooth output
ubertooth-rx -o - | wireshark -k -i -

# Capture to file and analyze offline
ubertooth-rx -o capture.pcap

# Convert pcap to standard Bluetooth format
tcpdump -r capture.pcap -w bluetooth.pcap
# Scan for Bluetooth Classic devices (Inquiry scan)
ubertooth-rx -i

# Follow specific device by LAP (requires knowing LAP)
ubertooth-rx -l 0x9e8b33

# Monitor frequency hopping sequence
ubertooth-rx -f

# Capture with correlation (improves reception)
ubertooth-rx -c
# Basic BLE sniffing (monitors advertising channels 37-39)
ubertooth-btle

# Sniff specific BLE channel
ubertooth-btle -c 37

# Capture to PCAP file
ubertooth-btle -o ble_capture.pcap

# Verbose output with RSSI and timing info
ubertooth-btle -v

# Follow specific BLE device by address
ubertooth-btle -a 001122aabbcc

# Hop with connected device (requires sync)
ubertooth-btle -s
# Monitor advertisements from specific manufacturer
ubertooth-btle -f apple

# Capture only iBeacon advertisements
ubertooth-btle -f ibeacon

# Follow BLE connection establishment
ubertooth-btle -v -o connect.pcap

# Log RSSI for signal strength analysis
ubertooth-btle -o signal.pcap
# Channel 37 (2402 MHz)
ubertooth-btle -c 37

# Channel 38 (2426 MHz)
ubertooth-btle -c 38

# Channel 39 (2480 MHz)
ubertooth-btle -c 39

# Cycle through all three advertising channels
ubertooth-btle  # Default behavior
# Basic spectrum analysis (2.4 GHz ISM band)
ubertooth-specan

# Save spectrum data to file
ubertooth-specan -o spectrum.data

# Display power levels across frequencies
ubertooth-specan -v

# Analyze specific frequency range
ubertooth-specan -s 2402 -e 2480

# Real-time graphing (requires gnuplot)
ubertooth-specan | gnuplot
# Long-duration spectrum capture to identify interferers
ubertooth-specan -o interference.data

# Check for WiFi channel overlap (1-6 MHz spacing)
# WiFi channels 1-13 overlap with Bluetooth band

# Monitor specific frequencies
ubertooth-specan -s 2412 -e 2472  # WiFi channels
ubertooth-specan -s 2402 -e 2480  # Full Bluetooth band
# Scan for Bluetooth Classic devices (requires active inquiry)
sudo hcitool scan

# Discover BLE devices with Ubertooth
ubertooth-btle -v

# Save discovered device addresses
ubertooth-btle -v -o devices.pcap
# Monitor all traffic without connecting
ubertooth-rx

# Capture specific device class (hands-free, audio, etc)
ubertooth-rx -v

# Filter by signal strength (RSSI)
ubertooth-btle -v  # Shows RSSI in output
# Capture packets and extract BD addresses
ubertooth-btle -v -o capture.pcap
tshark -r capture.pcap -T fields -e btle.bd_addr

# Parse Bluetooth Classic addresses
ubertooth-rx -o classic.pcap
tshark -r classic.pcap -T fields -e btbb.bd_addr
# Capture BLE connection setup
ubertooth-btle -v -o connection.pcap

# Monitor Bluetooth Classic connection
ubertooth-rx -v -o pairing.pcap

# Log timing information for analysis
ubertooth-btle -v
# Capture hopping pattern from established connection
ubertooth-btle -v -s

# Follow Bluetooth Classic hop sequence
ubertooth-rx -f -v

# Extract hop values for offline analysis
ubertooth-rx -v | grep -i hop
# Monitor connection interval (BLE)
ubertooth-btle -v  # Shows in output

# Check supervision timeout values
ubertooth-btle -v -o params.pcap

# Analyze packet timing for latency
tshark -r capture.pcap -Y btle -T fields -e frame.time_delta
# Export Bluetooth Classic to PCAP
ubertooth-rx -o classic_capture.pcap

# Export BLE to PCAP
ubertooth-btle -o ble_capture.pcap

# Verify PCAP file validity
file classic_capture.pcap
tcpdump -r classic_capture.pcap -c 10
# Open captured PCAP in Wireshark
wireshark classic_capture.pcap &

# Live capture with Wireshark (real-time display)
ubertooth-rx -o - | wireshark -k -i -

# BLE capture in Wireshark
ubertooth-btle -o - | wireshark -k -i -

# Filter Bluetooth packets in Wireshark
# Display filter: btbb || btle
# Advanced filtering: btle.bd_addr == 00:11:22:aa:bb:cc
# Extract specific fields from PCAP
tshark -r capture.pcap -T fields -e btle.bd_addr -e btle.advertising_address

# Count packets by type
tshark -r capture.pcap -T fields -e btle.pdu_type | sort | uniq -c

# Filter and export specific packets
tshark -r capture.pcap -Y "btle.advertising_address" -w filtered.pcap

# Statistical analysis
tshark -r capture.pcap -q -z io,stat,0
# Capture BLE pairing traffic
ubertooth-btle -v -o pairing.pcap

# Monitor Legacy Pairing (Bluetooth Classic)
ubertooth-rx -v -o legacy_pair.pcap

# Save pairing keys from capture (requires Wireshark)
wireshark pairing.pcap
# Capture Temporary Key (TK) exchange
ubertooth-btle -v

# Log Long Term Key (LTK) distribution
ubertooth-btle -v -o ltk.pcap

# Monitor Out-of-Band (OOB) authentication
ubertooth-btle -v
# Identify pairing method in capture
tshark -r pairing.pcap -Y btle.advertising

# Check for security features in pairing
tshark -r pairing.pcap -T fields -e btle.security

# Analyze pairing failure/timeout
ubertooth-btle -v
# Capture unencrypted BLE traffic
ubertooth-btle -v -o unenc.pcap

# Monitor Bluetooth Classic without encryption
ubertooth-rx -v

# Identify encrypted vs unencrypted packets
tshark -r capture.pcap -Y "btle.encrypted == 0"
# Capture pairing process for key recovery
ubertooth-btle -v -o keys.pcap

# Monitor LTK distribution phase
ubertooth-btle -v

# Export keys for offline analysis
tshark -r keys.pcap -T fields -e btle.ltk
# Monitor signal disruption patterns
ubertooth-specan -o jam.data

# Detect frequency hopping interruption
ubertooth-rx -f -v

# Analyze packet loss indicators
ubertooth-btle -v
# Capture command sequences
ubertooth-btle -v -o commands.pcap

# Record packet timing for replay
tshark -r commands.pcap -T fields -e frame.time_epoch

# Identify packet structure for modification
ubertooth-btle -v | grep -i "length\|opcode"
# Capture GATT characteristic discovery
ubertooth-btle -v -o gatt.pcap

# Monitor service UUID scanning
tshark -r gatt.pcap -Y btle.advertising

# Extract GATT write operations
tshark -r gatt.pcap -T fields -e btle.access_address
# Start live capture with Wireshark display
ubertooth-rx -o - | wireshark -k -i -

# BLE live capture
ubertooth-btle -o - | wireshark -k -i -

# Set Wireshark to pause on start (for filter setup)
wireshark &
# Then use File > Capture Options > Interface
# Display only Bluetooth packets
btbb || btle

# Filter by address
btle.bd_addr == 00:11:22:aa:bb:cc

# Show only advertising packets
btle.pdu_type == 0

# Display connection requests
btle.pdu_type == 5

# Show encrypted packets only
btle.encrypted == 1

# Monitor specific GATT UUIDs
btatt.uuid == 180a  # Device Information Service
# Start Kismet with Bluetooth datasource
kismet -c datasource=ubertooth:type=btle

# Configure Ubertooth in kismet.conf
echo "source=ubertooth:type=btle" >> kismet.conf

# Start Kismet daemon
kismetd
# View detected BLE devices
kismet_client

# Export Kismet database (sqlite)
sqlite3 kismet.db "SELECT * FROM devices"

# Map Bluetooth device locations
kismet_client -n  # Netxml export
# Check USB connection
lsusb | grep 1d50

# List Ubertooth devices
ubertooth-util -u

# Reset device
ubertooth-util -r

# Check libusb installation
ldconfig -p | grep usb
# Verify firmware integrity
ubertooth-util -d

# Check for compilation errors
cd ubertooth/firmware && make clean && make

# Restore to known-good version
git checkout v1.0.0
# Check signal strength
ubertooth-btle -v

# Adjust position relative to target device
# Move Ubertooth closer or reposition antenna

# Verify antenna connection
# Check internal/external antenna setting in hardware

# Scan for interference
ubertooth-specan
# Add udev rule for Ubertooth
sudo cp ubertooth/host/ubertooth.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

# Alternative: run with sudo
sudo ubertooth-btle

# Check device permissions
ls -la /dev/bus/usb/*/
ToolPurposeOutput
ubertooth-utilDevice management & infoFirmware version, serial
ubertooth-rxBluetooth Classic capturePCAP file or live display
ubertooth-btleBLE sniffingPCAP file or live packets
ubertooth-specanSpectrum analysisFrequency power levels
btbbBaseband analysisPacket decode tools