Python 提取数据包有效负载长度
我通过Wireshark捕获了一些Internet数据包,现在我只想使用Python 提取数据包有效负载长度,python,wireshark,packet-capture,payload,Python,Wireshark,Packet Capture,Payload,我通过Wireshark捕获了一些Internet数据包,现在我只想使用PYTHON从数据包的总长度中提取有效负载长度。我可以使用pkt.length或pkt.captured\u length获取数据包的完整长度。但是我没有找到任何只提取有效负载大小的命令。有效负载大小必须根据嵌入的协议头和长度计算。例如,IP总长度(很可能是您所看到的“数据包长度”)是整个IP数据报的长度,包括IP报头、嵌入式协议报头和数据。要查找有效负载长度,必须像IP堆栈一样: 通过将第一个字节的低位半字节乘以4来确定
PYTHON
从数据包的总长度中提取有效负载长度。我可以使用pkt.length
或pkt.captured\u length
获取数据包的完整长度。但是我没有找到任何只提取有效负载大小的命令。有效负载大小必须根据嵌入的协议头和长度计算。例如,IP总长度(很可能是您所看到的“数据包长度”)是整个IP数据报的长度,包括IP报头、嵌入式协议报头和数据。要查找有效负载长度,必须像IP堆栈一样:
- 通过将第一个字节的低位半字节乘以4来确定IP头的长度(可能是20,但它可以有选项)李>
- 根据IP报头中第9个字节的值确定嵌入式协议报头
- 确定嵌入式协议头的头长度;例如,如果这是TCP,则将第十二个字节的高阶半字节乘以4,以确定包含选项的TCP报头的总报头长度
当然,从IP的角度来看,您可以从总长度中减去IP头的长度;从IP的角度来看,其内部的所有内容都只是有效负载。:) 包中的内容是否包含更多组件?请查阅传入数据包的协议信息(或复制粘贴一些Wireshark转储)。