python - 如何使用 scapy 计算数据包数量

标签 python 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")

关于python - 如何使用 scapy 计算数据包数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53328387/

相关文章:

python - 使用 python scapy 发送 DHCP 发现

python - Pandas+seaborn 多维数据框分面

python - 确定 (*,G) 是否形成群论中的结合群

python - 带按钮的 Tkinter 幻灯片

python - 如何在反向 shell 中处理 rm 和 cp 命令

python - Linux TCP 奇怪的行为

Python 2.6 Scapy rdpcap错误

python - 重启redis需要很长时间

python - PDF读取错误: File has not been decrypted

python-3.x - Python3 - 在操作系统中安装 Scapy