如何使用scapy计算数据包

How to count packet using scapy

我在 scapy 中计算新数据包时遇到问题。这意味着我尝试计算每个被嗅探的数据包。我是这样写的,但在输出中我有新的数据包,而且他下面总是有一个。

我当前的代码是:

def print_packet(packet):
    count = 0
    ip_layer = packet.getlayer(IP)
    print("[!] New Packet: {src} -> {dst}".format(src=ip_layer.src, dst=ip_layer.dst))
    count += 1
    print(count)

print("[*] Start sniffing...")
sniff(iface=interface, filter="ip", prn=print_packet)
print("[*] Stop sniffing"

您的 count 变量是 print_packet 函数的局部变量。您应该在该函数之外定义全局 count

count = 0

def print_packet(packet):
    global count
    ip_layer = packet.getlayer(IP)
    print("[!] New Packet: {src} -> {dst}".format(src=ip_layer.src, 
              dst=ip_layer.dst))
    count += 1
    print(count)

print("[*] Start sniffing...")
sniff(iface=interface, filter="ip", prn=print_packet)
print("[*] Stop sniffing")