提取分组有效载荷长度

时间:2018-07-11 06:55:51

标签: python wireshark packet-capture payload

我通过Wireshark捕获了一些Internet数据包,现在我只想使用PYTHON从数据包的总长度中提取有效载荷长度。我可以使用pkt.lengthpkt.captured_length获得数据包的完整长度。但是我没有找到任何仅提取有效载荷大小的命令。

1 个答案:

答案 0 :(得分:1)

有效负载大小必须根据嵌入式协议标头和长度来计算。例如,IP总长度(很可能是您所看到的“数据包长度”)是整个IP数据报的长度,包括IP标头,嵌入式协议标头和数据。要找到有效负载长度,您必须像IP堆栈一样:

  • 通过将第一个字节的低位半字节乘以4来确定IP标头的长度(可能为20,但可以有选择)。
  • 根据IP标头中第9个字节的值确定嵌入式协议标头
  • 确定嵌入式协议标头的标头长度;例如,如果是TCP,则将第12个字节的高位半字节乘以4,以确定TCP报头(包括选项)的总报头长度。

如果将这些值相加,则可以从IP总长度(数据包长度)中减去它们,以确定有效载荷长度。

当然,从IP的角度来看,您可以从总长度中减去IP标头的长度。从IP的角度来看,其中的所有内容都是有效载荷。 :)