OTACracker is a Flutter 3.29 BLE smartwatch reverse-engineering and OTA workbench for Android 10+.
It provides:
- BLE smartwatch scanning with RSSI, keyword detection, history, and reconnect staging
- GATT service and characteristic exploration with read/write/notify tooling
- Live BLE packet capture, hex/ASCII viewing, export, and replay
- OTA/resource upload with chunking, retries, MTU tuning, progress, and optional ACK waiting
- Firmware metadata analysis with signatures, entropy, and embedded-string inspection
- Watch-face resource packaging from PNG/JPG/BMP inputs into OTA-stageable bundles
- Session saving, topology export, and runtime log export
The app only interacts with exposed BLE interfaces.
It does not attempt to bypass:
- secure boot
- signature validation
- encrypted OTA verification
- firmware authentication
Uploads only work when the target device already exposes a legitimate writable BLE path for firmware or resource transfer.
Key application modules live under lib/:
core/shared theme, constants, routingproviders/Riverpod-backed view modelsrepositories/BLE, settings, session persistenceble/protocol heuristics and UUID catalogota/transfer enginewatchface/resource packaginganalyzers/firmware analysisscreens/production UI surfaceswidgets/shared cyber-style UI building blocks
- Install Flutter
3.29.3or a compatible stable release with Dart3.7.2+. - Verify Android SDK 35 is installed.
- Run:
flutter pub getRun the app on an Android device with BLE enabled:
flutter runStatic analysis:
flutter analyzeDebug APK:
flutter build apk --debugRelease APK:
flutter build apk --releaseThe generated APK will be written to:
build/app/outputs/flutter-apk/app-debug.apkbuild/app/outputs/flutter-apk/app-release.apk
- The app requests Android 12+ Bluetooth runtime permissions and Android 10+ location permission for scan compatibility.
flutter_blue_plusrequires an explicit license mode. Toggle commercial mode from the in-app settings if your usage requires it.- Passive HCI sniffing is not exposed by the Flutter BLE stack; packet capture in this app records the traffic initiated or received through the app's own BLE session.