tcpdump --- 将数据包捕获到非旋转文件

tcpdump --- 将数据包捕获到非旋转文件
tcpdump -i eth0 -C 5 -W 1 -w <file name>&

我使用上述命令在 Ubuntu 机器上将数据包捕获到 5MB 的 pcap 文件中。一旦 pcap 文件达到最大大小(5MB),文件就会旋转并从 0KB 重新开始。

我需要知道一旦文件达到最大大小,我们是否可以阻止 tcpdump 旋转文件,并从那时起丢弃数据包。

答案1

如果您有权访问wireshark/tshark:

tshark -i eth0 -a filesize:5000 -w my.pcap &

答案2

我找到了一个方法!!!!

tcpdump我们可以像下面这样进行 hack

tcpdump -i eth0 -C 5 -W 2 -w my.pcap -z ./stop.sh&

stop.sh

# !/bin/sh
pkill tcpdump
rm my.pcap0

这对我有用……

答案3

看起来 tcpdump (4.9.2) 在与捕获时间 (-G) 一起使用时仅支持文件计数 (-W)。另一种仅捕获到一个文件的方法是通过限制数据包计数 (-c)。 tcpdump 似乎无法写入受大小限制的非旋转文件(-C)。

根据源代码有这个退出语句

if (Cflag == 0 && Wflag > 0 && Gflag_count >= Wflag) {
    (void)fprintf(stderr, "Maximum file limit reached: %d\n",
        Wflag);
    info(1);
    exit_tcpdump(0);
    /* NOTREACHED */
}

它特别测试 Cflag(文件大小)是否为零。

示例 1:按数据包计数

# tcpdump -vi any -w ./count.pcap -c 42 ip

示例 2:按捕获时间

# tcpdump -vi any -w ./time.pcap -G 7 -W 1 ip

结果:各 1 个文件

# ls
count.pcap  time.pcap

华泰

相关内容