/rshark

Simple Packet Monitoring Tool

Primary LanguageRustApache License 2.0Apache-2.0

Rshark

CI

A terminal UI based packet monitoring tool written in Rust.

Example UI

Installation

Works only on Unix-like OSes for now.

Prerequisites: rust and cargo.

  1. git clone this repository.
  2. cd rshark
  3. cargo install --path . should install the binary. Make sure $HOME/.cargo/bin is in your $PATH variable.

Usage

USAGE:
    rshark [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -i, --interface <INTERFACE>    Sets network interface to capture packets on

Note that since rshark sniffs network packets, it requires root privileges

How to Run

  1. Find a network device to monitor. To find one using OSX:

networksetup -listallhardwareports

  1. Run the binary on a device, e.g. WiFi, must run as root. sudo cargo run -- -i en0

Keyboard bindings

key alternate description
k move cursor up
j move cursor down
g move cursor at begin
G move cursor at end
ESC reset cursor position
q CTRL+C quit program
J TAB toggle focus between the panels: list of packets or single packet information

Support

Please open an issue and we'll try to help.

Roadmap

  • Add code formatting check in CI.
  • Add clippy checks for better and idiomatic Rust code.
  • Maybe a separate thread for running a timer, to get time of arrival of packets.
  • Use the insta crate for snapshot testing(or UI testing).
  • Gracefully handle errors instead of just panicking.
  • Maybe add a logging functionality for catching errors.

Contributing

Please check out the contribution guide here.

Authors and Acknowledgement

This project is running thanks to all the contributors.

License

Apache License 2.0