使用Python和Scapy计算SYN和ACK数据包的数量

问题描述

我正在使用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如何对数据包进行解码