π Documentation Β· π Database Combiner Guide Β· πΊοΈ Map Viewer Guide Β· π Project Structure Β· π Detailed Structure Β· οΏ½ Changelog Β· π€ Contributing Β· π Security Β· π Code of Conduct
Project Status Notice
This is a very early stage of the program. While it is already functional, it is based on an older project that I have recently resumed. Therefore, extensive refactoring and further development are still required. Expect ongoing changes and improvements as work continues.
The two Python tools are not yet fully compatible with the new encrypted databases.
Additional development is required to implement full SQLCipher support and key handling.
β‘οΈ If you need to work without encryption, please use version 1.0.2.
WiFi & Bluetooth GeoGrabber is a powerful geolocation tool for Android, designed as a modern Wardriving App. It scans for nearby WiFi networks and Bluetooth devices, records their signal strength and location, and visualizes the collected data on an interactive map.
Detected networks and devices are shown live on the map within the app. All scan results are saved in a local SQLite database (.db), which can be exported and loaded both on Android and on your PC for further analysis.
On Android, you can view, filter, and manage the data directly in the app. For advanced analysis and visualization, simply transfer the .db file to your PC and use the included Python tools to merge, plot, and explore your scan data interactively.
GeoGrabber is ideal for network analysis, signal mapping, and understanding wireless device distribution in different areasβwhether on your mobile device or desktop.
Note: This app is intended for legal, ethical wardriving, educational purposes, and authorized network analysis only. Please respect privacy laws and only scan networks in areas where you have permission.
WiFi Networks: | Property | Description | |βββ-|ββββ-| | SSID | Network Name | | BSSID | MAC Address | | Signal Strength | Power level in dBm | | Frequency | Operating frequency in MHz | | Channel | WiFi channel number | | Channel Width | Bandwidth (20/40/80/160 MHz) | | Security | Encryption type (WPA2, WPA3, etc.) | | GPS Coordinates | Latitude & Longitude | | Timestamp | Scan date & time |
Bluetooth Devices: | Property | Description | |βββ-|ββββ-| | Device Name | Bluetooth device name | | MAC Address | Hardware address | | Device Type | Classic or BLE | | Signal Strength | RSSI value | | GPS Coordinates | Latitude & Longitude | | Timestamp | Scan date & time |
Screenshot Description:
The screenshot above demonstrates the main scanning interface, live network list, and debug log. The app provides real-time updates and easy access to mapping and data management features.
| Component | Requirement |
|---|---|
| Android Version | Android 6.0 (API 23) or higher |
| RAM | 2 GB minimum (4 GB recommended) |
| Storage | 50 MB for app, variable for database |
| GPS | Required for location tracking |
| Permission | Purpose |
|---|---|
ACCESS_FINE_LOCATION |
Precise GPS coordinates |
ACCESS_COARSE_LOCATION |
Approximate location |
ACCESS_WIFI_STATE |
WiFi status monitoring |
CHANGE_WIFI_STATE |
WiFi scanning control |
BLUETOOTH |
Bluetooth basic access |
BLUETOOTH_ADMIN |
Bluetooth device management |
BLUETOOTH_SCAN |
Bluetooth scanning (Android 12+) |
BLUETOOTH_CONNECT |
Bluetooth connection (Android 12+) |
FOREGROUND_SERVICE |
Background scanning |
READ_EXTERNAL_STORAGE |
Database import |
WRITE_EXTERNAL_STORAGE |
Database export |
β οΈ Note (October 2025):
There are currently issues with automatic dependency installation via the setup scripts (
setup.bat/setup.sh) due to network or PyPI problems. This will be fixed soon. In the meantime, you can manually install the required Python packages in your virtual environment:Manual Installation:
- Activate your virtual environment:
- Windows:
venv\Scripts\activate.batorvenv\Scripts\Activate.ps1- Linux:
source venv/bin/activate- Download the required wheel files for each package (e.g. from https://pypi.org/project/folium/#files and https://pypi.org/project/branca/#files).
- Install them manually:
pip install path/to/folium-*.whl pip install path/to/branca-*.whl pip install geopy- If you encounter further dependency errors, download and install those packages in the same way.
The setup scripts will be updated soon for improved reliability.
Prerequisites:
Steps:
# 1. Clone the repository
git clone https://github.com/arn-c0de/Geograbber.git
cd Geograbber
# 2. Open in Android Studio
# Open Android Studio -> Open -> Select 'WIFIGEOGRABBER' directory
# 3. Sync Gradle
# Android Studio will automatically sync Gradle dependencies
# 4. Build the project
# Build -> Make Project (Ctrl+F9)
# 5. Run on device
# Run -> Run 'app' (Shift+F10)
For API key management, environment variables, and security best practices:
Note: Currently, the project works 100% offline and requires no API keys. The secret management system is provided for future extensibility.
1. Start WiFi Scanning
Tap "WiFi Start" button β App begins scanning for WiFi networks
2. Enable Bluetooth Scanning
Tap "BT Off" button β Bluetooth scanning activates
3. View Results
Scanned networks appear in the list below the control buttons
Real-time updates with signal strength and details
4. View on Map
Tap "Show Map" β Visualize collected data on interactive map
| Action | Description |
|---|---|
| Refresh | Update map with latest scanned data |
| Location | Center map on your current GPS position |
| Zoom | Pinch to zoom in/out |
| Pan | Drag to move around the map |
| Marker Click | View detailed information about a device |
| Back | Return to the main scanning interface |
More Actions Menu (Tap βMoreβ):
| Option | Description |
|---|---|
| πΎ Save Database | Export database as file for backup |
| ποΈ Delete Database | Clear all stored data |
| π Show Network Count | Display statistics (WiFi + Bluetooth) |
| π₯ Import Database | Load external database for analysis |
| π Show Data | View all stored networks and devices |
The project includes Python scripts for advanced data analysis and visualization:
Merge multiple database files from different scanning sessions.
# Navigate to Python directory
cd Python
# Run the combiner script
python start_combine_dbs.py
π Database Combiner Quickstart
Visualize scanning data on an advanced interactive map with filtering options.
# Navigate to Python directory
cd Python
# Run the plot GUI
python start_plot_gui.py
Features:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Android App β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β UI Layer (Activities & Fragments) β
β ββ Main Scanning Interface β
β ββ Map Viewer (WebView + Leaflet.js) β
β ββ Settings & Data Management β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Business Logic β
β ββ WiFi Scanner Service β
β ββ Bluetooth Scanner Service β
β ββ Location Manager β
β ββ Background Service (Foreground) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Data Layer β
β ββ SQLite Database β
β ββ Database Helper β
β ββ Data Models β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Component | Technology |
|---|---|
| Language | Java |
| Database | SQLite |
| Mapping | Leaflet.js (WebView-based) |
| Location | Google Play Services Fused Location Provider |
| Background Service | Android Foreground Service |
| Build System | Gradle (Kotlin DSL) |
wifi_data table:
CREATE TABLE wifi_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
bssid TEXT NOT NULL,
ssid TEXT,
signal_strength INTEGER,
frequency INTEGER,
channel INTEGER,
channel_width INTEGER,
security_type TEXT,
timestamp TEXT,
latitude REAL,
longitude REAL
);
device_data table:
CREATE TABLE device_data (
id INTEGER PRIMARY KEY AUTOINCREMENT,
device_id TEXT,
device_name TEXT,
device_type TEXT,
mac_address TEXT NOT NULL,
signal_strength INTEGER,
timestamp TEXT,
latitude REAL,
longitude REAL
);
| Operation | Average Time | Notes |
|---|---|---|
| WiFi Scan | 2-5 seconds | Depends on device & network density |
| Bluetooth Scan | 5-10 seconds | Standard discovery time |
| Database Write | <100ms | Single entry |
| Map Rendering | 1-3 seconds | Depends on marker count |
| Database Query | <500ms | 1000 entries |
β Allowed:
β Not Allowed:
β οΈ Legal Considerations:
β οΈ Ethical Guidelines:
π‘οΈ Data Security:
| Limitation | Description | Workaround |
|---|---|---|
| Scan Throttling (Android 9+) | Background WiFi scans limited to ~4 per 2 minutes | Use foreground service |
| Bluetooth Permissions (Android 12+) | Requires BLUETOOTH_SCAN and BLUETOOTH_CONNECT | Request at runtime |
| Location Requirement | WiFi scanning requires location permission | Mandatory on Android 6+ |
| Hidden Networks | SSIDs may not be available for hidden networks | Shows as empty SSID |
| Battery Optimization | Background scanning may be restricted | Request battery optimization exemption |
π View Detailed Structure β Complete file tree, database schema, and technical details
We welcome contributions from the community! Hereβs how you can help:
| Type | Description |
|---|---|
| π Bug Reports | Found a bug? Open an issue with details |
| π‘ Feature Requests | Have an idea? Suggest new features |
| π Documentation | Improve docs, add tutorials |
| π§ Code Contributions | Submit pull requests |
| π Translations | Help translate the app |
# Click 'Fork' on GitHub
git clone https://github.com/arn-c0de/Geograbber.git
cd Geograbber
git checkout -b feature/amazing-feature
git add .
git commit -m "Add amazing feature: [description]"
git push origin feature/amazing-feature
When reporting bugs, please include:
This project is licensed under the GeoGrabber License (Non-Commercial).
You are free to use, modify, and share this software for personal, educational, and research purposes only. Commercial use, resale, or distribution for profit is strictly prohibited without explicit written permission from the project maintainer.
See the LICENSE file for full terms and conditions.
IMPORTANT LEGAL NOTICE:
This application is provided βAS ISβ for educational and research purposes only. The developers and contributors:
Users are solely responsible for:
By using this application, you agree to:
Project Maintainer: arn-c0de
| Contact Method | Link |
|---|---|
| π Issues | GitHub Issues |
| π¬ Discussions | GitHub Discussions |
| π§ Email | arn-c0de@protonmail.com |
| π Website | Β |
This project is built with the help of:
β Star this repo if you find it useful!
Last Updated: October 30, 2025