flipper0-process-wifi-map-data
December 10, 2025 ยท View on GitHub
Scripts to process FlipperZero WiFi Map data to geolocate APs from wardriving sessions
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'
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'
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