Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python获取TCP时间戳(TSval)_Python_Wireshark_Scapy - Fatal编程技术网

如何使用python获取TCP时间戳(TSval)

如何使用python获取TCP时间戳(TSval),python,wireshark,scapy,Python,Wireshark,Scapy,我搜索了好几个地方,但没有找到这个问题的简单答案- 我有一个使用Wireshark生成的.pcap文件,其中包含几个数据包,我希望从每个数据包中提取它的TCP时间戳(TSval)。 我用scapy打开了每个包 packets = rdpcap('pcap_file.pcap') for packet in packets: print(packet.payload.id) 但是我找不到数据包的TSval(即使我用Wireshark打开数据包时可以看到TSval字段,如下图所示) 数据包

我搜索了好几个地方,但没有找到这个问题的简单答案- 我有一个使用Wireshark生成的.pcap文件,其中包含几个数据包,我希望从每个数据包中提取它的TCP时间戳(TSval)。 我用scapy打开了每个包

packets = rdpcap('pcap_file.pcap')
for packet in packets:
    print(packet.payload.id)
但是我找不到数据包的TSval(即使我用Wireshark打开数据包时可以看到TSval字段,如下图所示)


数据包可以像字典一样访问,其密钥是协议,值是有效负载。例如,您可以在如下数据包中打印TCP有效负载:

如果TCP在数据包中:
数据包[TCP].show()
现在要获取有效负载的
TSval
,您必须查看TCP选项。scapy将每个TCP选项编码为一对
(选项名称、选项值)
。对于时间戳选项,选项值本身是一对
(TSval,TSecr)
。因此,您基本上可以通过以下操作获得您想要的:

从scapy.all导入TCP、rdpcap
packets=rdpcap('packets.pcapng')
对于分组中的分组:
如果TCP在数据包中:#忽略没有TCP负载的数据包
对于OPT,VALIN包[TCP]。
如果opt==“时间戳”:
TSval,TSecr=val#解码选项的值
打印('TSval=',TSval)

它们不是真正的字典,只是部分地起到了字典的作用