在C#中使用SharpPCap进行解析时,如何判断PCAPNG文件是否是用有限的捕捉长度捕获的



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

Wireshark源在解析数据包时似乎需要一个异常才能知道它只被部分捕获。我只读取标头信息,所以我不会解析TCP标头之后的任何内容。

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

谢谢,

如果在使用tsharktcpdump捕获数据包时按下ctrl+c,则可以复制此操作。如果捕获在数据包中间中断,则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

我在sharppcap repo中没有看到pcapng代码,所以不太可能实现解析器。

最新更新