You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Scapy获取ICMP包的Sequence Number等详细参数?

用Scapy获取ICMP包的Sequence Number等详细参数

要获取ICMP包的序列号(Sequence Number)、标识符(Identifier)等详细参数,你可以直接访问Scapy中ICMP层对象的对应字段,或者使用show()方法打印该层的所有细节。以下是两种解决方案:

方案1:手动提取指定字段并格式化输出

修改你的代码,直接访问ICMP层的seq、id等字段,同时可以结合IP层信息让输出更完整:

import scapy.layers.inet
from scapy.all import *

def gettingDataFromICMPTraffic(pkt):
    if pkt.haslayer(scapy.layers.inet.ICMP):
        icmp_layer = pkt.getlayer(scapy.layers.inet.ICMP)
        if icmp_layer.type == 8:  # 仅处理Echo Request包
            ip_layer = pkt.getlayer(scapy.layers.inet.IP)
            # 打印核心参数
            print(f"源IP: {ip_layer.src} → 目的IP: {ip_layer.dst}")
            print(f"ICMP类型: {icmp_layer.type} (Echo Request)")
            print(f"标识符(ID): {icmp_layer.id}")
            print(f"序列号(Sequence Number): {icmp_layer.seq}")
            print(f"校验和: {hex(icmp_layer.chksum)}")
            # 提取Raw层负载数据(如果存在)
            if pkt.haslayer(scapy.layers.inet.Raw):
                raw_data = pkt[scapy.layers.inet.Raw].load
                print(f"负载数据(十六进制): {raw_data.hex()}")
            print("-" * 60)

def main():
    pkts = rdpcap('icmp_yes.pcap')
    for pkt in pkts:
        gettingDataFromICMPTraffic(pkt)

if __name__ == '__main__':
    main()

方案2:用show()方法打印所有字段细节

如果你想快速查看ICMP层的所有参数,无需手动提取,可以调用ICMP层对象的show()方法,它会输出该层的所有字段及其值:

import scapy.layers.inet
from scapy.all import *

def gettingDataFromICMPTraffic(pkt):
    if pkt.haslayer(scapy.layers.inet.ICMP):
        icmp_layer = pkt.getlayer(scapy.layers.inet.ICMP)
        if icmp_layer.type == 8:
            print("=== ICMP包详细信息 ===")
            icmp_layer.show()  # 打印所有ICMP层字段
            print("-" * 60)

def main():
    pkts = rdpcap('icmp_yes.pcap')
    for pkt in pkts:
        gettingDataFromICMPTraffic(pkt)

if __name__ == '__main__':
    main()

说明

  • Scapy的ICMP层对象内置了seq、id、chksum等字段,完全对应Wireshark中展示的ICMP参数
  • show()方法会以结构化形式输出该层的所有属性,适合快速调试和查看完整参数
  • 若需要提取IP层信息(如源/目的IP),直接访问IP层对象的src和dst字段即可

内容的提问来源于stack exchange,提问作者Alex Rebell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 08:26:28