
RF CHAOS is an Android App That Is Designed To Cause Chaos via All RF Adapters Possible - Enjoy!
RF CHAOS is pretty heavily based on a bunch of tools that paved the way for Maximum Mobile Hacking over the years, including:
..And many, many more tools and projects - too many to list.
I've been wanting to build a toolkit like RF-CHAOS for years now but just never got the time or opportunity. So, since I saw some motivation via X I figured might as well do it up. Since there's already a bunch of tools that exist for this on computer platforms, I figured I'd focus my effort on mobile devices, and since Android is the only one that allows low level access to WiFi/BLE/Bluetooth/etc, they were the winner!
I hope you have some fun with it. Evil fun. 😈🤘
It turns out, for BLE especially, there's been some developments over the years that make targeting some devices more difficult than it used to be! I'm talking about those "Private MAC Addresses" that change every 15 minutes or so.
🚨👮⚠️ What is BLE/Bluetooth RPA Resolution/Tracking? It's the ability to track all of those phones and devices that made you think you might have regained some of your privacy back through that feature you've likely seen by now, the one that supposedly changes your device's MAC address to a spoofed private address. Your phone or device's MAC Addres changes to a new spoofed address every 15 minutes or so.
And it's all just a fucking lie.
This, all while your device's menus list this as a "Privacy Feature" and proclaim to be protecting you against this very type of attack. Are you less than excited about being tracked by anyone, including Law Enforcement, at any time? Want to see how it works first hand? You're in the right place! Yes, there's details and more to this, so keep reading. 🚨👮⚠️
TL;DR: Every single moment your Bluetooth Adapter is powered you are 100% trackable, even with Private MAC Spoofing turned on.
Android Studio (Hedgehog 2023.1.1 or newer)
JDK 17 (usually with Android Studio)
Android SDK
# If using git
git clone https://github.com/scramblr/RF-CHAOS.git
cd RF-CHAOS
# Or extract the zip file to a folder
RF-CHAOS folderIn a release coming in the next few weeks you'll have the option to switch to Google Maps SDK. I even staged the Manifest Instructions:
0. Wait for feature to actually be built and tested.
1. Get a Google Maps API key from https://console.cloud.google.com/
2. Enable "Maps SDK for Android"
3. Edit `app/src/main/AndroidManifest.xml`
4. Replace `YOUR_GOOGLE_MAPS_API_KEY` with your actual key.
Testing & Debug .APK or Bundle .AAB Packages
Menu: Build → Generate and Build App Bundles or APKs → Generate APKs / Generate Bundles
APK Output: `app/build/outputs/apk/debug/app-debug.apk`
Bundle Output: `app/build/outputs/bundle/debug/app-debug.aab`
Production Release .APK or Bundle .AAB Packages
APK Output: `app/release/app-release.apk`
Bundle Output: `app/release/app-release.aab`
Your phone should have RF-CHAOS installed on it within a few seconds! It'll request the 3 primary security permissions needed to search for signals and plot coordinates with GPS.
AA:BB:CC:DD:EE:FF) or IRK code.The app requires permissions to access the radios inside your phone or device. The App should NEVER phone home. All data stays on your device unless you EXPLICITLY want to share it with WIGLE.NET.
The CSV export uses WiGLE's format. We save it inside of an SQLite Database locally on your device with the following tables:
MAC,SSID,AuthMode,FirstSeen,Channel,RSSI,CurrentLatitude,CurrentLongitude,AltitudeMeters,AccuracyMeters,Type
Bluetooth Low Energy devices can use Resolvable Private Addresses (RPAs) that change periodically. If you have a device's Identity Resolving Key (IRK), you can track it despite address changes.
IRKs can be extracted from:
app/src/main/
├── java/com/scramblr/rftoolkit/
│ ├── MainActivity.kt # Main activity with navigation
│ ├── RFToolkitApp.kt # Application class
│ ├── data/
│ │ ├── db/AppDatabase.kt # Room database & DAOs
│ │ ├── models/Models.kt # Data classes
│ │ └── repository/ # Data access layer
│ ├── services/
│ │ └── ScanningService.kt # Foreground scanning service
│ ├── ui/ # Fragments for each screen
│ └── utils/
│ └── Scanners.kt # WiFi/BLE scanning + RPA resolver
├── res/
│ ├── layout/ # XML layouts
│ ├── navigation/ # Navigation graph
│ └── values/ # Colors, strings, themes
└── AndroidManifest.xml
.gradle folder in project rootGNU General Public License
Don't die!
| Permission | Reason |
|---|
| ACCESS_FINE_LOCATION | Required for WiFi/BLE scanning and GPS |
| ACCESS_COARSE_LOCATION | Location fallback |
| BLUETOOTH_SCAN | BLE device scanning (Android 12+) |
| BLUETOOTH_CONNECT | Bluetooth connections (Android 12+) |
| NEARBY_WIFI_DEVICES | WiFi scanning (Android 13+) |
| VIBRATE | Signal Finder haptic feedback |