Note
Old versions of ipmap are now located at grantshandy/ipmap-old.
This version of ipmap is not complete, but is nearly done. Release tarballs will be available soon.
A GUI viewer for saphics/ip-location-db ip-geolocation databases,
which can display your computer's live network traffic and perform trace routes.
| Search | Capture | Traceroute |
|---|---|---|
On Linux, install WebKitGTK.
- On Linux, install
libpcap. - On Windows, install Npcap with network capture for non-administrator users.
- On MacOS,
libpcapis already installed.
On Windows, you must enable a firewall rule to send ICMP packets for the traceroute feature.
New-NetFirewallRule -DisplayName "ICMPv4 Ipmap Allow" -Name ICMPv4_IPMAP_ALLOW -Protocol ICMPv4 -Action Allow
New-NetFirewallRule -DisplayName "ICMPv6 Ipmap Allow" -Name ICMPv6_IPMAP_ALLOW -Protocol ICMPv6 -Action Allow
Enable-NetFirewallRule ICMPv4_IPMAP_ALLOW
Enable-NetFirewallRule ICMPv6_IPMAP_ALLOWRequirements:
$ pnpm install -C ui
$ cargo build --release --package ipmap-child
$ cargo tauri build/crates/desktop- The main program entrypoint, starts tauri and generates Typescript IPC types./ipgeo- Data structures for representing ip-geolocation databases./ipgeo-state- UI state and methods for loading and switching ip-geolocation databases./pcap-dyn- Dynamic bindings to thelibpcapC library, modeled after thepcapcrate./pcap-state- UI state and command for packet capture./child- A separate child process (ipmap-child) for executing privileged features such as packet capture and traceroute./child-ipc- Shared types betweenpcap-stateandipmap-childfor IPC and methods for executingipmap-child.
/ui- The desktop UI, written with Svelte and Typescript.
flowchart TD
subgraph ipmap["ipmap process"]
subgraph backend["Rust Backend"]
desktop -> ipgeo
end
frontend["Native WebView UI (Svelte)"] <--specta generated typescript IPC--> desktop
end
subgraph child["ipmap-child process"]
trippy-core
pcap-dyn
end
desktop <--child-ipc types--> child
- Check MacOS compatibility.
- Improve logging.
- Add database file association.
- Find a new project name (?).
- Animated demo in readme.
- Light/dark mode with system. Try to match native UI?
- Translate user interface.
- Get default network interfaces with native APIs.
- Add multi-lingual readmes (zh, es).
- Remove
public-ip-addressbloated dependency, create our own solution. - Add settings dialog.
- Different map layers?
- Capture report frequency and connection timeout.
- Reverse location-to-ip-block search
- Location Heatmap generation (custom webview protocol that serves leaflet tiles?)
- Set child permissions through UI