1

这似乎是一个愚蠢的问题,但我找不到任何方法来判断数据包是否仅被部分捕获。我可以在数据包结构中找到的所有数据长度都使用来自标头的长度,甚至字节结构似乎都用垃圾填充数据。IE,如果我捕获一个 768 字节数据包的 50 个字节,那么数据包中有 768 个字节的“数据”。

Wireshark 源在解析数据包时似乎需要异常才能知道它仅被部分捕获。我只是在阅读标头信息,所以我没有解析任何超出 TCP 标头的内容。

如果有办法做到这一点,我真正想做的是构建一个适用于快照长度限制捕获的进度条。

谢谢,

4

1 回答 1

0

tshark如果您在使用或进行数据包捕获时按 ctrl+c tcpdump,您可以复制它。如果捕获在数据包中间中断,则pcap和 pcapng 数据包标头中的捕获长度和实际长度字段将有所不同。

根据文档,对于单个数据包标头,相关字段是:

Public Fields
  CaptureLength uint . The the bytes actually captured. If the capture length is 
                         small CaptureLength might be less than PacketLength  
  PacketLength  uint . The length of the packet on the line

我在shappcap repo中没有看到 pcapng 代码,因此不太可能实现解析器。

于 2020-05-08T23:07:26.923 回答