这似乎是一个愚蠢的问题,但我找不到任何方法来判断数据包是否仅被部分捕获。我可以在数据包结构中找到的所有数据长度都使用来自标头的长度,甚至字节结构似乎都用垃圾填充数据。IE,如果我捕获一个 768 字节数据包的 50 个字节,那么数据包中有 768 个字节的“数据”。
Wireshark 源在解析数据包时似乎需要异常才能知道它仅被部分捕获。我只是在阅读标头信息,所以我没有解析任何超出 TCP 标头的内容。
如果有办法做到这一点,我真正想做的是构建一个适用于快照长度限制捕获的进度条。
谢谢,
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 代码,因此不太可能实现解析器。