#pcap #gnuplot #command-line-tool #networking #cli

app plotcap

根据PCAP文件,使用gnuplot绘制数据包和数据速率随时间的变化图

4个版本

0.1.3 2023年8月22日
0.1.2 2023年8月21日
0.1.1 2022年7月15日
0.1.0 2022年7月13日

#gnuplot中排名第3

每月下载量25

BSD-3-Clause

90KB
207 代码行

plotcap

简介

plotcap 是一个用于绘制PCAP文件中网络流量数据包和速率的小型命令行工具。

它以固定的时间间隔(默认为1秒,但可以通过 -i 参数进行调整)聚合三个测量值

  • 数据包数量
  • 线上字节
  • 捕获的字节(如果snaplen小于数据包大小,则与线上大小不同)

plotcap 然后生成一个可执行的 gnuplot 脚本,该脚本嵌入上述测量的数据,并在两个Y轴(左侧为每秒的数据包数,右侧为每秒的字节数)上以相对时间作为X轴绘制它们。

由于输出文件可以相对较小,您可以轻松地将它从执行 plotcap 的系统复制出来(在受限环境中的一种实用技巧,特别是在具有静态链接的二进制文件的情况下 - 见下文部分)然后在笔记本电脑(或安装了 gnuplot 的任何GUI系统)上执行脚本进行可视化。

请注意,输出脚本以持久模式(-p)运行 gnuplot 并使用 pause mouse close 允许与绘图交互。这有助于放大区域(尝试右键单击并拖动)。

构建

要安装 plotcap 的最新版本,请确保您已安装 Rust工具链,然后运行

cargo install plotcap

或者,要从源码构建(在 target/release/plotcap 中的二进制文件)

cargo build --release

要构建 plotcap 的静态链接版本,您需要Rust MUSL工具链,您可以使用以下命令安装

rustup target add x86_64-unknown-linux-musl

...

cargo build --target=x86_64-unknown-linux-musl --release

生成的静态二进制文件位于 target/x86_64-unknown-linux-musl/release/plotcap

用法

plotcap --help
plotcap 0.1.3
Simeon Miteff <[email protected]>
Plot packet and data rates over time given a PCAP file, with gnuplot.

USAGE:
    plotcap [OPTIONS] --read <FILE> --output <FILE>

OPTIONS:
    -h, --help                   Print help information
    -i, --interval <INTERVAL>    [default: "1 second"]
    -o, --output <FILE>
    -r, --read <FILE>
    -V, --version                Print version information

示例

smtp.pcap 是一个 ~2小时、~4.3GB 的文件,包含 800 万个数据包。为了减少绘图点的数量,我们将聚合时间增加到 60 秒,使用 -i 60s

plotcap -r smtp.pcap -i 60s -o smtp-60s.plg

生成的 smtp-60s.plg 包含 142 行(5.4KB)。运行脚本将生成

plotcap output for smtp.pcap

everything.pcap 是一个 ~37秒、~38GB 的文件,包含 3700 万个数据包。我们使用默认的聚合间隔运行 plotcap

plotcap -r everything.pcap -o everything.plg

输出文件包含 60 行(2.5KB)。运行它将生成

plotcap output for everything.pcap

依赖项

~3.5–9.5MB
~88K SLoC