flipper0-process-wifi-map-data

December 10, 2025 ยท View on GitHub

Scripts to process FlipperZero WiFi Map data to geolocate APs from wardriving sessions

overview_wifi_map_aps_radius


In order to get the data you'll need the app FlipperZero WiFi-Map and it's ESP32 companion

Run

Clone the repo:

$ git clone https://github.com/carvilsi/flipper0-process-wifi-map-data.git

$ cd flipper0-process-wifi-map-data

To deal with dependencies it's recomended to do this on virtual environment:

$ python3 -m venv your_env_name

$ pip install -r requirements.txt

Retrieve the colected data from you FlipperZero with your favoiurite method and get the start and end coordenates from OpenStreetMap, to achive that, use secondary mouse button over the point and use "Center map here" then use the coorditates from url bar, e.g. https://www.openstreetmap.org/#map=19/39.635191/-0.239454&layers=N as '39.635191.-0.239454'

Run it with:

$ ./csv_wifi_map_2_geodata_csv.py path/to/csv '39.635191,-0.239454' '39.635192,-0.239455'

usage: csv_wifi_map_2_geodata_csv.py [-h] [-dc] [-o OUTPUT_GEO_CSV_FILE] csv_wifi_map start_coordinates end_coordinates

Process the colected APs data on FlipperZero and draws the the points on OpenStreetMap map e.g. ./csv_wifi_map_2_geodata_csv.py path/to/csv '39.635191,-0.239454' '39.635192,-0.239455'

positional arguments:
  csv_wifi_map          path to the csv WiFi-Map file from FlipperZero
  start_coordinates     The start cordinates point, 'latitude,longitde' you can get this on https://www.openstreetmap.org using
                        'Center Map here' and getting it from url; e.g. '39.635191,-0.239454'
  end_coordinates       The end cordinates point, 'latitude,longitde' you can get this on https://www.openstreetmap.org using 'Center
                        Map here' and getting it from url; e.g. '39.635192,-0.239455'

options:
  -h, --help            show this help message and exit
  -dc, --draw_circles   If set will draw circles with estimated distance to the AP
  -o, --output_geo_csv_file OUTPUT_GEO_CSV_FILE
                        Saves the processed data on CSV file

Examples

Plot APs relevant points

Plot the geolocated warwalking colected data:

$ ./csv_wifi_map_2_geodata_csv.py path/to/csv '39.635191,-0.239454' '39.635192,-0.239455'

detail_points_wifi_map

points_wifi_map

Plot APs relevant points and circles with estimated distance for retrieved APs

Plot the geolocated warwalking colected data and sorounding APs:

$ ./csv_wifi_map_2_geodata_csv.py path/to/csv --draw_circles '39.635191,-0.239454' '39.635192,-0.239455'

detail_wifi_map

Plot APs relevant points and circles with estimated distance for retrieved APs

Plot and save processed data to CSV file:

$ ./csv_wifi_map_2_geodata_csv.py path/to/csv --draw_circles '39.635191,-0.239454' '39.635192,-0.239455' -o outpu_processed.csv

Tools

  • nmea_gga_2_map_coords.py This script converts from NMEA GGA GPS output to map coordinates, the expected input is: GPGGA,095545.00,3935.67311,N,00012.63974,W,1,05,2.73,5.9,M,50.4,M,,*4A

  • plot_basic_csv_wifi_map.py This script just draws the APs distance Vs time

  • splipt_raw_wifi_map_data.py This is script splits de csv file with collected data from FlipperZero on several files. Only for legacy WiFi-Map CSVs files; the current version on FlipperZero WiFi-Map does not require this conversion

Jupiter Notebooks

Small notebooks to play around with collected data.

Analyze

Process

To try things related with processing the collected data from warwalking

Caveats

The locations are not so accurate when the walk is not a straight line.

TODOs

  • correct with end coordinate
  • add auth mode to generated geodata (for viz)
  • work on export file to do navigation on FlipperZero side
  • try to solve possitions when not walking straight