使用scapy.sniff获取pcap文件中的“以太网帧”的问题

时间:2019-05-27 07:20:02

标签: scapy pcap

目标:从pcap文件获取到达时间 语言:python3.7 工具:Scapy.sniff

首先,我想获取到达时间数据,在 .pcap中,当我使用wireshark时,我看到了以太网帧中的数据,但是当我使用  #Scapy.sniff(offline =' .pcap'),我只获取Ether,TCP,IP和其他资源,那么如何获取该数据? 非常感谢!

>>from scapy.all  import *
>>a = sniff(offline = '***.pcap')
>>a[0]

[out]:
<Ether  dst=*:*:*:*:*:* src=*:*:*:*:*:* type=** |<IP  version=4 ihl=5 tos=0x20 len=52 id=14144 flags=DF frag=0 ttl=109 proto=tcp chksum=0x5e3b src=*.*.*.* dst=*.*.*.* |<TCP  sport=gcsp dport=http seq=1619409885 ack=1905830025 dataofs=8 reserved=0 flags=A window=65535 chksum=0xfdb5 urgptr=0 options=[('NOP', None), ('NOP', None), ('SAck', (1905831477, 1905831485))] |>>>
[ ]:

1 个答案:

答案 0 :(得分:1)

pcap中的数据包时间在time成员中可用:

print(a[0].time)

它被保存为浮点值(标准python“时间戳”格式)。为了以更容易理解的形式获取它,您可能需要使用datetime模块:

>>> from datetime import datetime
>>> dt = datetime.fromtimestamp(a[0].time)
>>> print(dt)
2018-11-12 03:03:00.259780

Scapy文档不是很好。使用交互式帮助工具可能很有启发性。例如,在解释器中:

$ python
>>> from scapy.all import *
>>> a = sniff(offline='mypcap.pcap')
>>> help(a[0])

这将向您显示由a[0]表示的对象的所有方法和属性。就您而言,这是class Ether(scapy.packet.Packet)的实例。