Skip to content

Releases: theabhishekchandra/ZeroDroid

v1.2.1

Choose a tag to compare

@github-actions github-actions released this 27 Aug 21:19
cee5131
chore: bump version to 1.2.1 (#22)

* docs: document the develop/main branching workflow (#12)

Explains the new branch protection setup — develop as the default
working branch, main as the protected release branch reachable only
via PR from develop with passing CI.

* docs: split README reference sections into docs/ (#13)

Moves Architecture, Project Structure, Battery Optimization,
Permissions, and Hardware Compatibility out of the README into their
own docs/ files, mirroring the existing docs/TOOLS.md pattern. The
README keeps a short summary + link for each so it stays a fast
on-ramp instead of the single source of truth for implementation
detail. Updates the FAQ cross-references and the bug report template
to point at the new files.

* docs: soften detection claims, add download CTA and Obtainium install (#14)

- Feature tables now say "flags possible X" instead of "detects X" for
  heuristic security checks (IMSI catcher, tracker, deauth, hidden
  camera, RF bug sweeper) — these can false-positive/miss, and the
  disclaimer already says so; the feature copy should match.
- Adds a prominent "Download Latest Release" button under the badges.
- Adds Obtainium install instructions to Download & Build.

* docs: add demo GIF with SSIDs/MAC addresses redacted (#17)

Real live scan of WiFi Analyzer, BLE Scanner, and Sensor Dashboard,
but the network/device list regions are blurred throughout — the
first version of this exposed real neighbor SSIDs and router MAC
addresses (one SSID contained what looked like a real person's name)
and was removed from develop's history. This version keeps the real
functionality (network counts, channel chart, live sensor readings)
visible while redacting anything identifying.

* Release: branching docs, README split, promotion fixes, demo GIF (#18) (#19)

* docs: document the develop/main branching workflow (#12)

Explains the new branch protection setup — develop as the default
working branch, main as the protected release branch reachable only
via PR from develop with passing CI.

* docs: split README reference sections into docs/ (#13)

Moves Architecture, Project Structure, Battery Optimization,
Permissions, and Hardware Compatibility out of the README into their
own docs/ files, mirroring the existing docs/TOOLS.md pattern. The
README keeps a short summary + link for each so it stays a fast
on-ramp instead of the single source of truth for implementation
detail. Updates the FAQ cross-references and the bug report template
to point at the new files.

* docs: soften detection claims, add download CTA and Obtainium install (#14)

- Feature tables now say "flags possible X" instead of "detects X" for
  heuristic security checks (IMSI catcher, tracker, deauth, hidden
  camera, RF bug sweeper) — these can false-positive/miss, and the
  disclaimer already says so; the feature copy should match.
- Adds a prominent "Download Latest Release" button under the badges.
- Adds Obtainium install instructions to Download & Build.

* docs: add demo GIF with SSIDs/MAC addresses redacted (#17)

Real live scan of WiFi Analyzer, BLE Scanner, and Sensor Dashboard,
but the network/device list regions are blurred throughout — the
first version of this exposed real neighbor SSIDs and router MAC
addresses (one SSID contained what looked like a real person's name)
and was removed from develop's history. This version keeps the real
functionality (network counts, channel chart, live sensor readings)
visible while redacting anything identifying.

* Release: branching docs, README split, promotion fixes, demo GIF (#18) (#20)

* docs: document the develop/main branching workflow (#12)

Explains the new branch protection setup — develop as the default
working branch, main as the protected release branch reachable only
via PR from develop with passing CI.

* docs: split README reference sections into docs/ (#13)

Moves Architecture, Project Structure, Battery Optimization,
Permissions, and Hardware Compatibility out of the README into their
own docs/ files, mirroring the existing docs/TOOLS.md pattern. The
README keeps a short summary + link for each so it stays a fast
on-ramp instead of the single source of truth for implementation
detail. Updates the FAQ cross-references and the bug report template
to point at the new files.

* docs: soften detection claims, add download CTA and Obtainium install (#14)

- Feature tables now say "flags possible X" instead of "detects X" for
  heuristic security checks (IMSI catcher, tracker, deauth, hidden
  camera, RF bug sweeper) — these can false-positive/miss, and the
  disclaimer already says so; the feature copy should match.
- Adds a prominent "Download Latest Release" button under the badges.
- Adds Obtainium install instructions to Download & Build.

* docs: add demo GIF with SSIDs/MAC addresses redacted (#17)

Real live scan of WiFi Analyzer, BLE Scanner, and Sensor Dashboard,
but the network/device list regions are blurred throughout — the
first version of this exposed real neighbor SSIDs and router MAC
addresses (one SSID contained what looked like a real person's name)
and was removed from develop's history. This version keeps the real
functionality (network counts, channel chart, live sensor readings)
visible while redacting anything identifying.

* fix: audit and repair core tools across the app

BLE Scanner:
- show real device names via scanRecord (not just paired-device cache)
- fix bookmark toggle not reflecting in UI during/after scan
- redesign device list layout to stop character-by-character text wrap

GPS Tracker:
- sort satellites by fix usage then signal strength
- add real satellite name lookup (GPS/Galileo/QZSS/IRNSS) and carrier frequency/band display
- fix list layout wrap issues

IR Remote:
- hide interactive remote UI entirely when no IR hardware is present

Permission gating:
- add missing PermissionGate to UWB, Wi-Fi Aware, and USB Camera screens

USB device access:
- add UsbConnectionManager for proper requestPermission/openDevice/claimInterface flow
- wire Connect/Disconnect UI into SDR and USB Camera screens

Wardriving:
- move scan collection into the foreground service so it survives in-app navigation
- fix CSV export failing on large sessions via FileProvider + EXTRA_STREAM
- redesign record list to lead with geo/time data instead of duplicating WiFi Analyzer's fields

Cell Tower Monitor:
- reset analyzer state on each new monitoring session (was carrying stale baseline across restarts)
- filter 3GPP "unavailable" sentinel values out of LAC/CID
- add PCI, RSRQ, SNR, timing-advance distance estimate, bandwidth, and carrier name (MCC/MNC lookup table)
- redesign screen with neighbor cell list and signal timeline chart

GPS Spoof Detector:
- read altitude/speed/satellite count from structured fields instead of regex-parsing check text

Network Scanner:
- widen host discovery from 5 probe ports to the full scan port set (was missing most non-server devices)

Signal Logger:
- fix RSSI text wrapping character-by-character down the screen edge

EMF Mapper:
- add gauge overflow indicator for readings above the 200uT dial max
- smooth baseline calibration over ~10 samples instead of locking to a single first reading
- add visible labels to reset/clear icon buttons

* fix: sign release builds with a stable keystore instead of shipping debug APKs

GitHub Releases were shipping renamed assembleDebug output, since the release
buildType had isMinifyEnabled but no signingConfig at all. Android Studio's debug
keystore is machine-specific and regenerates on reset, so any two debug builds can
carry different signing identities -- installing one over an existing install (or a
fresh download hitting a stale prior install) fails with "package conflicts with an
existing package".

- add a release signingConfig sourced from keystore.properties (local, gitignored)
  or RELEASE_* environment variables (CI secrets), applied only when configured so
  assembleDebug/lint/test and unconfigured assembleRelease builds are unaffected
- gitignore keystore.properties and *.jks/*.keystore
- add RELEASING.md documenting keystore generation and both local and CI signing
- add a release workflow that builds, signs, and uploads a proper *-release.apk to
  GitHub Releases on version tags, replacing the manual debug-APK upload process

Verified end-to-end with a throwaway local keystore: assembleRelease produces an APK
signed with the configured identity (confirmed via apksigner), and assembleDebug/test
still pass with no keystore configured.

* chore: bump version to 1.2.0 (versionCode 3)

* fix: fail release CI clearly when the keystore secret is bad

The v1.2.0 release run failed deep inside packageRelease with a cryptic
KeytoolException because RELEASE_STORE_FILE_BASE64 decoded to a corrupted
keystore. Verify the decoded keystore right after decoding so a bad secret
fails fast with an actionable message instead of a Gradle stack trace.

* fix: guard CellIdentityLte#getBandwidth behind API 28 check

getBandwidth() was added in API 28 but minSdk is 26, so lint correctly
flagged this as a NewApi violation blocking the required CI build check.

* chore: bump version to 1.2.1 (versionCode 4)

v1.2.0's release build never succeeded (broken keystore secret), so
re-cutting as 1.2.1 rather than reusing/moving the existing v1.2.0 tag.

ZeroDroid v1.1.0

Choose a tag to compare

@theabhishekchandra theabhishekchandra released this 12 Aug 18:10

ZeroDroid v1.1.0 🛡️

A major internals upgrade: modern DI, real UWB ranging, a fully audited codebase, unit test coverage, and a new Unified Alert Center — plus the toolchain and CI groundwork to keep the project healthy going forward.

✨ What's new since v1.0.0

  • 29 tools now, up from 27 — new Alert Center aggregates threats from Rogue AP, Deauth Detector, GPS Spoof, Hidden Camera, and Tracker Scanner into one persisted, deduplicated feed
  • Hilt dependency injection — replaced the manual AppContainer with a proper Hilt-based DI graph across every ViewModel and service
  • Real UWB rangingUwbViewModel/UwbService now do actual controller/controlee ranging via Jetpack Core UWB instead of a placeholder
  • Correctness audit — fixed previously-swallowed exceptions across 9 domain classes, cleaned up the manifest, added the UWB_RANGING permission
  • 109 unit tests added for pure domain/util logic (distance estimation, QR threat analysis, channel analysis, privacy scoring, and more)
  • Toolchain upgrade: Kotlin 2.4.10, AGP 9.3.1, Gradle 9.7.0, Room 2.8.4, Compose BOM 2026.06.01, CameraX 1.6.1, Hilt 2.60.1, KSP 2.3.11, compileSdk 37
  • CI: GitHub Actions now runs lint + unit tests + assembleDebug on every push/PR; 15 real lint errors were fixed in the process, including a regression where List.removeLast() silently resolved to a Java 21 API requiring Android 15+ instead of the intended Kotlin stdlib extension
  • Open-source scaffolding: issue/PR templates, CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md

📲 Install

  1. Download ZeroDroid-v1.1.0-debug.apk below.
  2. On your device, enable Install unknown apps for your browser/file manager.
  3. Open the APK to install (or adb install -r over an existing v1.0.0 install — your data is preserved).

⚠️ This is a debug build for easy sideloading — it is larger and unoptimized compared to a production release. A signed release build is still on the Roadmap.

📋 Requirements

  • Android 8.0 (API 26) or newer — Android 12+ recommended for full BLE/WiFi features
  • Many tools depend on device hardware (IR blaster, UWB, barometer, etc.); the in-app Dashboard shows what your device supports

📖 Docs

⚖️ Responsible use

ZeroDroid is for education, authorized security research, and defensive use only. Only scan or test networks and devices you own or have written permission to assess. See the Disclaimer.

Full Changelog: v1.0.0...v1.1.0

ZeroDroid v1.0.0

Choose a tag to compare

@theabhishekchandra theabhishekchandra released this 12 Jul 00:22

ZeroDroid v1.0.0 🛡️

The first public release of ZeroDroid — the all-in-one Android hardware toolkit. Turn your phone into a portable RF lab, network analyzer, and security auditor with 27 specialized tools in one app.

✨ Highlights

  • 27 tools across 5 categories: Wireless · RF & Signals · Sensors · Network · Security
  • Every radio exposed: WiFi, BLE, Classic Bluetooth, NFC, IR, UWB, SDR, cellular, GPS
  • Security detectors: hidden cameras, AirTag/SmartTag trackers, IMSI catchers, rogue APs, deauth attacks, GPS spoofing, BadUSB
  • Zero idle battery — no auto-start scanning, everything auto-stops, all services lazy-loaded
  • Privacy-first — runs 100% on-device, no account, permissions requested only when needed
  • Terminal-hacker UI (Material 3 dark theme, JetBrains Mono)

📲 Install

  1. Download ZeroDroid-v1.0.0-debug.apk below.
  2. On your device, enable Install unknown apps for your browser/file manager.
  3. Open the APK to install.

⚠️ This is a debug build for easy sideloading — it is larger and unoptimized compared to a production release. A signed release build is planned (see the Roadmap).

📋 Requirements

  • Android 8.0 (API 26) or newer — Android 12+ recommended for full BLE/WiFi features
  • Many tools depend on device hardware (IR blaster, UWB, barometer, etc.); the in-app Dashboard shows what your device supports.

📖 Docs

⚖️ Responsible use

ZeroDroid is for education, authorized security research, and defensive use only. Only scan or test networks and devices you own or have written permission to assess. See the Disclaimer.

Full Changelog: initial release.