An Android app for analyzing Bluetooth Low Energy packet captures from BTSnoop logs
Explore the docs »
Report Bug
·
Request Feature
Table of Contents
BTLeTool is an Android application designed for analyzing Bluetooth Low Energy communications captured in BTSnoop log files. It provides a user-friendly interface to view and analyze BLE packets, making it easier to debug and reverse engineer BLE communications on Android devices.
BTLeTool uses the btsnoop_parser library
✨ Intuitive User Interface
- Clean Material Design 3 interface
- Drag and drop packet reordering
- Swipe to delete with undo functionality
- Dark mode support
📱 Android Integration
- Native Android file picker integration
- Support for standard BTSnoop log files
- Real-time packet parsing and display
🔍 Comprehensive Protocol Support
- HCI (Host Controller Interface)
- L2CAP (Logical Link Control and Adaptation Protocol)
- ATT (Attribute Protocol) packet parsing
- MAC address tracking and display
- Packet direction indicators
- Android Studio Electric Eel or newer
- Android SDK 34 or higher
- JDK 11 or higher
- Android device running Android 14 (API 34) or higher
- Clone the repository:
git clone https://github.com/NullString1/BTLeTool.git
-
Open the project in Android Studio
-
Build and run:
./gradlew assembleDebug
- Install the app on your Android device
- Enable developer options and Bluetooth HCI snoop logging on your device
- After capturing some Bluetooth traffic, open developer settings again and export a bug report
- Wait for the bug report to finish, click from notification and share to yourself, then extract
btsnoop_hci.log
from(zip)/FS/data/log/bt/
- Run BTLeTool
- Tap "Open BTSnoop Log" and select your captured log file
- View and analyze the captured packets:
- Each packet shows timestamp, direction, and data
- Drag packets to reorder them
- Swipe to remove unwanted packets
- View MAC addresses of connected devices
- Commands (0x01) - No parsing yet
- Events (0x04) - Currently only parsed for connection handle tracking to display MAC address of packets
- ACL Data (0x02) - Parsed to show GATT messages
- SCO Data (0x03) - No parsing yet
- Write Command (0x52) - Parsed as writing to GATT characteristic
- Handle Value Notification (0x1B) - Parsed as message back from other device
- Timestamp
- Direction (sent/received)
- MAC addresses
- Raw packet data
- L2CAP and ATT headers
Contributions are welcome! Here's how you can help:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.