Desktop tool to ingest wardrive logs, merge them into one combined log, and plot the sightings as points. It is a coordinate plot of what you logged — not a Google Maps–style street or satellite map.
(Main-window screenshot will go here once captured — docs/images/main-window.png.)
- Ingest WiGLE CSV 1.6 exports (including Biscuit), with WIFI, BLE, LTE, and NR rows
- Merge multiple runs into one log — every logged row stays; combined order is by FirstSeen
- Plot map from logged GPS coordinates only (no Google Maps, no street tiles, no satellite basemap)
- Zoom (scroll), pan (drag), click a point for its fields; Previous / Next or arrow keys walk the log
- Drop CSVs on the left square (or use Add logs); per-file on/off toggles; × removes a file from the list
- Legend filters — click WIFI / BLE / LTE / NR to hide or show that type (gray when off); Save still keeps every row
- Save / export — File → Combine (merge + save), Clean (blacklist; writes
{name} CLEAN.csvonly when rows were removed), Clean and Combine (merge then blacklist;CLEANin the name only when rows were removed). Row-cap →Part N(withCLEANlast when cleaned). - Row-cap split — File → Split CSV; Dropzone automation may auto-split oversized day files. Map Add/drop does not auto-split.
- Unique vs samples on the legend, file list, and status (unique = distinct MAC+Type; samples = every row)
- Settings (General · Blacklist · WiGLE · WDGWars · About) — Dropzone/Cleared folders, pulse, SSID/MAC blacklist (
blacklist.xml), keys, activity log - Automation — pulse Dropzone → Cleared by FirstSeen day; blacklist strip;
.csv.done; same-day merge; Process Dropzone / open folders from the menu - Activity log — plain-English
logs/activity.logbeside the app install - Planned: upload to WiGLE / WDGWars (keys already live in Settings)
Alpha 0.0.5 — run from source until a GitHub Release is published (packaging scripts and Actions are in the repo).
Releases are not published yet (alpha 0.0.5). When they exist:
- Open this repository’s Releases page.
- Download the file for your OS:
- Windows portable —
…-windows-portable.zip(extract and run the.exe) - Windows installer —
…-windows-setup.exe(run the Setup wizard) - Mac —
…-mac-apple-silicon.tar.gzor…-mac-intel.tar.gz - Linux —
…-<distro>.tar.gz(e.g.…-ubuntu.tar.gz)
- Windows portable —
- Extract if needed, then run Wardrive Log Visualizer.
Until then, run from source (see CONTRIBUTING.md).
- Drop a CSV onto the square on the left, or use File → Add logs. Loaded files appear under the square. Toggle a file off to hide it from the map without removing it; toggle it back on to load it again. × on the right drops it from the list entirely. File → Clear log unloads everything.
- The app merges the files that are on, keeps every logged row, and stitches them by FirstSeen. Points are drawn from those coordinates. Adding another log refits the map around everything loaded so far.
- Scroll to zoom toward the cursor. Drag to move the map. Click a point to read its fields. Previous, Next, or the arrow keys move through the visible log. View → Fit map frames every point again; View → Center pans to the selection. Click a type in the legend (WIFI, BLE, LTE, NR) to hide or show it — gray means off.
- File → Combine merges and saves. Clean blacklists each enabled file and writes
{name} CLEAN.csvonly when something was removed (no hits → skip that file; multiple hits → pick a folder). Clean and Combine merges first, then blacklists — always saves the merge; appendsCLEANonly when rows were removed. Over the line cap on combine paths →Part Nfiles. - File → Split CSV splits by the Settings line cap — map import never auto-splits.
- Settings holds Dropzone/Cleared folders, pulse interval, Blacklist, keys, and activity log helpers. Automation → Process Dropzone runs one inbox pass immediately.
- Prefer WiGLE CSV 1.6 when sharing or uploading — it is the shared format for WiGLE and WDGWars CSV ingest.
- Keep real capture files out of the repo; use a local folder and gitignored paths.
- Counts match the CSV. An on-device app may show a higher “seen” total if it filters personal devices from the export.
- If a file fails to parse, the status line names it. The logs that loaded stay on the map.
- Drag-and-drop needs
tkinterdnd2(installed byscripts/setup_env). Add logs works without it. - Local files next to the app (not on GitHub):
settings.xml,blacklist.xml,logs/activity.log. - Inbox / Dropzone only picks up top-level
*.csvfiles. After a successful pass, sources become*.csv.done. Cleared outputs useWardriving Log {Month} {DayOrdinal} {Year}.csv(andPart Nif split) — noCLEANword on automation titles. Blacklist still strips matching rows into Cleared. File → Clean / Clean and Combine appendCLEANonly when the blacklist actually removed rows.
MIT — see LICENSE.
Want to build from source or send a pull request? See CONTRIBUTING.md.