2014-02-13 53 views
1

我使用参数-s 100(这意味着我只捕获数据包的标头)使用tcpdump捕获WiFi流量。整个数据包长度Scapy

当我加载.pcap文件并处理它与Scapy的我做的:

pkts = rdpcap(pcapfile) 
totalbytes = 0 
for pkt in pkts: 
    totalbytes += len(pkt) 

然而,正如我在截断捕捉,做len(pkt)不会给我全包长度(帧长度 ),它会给我捕获的数据包长度。我怎样才能得到真正的数据包长度?

额外:正如我在一些场合做之前,我在Wireshark的打开PCAP文件,然后搜索感兴趣的十六进制值。但在这种情况下(frame.len)将显示我正在查找的值,但我无法找到wireshark获取此实际数据包长度的方式,而无需捕获整个数据包。

回答

2

rdpcap函数使用PcapReader类读取数据包。不幸的是,这个类丢弃了您在read_packet方法中查找的信息,即使它在pcap文件中找到。所以你必须直接使用RawPcapReader

totalbytes = 0 
for pkt, (sec, usec, wirelen) in RawPcapReader(pcapfile): 
    totalbytes += wirelen 
+0

令人惊叹的赫尔穆特!非常感谢!没有任何信息像疯了似的搜索。我希望这可以帮助其他人。 – EnriqueH