Skip to content

zz85/packet_radar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Packet Radar

Packet Radar is an experimental realtime network traffic analyzer and visualizer.

It captures packets like pcap and displays the information in various ways like wireshark.

  • packet fight viz - visualizes and animates packets transferring between hosts.
  • packet stats - a dashboard showing real-time network telemetry like data rates.
  • packet top - shows top connections
  • packet tail - a simple packet log viewer

This started as a weekend project project for

  • playing around with rust
  • exploring and understanding some network protocol details
  • playing around with visualizations, animations and simulations

If you like this, you may also be interested in Space Rader, a disk space visualization app.

Core code is written in rust, Visualization UI is done with Canvas + JS.

Utilities

ja4dump - like tcpdump but for JA4 TLS client fingerprinting ja4top - shows ja4 and associated processes

Building

### If you need to install rust
curl https://sh.rustup.rs -sSf | sh

### Compile and run
cargo run

### On Linux Kernel >= 2.2
cargo build
sudo setcap cap_net_raw,cap_net_admin=eip target/debug/packet_radar
cargo run

(s/debug/release if --release)

### Or if you require sudo
cargo build
sudo target/debug/packet_radar -m

(s/debug/release if `--release`)

Technical

There are 3 ways packets are processed -

  1. using pcap lib
  2. using pnet datalink
  3. using pcapng parsing

The main module parses the network packets, depending on what protocol has been implemented. Some state is kept in statically, while tcp+udp packets as well as JA4 events are emitted via a crossbeam mpsc channel.

The evented model allows writing isolated experiments by rebuilding state while collecting events. One example is ja4dump, and others through the web visualization that's basically a broadcast of the mpsc channels proxied over websockets to the browser.

Another way to write modules is to access the shared state. One example is ja4top.

Or a module who take a combination of both. One example is processes rs where it build it own "top" state, but it also has the ability to access the shared connection states to enrich it with process infomation.

Visualization

open `html/packet_viz.html` in your browser

Contributors

  • Joshua Koo
  • Yang Bin Kwok

Related projects

ChangeLog

Jun 5, 2024 - basic QUIC client hello parsing (available in packet_radar, ja4dump, ja4top)

May 24, 2024 - Ability to read from pcap file or stdin (eg. sudo tcpdump -w - | sudo packet_radar -p - ). On macs, tcpdump using pktap will provide process id information during packet capture. This method requires sudo, but for unprivileged users, the lsof method will be the fallback.

IDEAs / TODO

  • DNS resolution
  • Find local addresses
  • Ping / ICMP Traceroute probes
  • TCP/UDP trace probes
  • Traffic categorization (UDP, TCP,..
  • TLS, QUIC)
  • DNS capture
  • RTT / light distance Analysis
  • Packet replay
  • Terminal interface
  • Visual traceroute
  • [-] Geoip / ASN breakdown
  • Whois / What's my ip whatsmyip
  • SSL Key log decoding
  • TLS Parsing and Fingerprinting
    • JA4 Fingerprinting stats by processes
    • TLS Stats
  • [-] Quic Packet Parsing
  • Sankey diagrams
  • Netstat / Socket listings
  • Break connections by processes - Top process bandwidth
  • Top connection/processes by bandwidth
  • Viz: breakdown by processes
  • Metadata mapping
  • Plugable architecture

About

Realtime Network Analysis and Visualization

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published