Offline-first Wi-Fi/BLE signature monitor for stock Android handsets (ATAK, Galaxy S25). Helps operators see nearby emitters and spot their own leaks.
- Prepare environment
- Android Studio or command line SDK with API 34 and JDK17.
- Clone repo; ensure Gradle wrapper is executable:
chmod +x gradlew.
- Build debug APK
Output:
./gradlew assembleDebug
app/build/outputs/apk/debug/app-debug.apk. - Install on device
- Enable Developer options and USB debugging on the phone.
- Plug in and run:
adb install -r app/build/outputs/apk/debug/app-debug.apk
- First run
- Grant runtime permissions when prompted:
ACCESS_FINE_LOCATION,NEARBY_WIFI_DEVICES, and Bluetooth. - Current build shows placeholder UI; scanners and logging arrive next.
- Grant runtime permissions when prompted:
Keep Gradle caches (~/.gradle) and downloaded SDK packages on your dev box for offline rebuilds.
- Capture radio data – run
scan.shon a Linux host or use the Android app to sweep Wi‑Fi/BLE. - Parse logs – feed the raw dump to
parse_wifi_log.pyto convert results into structured CSV with vendor IDs resolved viaoui.csv. - Review – import the CSV/JSON logs into your analysis toolset or the app's logs panel.
- Unit tests / build check
Requires a local Android SDK (
gradle testANDROID_HOMEorlocal.properties). - APK build
Produces
gradle assembleDebug
app/build/outputs/apk/debug/app-debug.apkfor sideloading.
Populate oui.csv (and the mirrored app/src/main/assets/oui.csv) with MAC prefixes and vendor names to flag known phones, drones, or radios without a network query.
- Foreground
ScanningService+ notification - Runtime permission flow
- Wi-Fi scanner (12–15s) + list UI
- BLE scanner (low-power) + list UI
- Risk dial (green/amber/red) with top 3 reasons
- “My Phone” panel (Wi-Fi/BLE/NFC/UWB/Airplane settings)
- CSV/JSON logging to
/Documents/PhantomScout+ Share
- SelfTelemetry (probeRate, hotspot, BLE duty, RAT)
- Profiles (Base/Patrol/Near-OBJ)
- Rules engine + Leaks UI + Fix actions
- AAR report exporter