首页 > 解决方案 > Scapy区分ICMP数据包的类型

问题描述

我正在使用 scapy 读取给定接口上的 ICMP 流量。我期待此接口上的 ping 和 traceroute 流量。如何区分哪个数据包属于 ping 类型,哪个属于 traceroute 类型?

我当前的代码如下所示

import scapy.all as scapy
import socket
from scapy.arch import get_if_hwaddr
from scapy.interfaces import get_if_list
from scapy.layers import http
from scapy.layers.inet import TCP, ICMP, IP
from scapy.layers.inet6 import IPv6
from scapy.layers.l2 import Ether
from uuid import getnode as get_mac

def sniffer(interface):
    #scapy.sniff(iface=interface, filter="icmp6 && ip6[40] == 128", store=False, prn=process_packet)
    scapy.sniff(iface=interface,filter="icmp6", store=False, prn=process_packet)

def process_packet(packet):
    print("DUMP\n")
    print(packet.show(dump=True))
    print(packet[Ether].src)
    print(Ether().src)
    if packet[Ether].src == Ether().src:
        print("OUTGOING PACKET")
        print(packet[IPv6].dst)
    else:
        print("INCOMING PACKET")
    #print(packet.getlayer("ICMPv6 Echo Request").type)


interface = "Wi-Fi"
sniffer(interface)

标签: networkingscapyicmp

解决方案


推荐阅读