如何使用 tshark 或 tcpdump 计算传输的字节数

如何使用 tshark 或 tcpdump 计算传输的字节数

我在 tshark 中使用这个命令:

tshark -r pcapfile "tcp and ip.src==192.168.1.1" -T text -V -x | grep 'Total Length'

这实际上会解析 pcap 中来自源 ip 的连接,并查找每个数据包的总长度(以字节为单位)。我得到如下输出:

Total Length: 125 
Total Length: 210 
Total Length: 40 
Total Length: 125
> etc, etc....

我需要做的是从总长度中获取数字并将它们相加,这样我就能了解在单个 IP 的 pcap 时间范围内通过网络传输了多少数据。

是否有命令可以添加到我用来执行此操作的命令的末尾?或者是否有方法可以将其定向到 stdout,然后将其传送到可以解析和计算我想要的内容的程序?有谁知道 tcpdump 中可以执行此操作的类似命令?

答案1

awk可以对一列数字求和。类似这样的方法应该可以解决问题。

假设你的 tshark 的输出如下foo.txt

$ cat foo.txt | awk '{ sum += $3 } END { print sum }'

您也可以将“grep”的输出直接传送到awk,它将以类似的方式工作。

答案2

你可以纯粹依靠tsharkIO 统计计算器的统计选项来做到这一点:

tshark -r pcapfile -z io,stat,0,"SUM(frame.len)frame.len && ip.src == 192.168.1.1 && ip.proto == 6"

这将显示一个板,其中的SUM列是您要查找的数据。

相关内容