Modular security telemetry analysis, geolocation testing, and device fingerprinting framework.
Features • Architecture • Installation • Usage • Testing • Security
NanoGPS is a modular Python framework for authorized security telemetry testing, combining controlled geolocation collection, browser/device capability profiling, local event logging, and tunnel-assisted testing into a single CLI-driven workflow.
It is designed for researchers, developers, and security teams who need a practical environment for studying what information a browser can expose when a user explicitly grants the relevant permissions.
Important: NanoGPS is intended for systems, devices, accounts, and test participants for which you have explicit authorization. It must not be used for covert tracking, credential harvesting, impersonation, or unauthorized collection of personal data.
| Feature | Description |
|---|---|
| 📍 Precision Geolocation Testing | Collects browser-provided coordinates and accuracy information after permission is granted. |
| 🧬 Device Telemetry Profiling | Profiles browser-exposed capabilities such as CPU concurrency, memory hints, storage estimates, display characteristics, touch support, and WebGL information. |
| 🖥️ Interactive CLI | Simple terminal dashboard for starting tests and reviewing locally stored events. |
| 🗄️ SQLite Logging | Stores test telemetry locally in an SQLite database for analysis. |
| 🌐 Localhost Testing | Supports direct local testing without requiring a public tunnel. |
| 🚇 Tunnel Integration | Provides configurable tunnel support for authorized remote test environments. |
| 🎨 Template System | Supports configurable test/verification pages for controlled security research environments. |
| 📊 Live Telemetry Output | Displays incoming test events and collected telemetry in the terminal. |
| 🧾 Audit Logging | Maintains local operational logs for troubleshooting and test auditing. |
| 🧪 CI Verification | Includes GitHub Actions workflow support for automated project checks. |
Modern browsers can expose a surprisingly rich set of signals to web applications.
Depending on browser support, permissions, and privacy settings, a controlled test can reveal information such as:
- 🌍 Geolocation coordinates
- 🎯 Location accuracy
- 🖥️ Screen dimensions and orientation
- ⚙️ Hardware concurrency
- 🧠 Device-memory hints
- 💾 Storage quota estimates
- 👆 Touch-point capabilities
- 🔋 Battery information where supported
- 🎮 WebGL renderer information where exposed
- 🌐 Browser/client capability information
- 🌎 Network-facing IP information available to the server
NanoGPS provides a single environment for observing and analyzing these signals during authorized testing.
┌──────────────────────┐
│ NanoGPS CLI │
│ main.py │
└──────────┬───────────┘
│
┌──────────────────────┼──────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Server │ │ Cloner │ │ Tunnel │
│ server.py │ │ cloner.py │ │ tunnel.py │
└──────┬──────┘ └─────────────┘ └──────┬──────┘
│ │
│ telemetry │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Database │ │ Test Access │
│database.py │ │ Local/Tunnel │
└──────┬──────┘ └─────────────┘
│
▼
┌─────────────┐
│ auratrace.db│
└─────────────┘
┌─────────────┐
│ Logger │
│ logger.py │
└─────────────┘
│
▼
Audit / Alerts
NanoGPS/
│
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions CI workflow
│
├── main.py # Interactive CLI dashboard
├── server.py # HTTP server and route handling
├── cloner.py # Controlled HTML test-template generator
├── tunnel.py # Tunnel coordination
├── database.py # SQLite database manager
├── logger.py # Local audit logging
├── colors.py # Terminal color utilities
├── requirements.txt # Python dependencies
├── LICENSE # MIT License
└── README.md # Project documentation
git clone https://github.com/trmxvibs/NanoGPS.git
cd NanoGPSpython -m pip install -r requirements.txtpython main.pyAfter launching:
python main.pythe interactive dashboard provides the available testing operations.
[1] Start telemetry test
[2] View stored test events
Depending on the version/configuration, the test workflow may allow you to define:
- A controlled test-page/template name
- A post-test redirect destination
- A local or tunnel-based access mode
- Telemetry monitoring options
For legitimate testing, use a clearly identified test page and obtain informed consent before collecting location or device information.
NanoGPS can be used to study browser geolocation behavior.
A typical browser flow is:
User opens authorized test page
│
▼
Browser requests location permission
│
┌─────┴─────┐
│ │
Allow Deny
│ │
▼ ▼
Coordinates No GPS data
│
▼
Accuracy + Telemetry
│
▼
Local SQLite Storage
Latitude
Longitude
Accuracy
Timestamp
User-Agent / Client Information
Device Capability Signals
No location permission should be bypassed.
NanoGPS can organize browser-exposed telemetry into categories such as:
CPU concurrency
Device-memory hint
Touch capability
Screen resolution
Available screen size
Orientation
Pixel ratio
Storage quota estimate
Available browser storage signals
WebGL vendor
WebGL renderer
Graphics capability information
User-Agent
Client capability hints
Language
Platform information
Availability varies significantly between browsers and privacy configurations.
Telemetry generated during authorized testing can be stored in:
auratrace.db
SQLite provides a lightweight local database suitable for development and security research.
Example conceptual record:
┌────────────┬──────────────┬──────────────┬─────────────┐
│ Timestamp │ Test Session │ Location │ Telemetry │
├────────────┼──────────────┼──────────────┼─────────────┤
│ 15:42:11 │ TEST-001 │ Permissioned │ Collected │
└────────────┴──────────────┴──────────────┴─────────────┘
Localhost mode is recommended for initial development and debugging.
Start the application:
python main.pyThen access the local test endpoint using the address displayed by the application.
This allows developers to validate:
- HTTP routing
- HTML templates
- Browser permission behavior
- Telemetry parsing
- SQLite storage
- Terminal logging
without exposing the service publicly.
For authorized remote testing, NanoGPS can integrate with supported tunnel mechanisms configured by the project.
Typical architecture:
Browser
│
▼
Public Test URL
│
▼
Tunnel
│
▼
NanoGPS HTTP Server
│
├── Telemetry
├── Test Event
└── Database
Use only tunnels and infrastructure that you control or are explicitly authorized to use.
NanoGPS handles potentially sensitive telemetry.
Recommended safeguards:
- ✅ Obtain explicit consent before collecting geolocation.
- ✅ Use test accounts and test devices.
- ✅ Keep collected data local whenever possible.
- ✅ Do not collect passwords or authentication tokens.
- ✅ Do not impersonate real services to deceive users.
- ✅ Do not deploy tracking pages against unsuspecting individuals.
- ✅ Restrict database permissions.
- ✅ Remove test data after research is complete.
- ✅ Do not publish raw coordinates or identifiable telemetry.
- ✅ Review third-party tunnel and logging configurations before use.
Only collect the telemetry necessary for the specific research question.
NanoGPS can support research into:
Study how much information a website can derive from browser APIs.
Demonstrate why users should carefully review browser permission prompts.
Analyze the uniqueness and stability of browser/device signals.
Validate whether an application unnecessarily requests sensitive browser capabilities.
Generate controlled telemetry events for detection and investigation exercises.
Evaluate the effectiveness of browser privacy controls and anti-fingerprinting mechanisms.
Before considering a deployment ready:
[ ] Local server starts successfully
[ ] SQLite database initializes correctly
[ ] Test page renders correctly
[ ] Permission-denied paths are handled
[ ] Invalid telemetry is rejected safely
[ ] Database input is validated
[ ] Logs do not expose unnecessary sensitive data
[ ] Tunnel failure does not crash the server
[ ] HTTP errors are handled cleanly
[ ] Test data can be deleted
[ ] CI checks pass
Run the application locally:
python main.pyFor development, keep the environment isolated:
python -m venv .venvActivate on Windows:
.venv\Scripts\Activate.ps1Activate on Linux/macOS:
source .venv/bin/activateInstall dependencies:
python -m pip install -r requirements.txtContributions are welcome for legitimate security research and privacy engineering.
Good contribution areas include:
- 🧪 Additional automated tests
- 🔐 Privacy improvements
- 🛡️ Input validation
- 📊 Telemetry normalization
- 🗄️ Database reliability
- 🧹 Code quality improvements
- 📚 Documentation
- ⚡ Performance optimization
- 🧰 Safer test-environment tooling
Please avoid contributions that facilitate covert surveillance, credential theft, phishing, or unauthorized tracking.
NanoGPS is released under the MIT License.
See:
LICENSE
for the complete license text.
NanoGPS is a security research and telemetry-testing framework.
Use it only on systems, devices, accounts, and participants for which you have explicit authorization.
The project is not intended to facilitate:
❌ Covert surveillance
❌ Unauthorized GPS tracking
❌ Credential harvesting
❌ Phishing
❌ Account impersonation
❌ Malware deployment
❌ Unauthorized device fingerprinting
❌ Collection of personal data without consent
Responsible security research should prioritize consent, data minimization, isolation, and responsible disclosure.
NanoGPS — Precision Tracker & Telemetry Profiler
Built for:
Security Research
Privacy Engineering
Browser Telemetry Analysis
Device Fingerprinting Research
Authorized Red-Team / Blue-Team Labs
Security Education
⚡ Analyze. Test. Measure. Secure. ⚡