0

我有一个通过特殊开关捕获的数据包捕获,该开关在 FCS 之前附加时间戳。这些通常被称为“预告片时间戳”。

但是,在这样做之后,FCS数据包末尾的 不会更新。因此,当我将数据包捕获加载到 Wireshark 中时,所有数据包都被报告为具有不正确的帧检查序列。

有没有像editcapetc.. 这样的实用程序,我可以用它来删除x每个数据包的最后一个字节pcap

4

3 回答 3

1

请在 Wireshark 问题列表中为此提出问题;特殊处理带有捕获切换预告片的帧可能是有意义的。

于 2022-03-04T03:02:06.210 回答
1

是的,editcap可以删除x每个数据包的最后一个字节。从editcap手册页:

-C [offset:]<choplen>

    Sets the chop length to use when writing the packet data. Each packet is 
    chopped by <choplen> bytes of data. Positive values chop at the packet
    beginning while negative values chop at the packet end.

示例:删除每个数据包的最后 4 个字节

editcap.exe -C -4 foo.pcap foo_chopped.pcap

当然,这样做会导致每个数据包被指示为:

[Packet size limited during capture: Ethertype truncated]

...这当然是一个误导性的消息,因为 Ethertype 没有被截断,在这种情况下,只有 FCS 被删除的以太网帧。尽管如此,这是一个相当无害的指示,因此该解决方案可能适合您的需求。

或者,您可以更简单地禁用以太网校验和验证。通过 执行此操作Edit -> Preferences -> Protocols -> Ethernet -> Validate the Ethernet checksum if possible:deslect -> OK

于 2022-03-03T17:51:28.053 回答
0

我使用https://github.com/seladb/PcapPlusPlus编写了自己的应用程序

基本上你可以使用 pcapplusplus 并遍历每个 RawPacket 并执行类似的操作

rawPacket.removeData(rawPacket.getRawDataLen() - FCS_LEN - bytesToRemove, bytesToRemove);
于 2022-03-04T04:54:07.543 回答