networking - 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)
解决方案
推荐阅读
- python - django-stripe error: "Your card's expiration year is invalid" 测试时,无论输入年份
- css - 给出没有类特定样式的锚元素
- libgdx - Libgdx freetype,应用程序在运行时崩溃而没有错误
- jquery - JQuery href 将冷融合令牌添加到 URL
- javascript - 一般检查任何移动设备屏幕方向的变化?
- selenium - 如何从对象打印到与 Capybara/Cucumber 相同的输出线程
- sql-server - DECLARE 分配是否在运行时消耗时间?
- php - 如何让我的 PHP 从数据库中输出两个值
- python - 如何为同一个项目链接2个python脚本
- c++ - 16 到 32 位整数转换与性能