Introduction & Features
Relevant source files
The following files were used as context for generating this wiki page:
ShadowCheckMobile is a specialized Android application designed for Network Security and Surveillance Detection. It functions as an advanced Signals Intelligence (SIGINT) and network intelligence platform, providing tools to detect, analyze, and visualize wireless environments, including WiFi, Bluetooth (classic and BLE), and cellular networks.
The application is built using a modern Android technology stack, including Kotlin, Jetpack Compose for the UI, and a Room-based SQLite database for local data persistence. It aims to provide security enthusiasts and professionals with a comprehensive suite for wardriving, rogue Access Point (AP) detection, and real-time surveillance monitoring.
Sources: README.md:1-10, app/src/main/kotlin/com/shadowcheck/mobile/rebuilt/ui/screens/SettingsScreen.kt:180-185
Core Features
ShadowCheckMobile provides a variety of technical capabilities for signal analysis and environmental awareness.
Network Scanning & Surveillance
The platform performs background scanning to identify and catalog various wireless signals.
- WiFi Scanning: Detects nearby access points and monitors network state.
- Bluetooth & BLE: Scans for Bluetooth classic devices and BLE beacons.
- Cellular Tower Detection: Analyzes cellular infrastructure and signal data.
- Threat Detection: Provides specific logic for surveillance and security threat monitoring.
Sources: README.md:12-14, app/src/main/AndroidManifest.xml:7-14
Data Visualization & AR
- Interactive Mapping: Integrates with Mapbox and Google Maps to visualize detected networks on a map.
- AR View: Utilizes ARCore for augmented reality visualization of network signals in a physical space.
- Statistics: Provides analytics and insights based on collected network data.
Sources: README.md:15-16, README.md:20, app/src/main/kotlin/com/shadowcheck/mobile/rebuilt/ui/screens/SettingsScreen.kt:56-78
Data Management & Integration
- WiGLE Integration: Supports uploading collected wardriving data to the WiGLE database and querying existing data.
- Export Formats: Allows exporting collected records in CSV, JSON, and KML formats.
- Secure Storage: Uses
EncryptedSharedPreferencesfor sensitive data like API keys andRoomfor the main data layer.
Sources: README.md:17-19, app/src/main/kotlin/com/shadowcheck/mobile/rebuilt/ui/screens/SettingsScreen.kt:252-265
Technical Architecture
The application follows an MVVM (Model-View-ViewModel) architecture, leveraging Jetpack Compose for a reactive UI and Kotlin Coroutines for asynchronous scanning operations.
Data Flow Diagram
The following diagram illustrates how scan data moves from the hardware sensors to local storage and external services.
This diagram shows the flow from physical signal detection through the background service to local persistence and eventual export or API integration.
Sources: README.md:46-54, app/src/main/AndroidManifest.xml:49
System Components
| Component | Responsibility |
|---|---|
CompleteScannerService | A foreground service that manages background scanning for location, WiFi, and Bluetooth. |
ShadowCheckDatabase | The Room database containing 13 entities for networks, towers, and sightings. |
SettingsScreen | Manages application configuration, database maintenance, and API key storage. |
EncryptedSharedPreferences | Securely stores API keys for WiGLE, Mapbox, and Google Maps. |
MainActivity | The main entry point and host for the Jetpack Compose navigation. |
Sources: app/src/main/AndroidManifest.xml:45-50, app/src/main/kotlin/com/shadowcheck/mobile/rebuilt/ui/screens/SettingsScreen.kt:20-40, README.md:56-69
Configuration & Permissions
ShadowCheckMobile requires extensive system permissions to function as a signal intelligence tool.
Required Permissions
The application declares the following critical permissions in its manifest:
ACCESS_FINE_LOCATION&ACCESS_COARSE_LOCATION: Required for mapping network sightings.ACCESS_WIFI_STATE&CHANGE_WIFI_STATE: Required for WiFi scanning.BLUETOOTH_SCAN&BLUETOOTH_CONNECT: Required for identifying Bluetooth devices.FOREGROUND_SERVICE_LOCATION: Required for continuous scanning while the app is in the background.CAMERA: Required for Augmented Reality (AR) features.
Sources: app/src/main/AndroidManifest.xml:4-24
Application Settings
Users can configure the application's behavior through the SettingsScreen. Key configurations include:
| Setting | Type | Description |
|---|---|---|
| Map Provider | String | Selection between "Mapbox" and "Google Maps". |
| Scan Interval | Integer | Seconds between active scans (Range: 1s to 10s). |
| WiGLE API Key | Encrypted String | Credentials for uploading data to WiGLE. |
| Mapbox API Key | Encrypted String | Token for rendering Mapbox layers. |
Sources: app/src/main/kotlin/com/shadowcheck/mobile/rebuilt/ui/screens/SettingsScreen.kt:90-110, app/src/main/kotlin/com/shadowcheck/mobile/rebuilt/ui/screens/SettingsScreen.kt:215-230
Database & Data Model
The system tracks data through 13 different entities. These include:
- WiFi networks and Bluetooth/BLE devices.
- Cellular towers and sensor readings.
- Metadata such as hardware info, radio manufacturers (OUI), and geofences.
- User-added data like network notes, device tags, and media attachments.
Sources: README.md:71-84
Security Implementation
ShadowCheckMobile implements security at the storage layer:
- Preferences: API keys and sensitive settings are stored using
EncryptedSharedPreferenceswith AES256 encryption. - Database: Local data is stored in a structured Room database, with maintenance functions provided to "Purge Sensor Data" or "Clear All Data" via the settings interface.
Sources: app/src/main/kotlin/com/shadowcheck/mobile/rebuilt/ui/screens/SettingsScreen.kt:135-150, app/src/main/kotlin/com/shadowcheck/mobile/rebuilt/ui/screens/SettingsScreen.kt:252-265
ShadowCheckMobile serves as a comprehensive tool for network analysis, combining background signal intelligence collection with advanced visualization techniques to provide a complete picture of the wireless environment.