我需要处理一个7 7GB的pcap文件来提取他们的数据包大小,有效载荷大小。我最初使用scapy的PcapReader来提取这些大小,但是对于7 7GB的文件,scapy运行起来真的很慢。所以我改用DPKT库,但是,我不知道如何检查它的TCP负载大小。
import dpkt
payload_size=[]
packet_size=[]
for ts,buf in dpkt.pcapng.Reader(open('pcap file','rb')):
eth=dpkt.ethernet.Ethernet(buf)
if eth.type==dpkt.ethernet.ETH_TYPE_IP:
ip=eth.data
if ip.p==dpkt.ip.IP_PROTO_TCP:
packet_size.append(ip.len)
payload_size.append(?)
else:
pass发布于 2020-12-16 14:27:36
查看dpkt的IP类的源代码
def __len__(self):
return self.__hdr_len__ + len(self.opts) + len(self.data)它们将长度计算为标题、选项和数据长度。因此,我认为您可以通过以下方式获得有效载荷长度:
payload_size.append(len(ip.data))更新:
OP想要TCP有效载荷。TCP的来源是类似的:
def __len__(self):
return self.__hdr_len__ + len(self.opts) + len(self.data)因此TCP有效负载的长度应该是len(ip.data.data)。
if ip.p==dpkt.ip.IP_PROTO_TCP:
tcp = ip.data
payload_len = len(tcp.data)https://stackoverflow.com/questions/65318165
复制相似问题