如何解决如何使用python获取TCP时间戳TSval
我在多个地方进行了搜索,但找不到这个问题的简单答案- 我有一个.pcap文件,该文件使用Wireshark生成,其中包含多个数据包,我希望从每个数据包中提取它的TCP时间戳(TSval)。 我已经设法使用Scapy打开每个数据包
packets = rdpcap('pcap_file.pcap')
for packet in packets:
print(packet.payload.id)
但是我找不到数据包的TSval(即使当我用Wireshark打开数据包时可以看到数据包中的TSval字段,如下图所示)。
https://gstreamer.freedesktop.org
解决方法
可以像字典一样访问数据包,其字典的键是协议,值是有效载荷。例如,您可以将TCP有效负载打印在这样的数据包中:
if TCP in packet:
packet[TCP].show()
现在要获取有效负载的TSval
,必须在TCP选项中查看。 scapy将每个TCP选项编码为一对(option name,option value)
。对于时间戳选项,选项值本身是一对(TSval,TSecr)
。因此,您基本上可以执行以下操作:
from scapy.all import TCP,rdpcap
packets = rdpcap('packets.pcapng')
for packet in packets:
if TCP in packet: # ignore packets without TCP payload
for opt,val in packet[TCP].options: # consider all TCP options
if opt == 'Timestamp':
TSval,TSecr = val # decode the value of the option
print('TSval =',TSval)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。