wavedigger README

The project's README from github.com/christianrowlands/wavedigger. As one markdown file: README.md.

WaveDigger

Dig into wireless signals to discover their physical locations. WaveDigger helps you find Wi-Fi access points by their BSSID (MAC address) and cell towers (LTE and 5G NR) by their network parameters. Built with Next.js, TypeScript, and deck.gl for interactive map visualization.

A hosted version can be found at https://wavedigger.networksurvey.app.

WaveDigger Screenshot

Features

Acknowledgments

🙏 This project would not be possible without the incredible work done by the apple-corelocation-experiments team.

WaveDigger is built upon their research and reverse engineering of Apple's location services API. Specifically, we use:

Their work in understanding and documenting Apple's undocumented location services has made it possible for projects like WaveDigger to exist. Please check out their repository for the original research and additional tools for working with Apple's location services.

Getting Started

Prerequisites

Installation

  1. Install dependencies:
npm install
  1. (Optional) Add a Mapbox token for enhanced map tiles:
    • Get a token from Mapbox
    • Add it to .env.local:
    NEXT_PUBLIC_MAPBOX_TOKEN=your_token_here
    

Running the Development Server

npm run dev

Open http://localhost:3000 to view the application.

Technical Details

Architecture

Real Apple WLOC API

The application uses Apple's real WLOC API to query BSSID locations. This implementation is based on the research and protobuf definitions from the apple-corelocation-experiments project.

The API implementation:

Testing with Real BSSIDs

To test the app:

  1. Find a real Wi-Fi BSSID (MAC address) from your router or access point
  2. Enter it in any supported format
  3. The app will query Apple's database and show the location if found

Note: Not all BSSIDs are in Apple's database. Newly deployed or private access points may not have location data.

Features Roadmap

License

WaveDigger is licensed under the GNU Affero General Public License v3.0. If you run a modified version of this software as a network service, the AGPL requires you to make your modified source code available to users of that service.

wavedigger (christianrowlands/wavedigger)

Searching Database…

What is this?WaveDigger is a web tool that looks up the physical location of Wi-Fi access points by their BSSID (MAC address), and LTE/5G NR cell towers by their network parameters, using Apple's location services API.
Is this a standalone app or does it tap into Apple's own database?It's a self-hosted Next.js web app that queries Apple's real WLOC API behind the scenes, reusing reverse-engineered protobuf definitions to send valid requests and decode the responses.
How do I get it running?Install Node.js dependencies with npm, optionally add a Mapbox token to .env.local for better map tiles, then start the Next.js dev server.
Do I need Node.js and a Mapbox account first?You need Node.js 24+ and npm; a Mapbox token is optional and only improves the map tile rendering.
Will every BSSID I enter actually return a location?No — Apple's database doesn't cover every access point, so newly deployed or private routers often return no result.
Is there a hosted version I can use without running it myself?Yes, the README mentions a hosted version exists, though self-hosting is the documented path with full setup steps.
Any catch with the AGPL license if I deploy my own modified copy?Yes — AGPL-3.0 requires that if you run a modified version as a network service, you must publish your modified source code to its users.
What kind of lookups beyond BSSID does it support?It also supports LTE tower lookups via MCC/MNC/TAC/Cell ID and 5G NR tower lookups via MCC/MNC/TAC/NCI, with NR searches also returning nearby cells in the same cluster.
How are results shown?Results are plotted on an interactive deck.gl-powered map, and the app keeps a search history for quick re-access to recent lookups.
Whose research does this build on?It's built on the reverse-engineering work of the apple-corelocation-experiments project, which documented Apple's undocumented WLOC API, protobuf formats, and coordinate encoding.
What formats can I enter a BSSID in?The input accepts AA:BB:CC:DD:EE:FF, AA-BB-CC-DD-EE-FF, or AABBCCDDEEFF, with automatic formatting and validation.
Size
3.6 MB
Stars
271
Updated
CommitOct 07
Age
1y
Commits · 90 Days