tcpdump:文件大小无效

Posted

技术标签:

【中文标题】tcpdump:文件大小无效【英文标题】:tcpdump: invalid file size 【发布时间】:2021-09-19 17:06:23 【问题描述】:

我正在尝试运行文件大小为 4096 的 tcpdump 命令,但它返回错误:-

命令:- tcpdump -i any -nn -tttt -s0 -w %d-%m-%Y_%H:%M:%S:%s_hostname_ipv6.pcap -G 60 -C 4096 端口 53

经过一些点击和试用后,我发现文件大小(4096 即 2^12)(8192 即 2^13)等失败。

所以,对于 2^11 之后的文件大小,它给了我无效的文件大小错误。

谁能告诉我 tcpdump 在什么情况下返回无效的文件大小。

当我使用文件大小运行时:- 100000

tcpdump -i any -nn -tttt -s0 -w %d-%m-%Y_%H:%M:%S:%s_hostname_ipv6.pcap -G 60 -C 100000 53端口

正在创建最大大小为 1.3GB 的.pcap 文件。

我也尝试查看 tcpdump 的源代码,但找不到太多。

【问题讨论】:

【参考方案1】:

我正在尝试运行文件大小为 4096 的 tcpdump 命令

引用最新版本的 tcpdump 手册页:

   -C file_size
          Before writing a raw packet to a  savefile,  check  whether  the
          file  is  currently  larger than file_size and, if so, close the
          current savefile and open a new one.  Savefiles after the  first
          savefile  will  have the name specified with the -w flag, with a
          number after it, starting at 1 and continuing upward.  The units
          of  file_size  are  millions  of  bytes  (1,000,000  bytes,  not
          1,048,576 bytes).

所以-C 4096 表示文件大小为 4096000000 字节。这是一个很大的文件大小,在旧版本的 tcpdump 中,-C 标志不支持这么大的文件大小(大于 2147483647)。

如果你的意思是你希望它写出大小为 4K 字节的文件,不幸的是 tcpdump 不支持。这意味着通过合并 tcpdump pull request 916 修复 tcpdump issue 884 已经过去了 - 我现在会这样做,但现在对你没有帮助。

当我使用文件大小运行时:- 100000

这是 100000000000 的文件大小,即 100 GB。不幸的是,如果您希望文件大小为 100000 字节(100 KB),那么当前的最小文件大小为 1 兆字节,因此不支持。

【讨论】:

但是,当我运行文件大小为 5000 的 tcpdump 时,tcpdump 启动了,它没有给出类似“tcpdump:无效文件大小”的任何错误。您能否对此进行澄清。此外,经过一些点击和试用后,我发现文件大小(4096 即 2 ^ 12)(8192 即 2 ^ 13)等都失败了。因此,对于 2^11 之后的文件大小,它给了我无效的文件大小错误。 “请您对此进行澄清。”是的 - 创造一个短语,“溢出发生”。 4.10 之前的 tcpdump 版本只执行 Cflag = atoi(the argument) * 1000000; 并报告错误当且仅当 CFlag 的结果值 CFlag 是 int,就像在 1.9 之前的 tcpdump 版本中一样, 结果 happens 设置了最高位,它是否定的;如果它是long,就像在 1.9.x 中一样,它会扩展符号,这意味着会发生同样的事情。 1.10 修复了测试以正常工作。 “所以,对于 2^11 之后的文件大小,它给了我无效的文件大小错误。” 5000 > 2048,所以,不,它不是给你“无效的文件大小”(是的,“之间有一个空格”文件”和“大小”)对于所有值 > 2^11。 不,是文件大小而不是文件大小。如果可能的话,如果观察到相同的行为,请您也尝试在您的系统上。 “不,它是文件大小而不是文件大小。如果可能,如果观察到相同的行为,请您也尝试在您的系统上。”我做了,它说“文件大小”。我还查看了从 0.7 到 1.10 的所有 tcpdump 版本的源代码,他们说“文件大小”。

以上是关于tcpdump:文件大小无效的主要内容,如果未能解决你的问题,请参考以下文章

tcpdump

错误 itms-90122 - 无效的可执行文件大小

Linux抓包工具

linux之抓包神器tcpdump

tcpdump抓包工具

Linux命令之tcpdump