Spectre

A radio frequency scanner app for Android with recon and offensive capabilities.

Open Source

Spectre Source Code

Author

thomasbuilds

Description

Radio frequency scanner with recon and offensive capabilities

#android#app#bluetooth#cellular#gnss#grapheneos#jetpack-compose#kotlin#material3#network#pentesting#privacy#radio-frequency#scan#security#wifi

Homepage

Repository

  • LicenseGPL-3.0
  • Created23 May 26
  • Primary languageKotlin
  • Size1,405 KB
  • Stars150
  • Forks9
  • Watchers150

Language Usage

Language Usage

Project Health

  • Last commit2 days ago
  • Open issues3
  • Latest releasev0.1.3

Top Contributors

Recent Commits

  • dependabot[bot](28 Aug 26)

    Bump actions/setup-java to 6

  • dependabot[bot](26 Aug 26)

    Bump agp to 9.3.2

  • dependabot[bot](23 Aug 26)

    Bump gradle-wrapper to 9.7.1

  • dependabot[bot](21 Aug 26)

    Bump spotless to 8.10.0

  • dependabot[bot](18 Aug 26)

    Bump composeBom to 2026.08.00

  • dependabot[bot](11 Aug 26)

    Bump gradle-wrapper to 9.7.0

  • Thomas(30 Jul 26)

    Release 0.1.3

  • dependabot[bot](30 Jul 26)

    Bump kotlin to 2.4.10

  • Thomas(30 Jul 26)

    Add a GitHub Sponsor button pointing to DONATE.md

  • dependabot[bot](28 Jul 26)

    Bump spotless to 8.9.0

  • dependabot[bot](23 Jul 26)

    Bump agp to 9.3.1

  • Thomas(23 Jul 26)

    Add F-Droid changelog for 0.1.3

  • Thomas(23 Jul 26)

    Document filter/sort, dual-SIM, and range rate in README.md

  • g-maxxx(23 Jul 26)

    Update full_description.txt

  • g-maxxx(23 Jul 26)

    Add trailing newline to short_description.txt

  • Thomas(23 Jul 26)

    Fix notification for app exit on Android 12

  • Thomas(19 Jul 26)

    Filter untracked GNSS satellites and mark unknown geometry

  • dependabot[bot](15 Jul 26)

    Bump agp to 9.3.0

  • Thomas(14 Jul 26)

    Fix formatting and clean up CellularScanner

  • Thomas(14 Jul 26)

    Filter modem-fabricated cells and harden serving-cell parsing Verified against a Pixel 9 (Tensor) modem, which pads and corrupts CellInfo in several ways: - Drop unregistered WCDMA neighbors pinned at the reporting floor (Ec/No -24 or RSCP below demod sensitivity); the modem reports its whole configured neighbor set as unmeasured floor entries - Drop zero-identity placeholder cells (NR and WCDMA) emitted during NSA/RAT transitions: all-zero identity on a 0 Hz carrier with a clamped signal value - Skip unregistered cells whose measurement is older than the display TTL, so registry replays can't resurrect aged-out towers - Read the LTE serving cell's strength from SignalStrength when CellInfo omits RSRP, instead of dropping the serving tower - Remove a redundant UNAVAILABLE check in sanitizeCellId

  • Thomas(14 Jul 26)

    Update installation section of README.md

  • Thomas(13 Jul 26)

    Add F-Droid in README.md

  • Thomas(11 Jul 26)

    Remove foojay JDK auto-download machinery

  • Thomas(11 Jul 26)

    Release 0.1.2

  • Thomas(11 Jul 26)

    Silence unused-expression warnings in empty when branches

  • Thomas(09 Jul 26)

    Add F-Droid changelog for 0.1.2

  • Thomas(09 Jul 26)

    Fix ktlint formatting in WifiCapabilities

  • Thomas(09 Jul 26)

    Move the skeleton shimmer to the draw phase Reading the infinite transition's alpha during composition recomposed every warming card's scope at the animation rate. SkeletonBar now takes the State and reads it inside graphicsLayer, so the shimmer only invalidates the layer.

  • Thomas(09 Jul 26)

    Harden Wi-Fi scanning and fix capability parsing Run the heartbeat and registration seed on the scan-callback executor so every apCache mutation is single-writer, which closes a lost-update race where the stale write-back could revert a concurrent scan's fresh data. Synchronize stop() with maybeRegister() in both the Wi-Fi and GNSS scanners so an in-flight registration can't complete after teardown, and guard the scan loop with the stopped flag. Parse security per capability bracket group and key the WPA2 badge on the group's PSK/EAP AKMs: the WPA2/RSN prefix alone also fronts WPA3-only (SAE) and OWE groups, which showed a phantom WPA2 label. Map 320 MHz channel width, move the 6 GHz band boundary to 5925 MHz with channel 2 at 5935, and clamp negative FTM distances from measurement noise.

  • Thomas(09 Jul 26)

    Harden Bluetooth scanning and GATT inspection Require fine location in the scanner's permission check (BLUETOOTH_SCAN is declared without neverForLocation, so scans need it anyway), key the signal cache on advertisement content so payload rotations at steady RSSI refresh the details, and run all scheduled work on one serial lane so publishNow is single-writer. Match GATT read responses to the queued characteristic instance before disarming the read timeout: a late response for an already-timed-out read could strip the in-flight read's safety net and hang the inspection, and same-UUID characteristics now keep distinct values. Clear a pending write when a new inspection supersedes it, gate advertising support on the advertiser's existence rather than the multi-advertisement feature, decode Tx Power Level, and trim the NUL padding devices put in fixed-size string characteristics.

Spectre Android App

APK Info

Trackers

No trackers found

    Permissions

    • Access Coarse Location
    • Access Fine Location
    • Access Local Network
    • Access Network State
    • Access Wifi State
    • Bluetooth Advertise
    • Bluetooth Connect
    • Bluetooth Scan
    • Change Wifi State
    • Foreground Service
    • Foreground Service Location
    • Foreground Service Special Use
    • Internet
    • Post Notifications
    • Read Phone State
    • Dynamic Receiver Not Exported Permission

    Spectre Reviews

    More Mobile Apps

    About the Data: Spectre

    Change History

    Edit Spectre Data

    You can edit Spectre's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
    Note that some of the information shown above has been aggregated from external sources, a list of these can be found data documentation.

    Origin Data

    Modify Data

    API

    You can access Spectre's data programmatically via our API. Simply make a GET request to:

    https://api.awesome-privacy.xyz/v1/services/spectre

    The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

    Share Spectre

    Help your friends compare Mobile Apps, and pick privacy-respecting software and services.
    Share Spectre and Awesome Privacy with your network!