问题描述
我正在使用Python和Scapy分析pcap文件。
目前,我可以计算出数据包的数量
我想计算SYN和ACK数据包的数量,有没有办法做到这一点?
到目前为止,我的主要代码是
for (pkt_data,pkt_Metadata,) in RawPcapReader(file_name):
count+=1
解决方法
代码如下:
import scapy.all as scapy
from scapy.layers.inet import TCP
pkt_count = 0
pkt_tcp_ack_count = 0
pkt_tcp_syn_count = 0
for pkt in scapy.PcapReader(file_name):
pkt_count += 1
if TCP in pkt:
if "A" in pkt[TCP].flags:
pkt_tcp_ack_count += 1
if "S" in pkt[TCP].flags:
pkt_tcp_syn_count += 1
print("pkt_count: %d" % pkt_count)
print("pkt_tcp_ack_count: %d" % pkt_tcp_ack_count)
print("pkt_tcp_syn_count: %d" % pkt_tcp_syn_count)
现在,有一些上下文。 Scapy正在构建所有层,因此您只需查询数据包中它们的存在即可。
对于给定的数据包,您可以运行:
pkt.show()
它向您展示了scapy如何对数据包进行解码