Как посчитать пакет используя scapy - PullRequest
0 голосов
/ 16 ноября 2018

У меня проблема с подсчетом нового пакета в 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"

1 Ответ

0 голосов
/ 16 ноября 2018

Ваша переменная 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")
...