从ICMP包中获取数据

问题描述 投票:0回答:1

您能告诉我有关 ICMP 数据包的更多详细信息吗? 现在我正在使用一些代码构造:

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


def gettingDataFromICMPTraffic(pkt):
    if pkt.haslayer(scapy.layers.inet.ICMP):
        type_8 = pkt.getlayer(scapy.layers.inet.ICMP).type
        if type_8 == 8:
            print(pkt.getlayer(scapy.layers.inet.ICMP))


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


if __name__ == '__main__':
    main()

我在表格中得到一些信息:

ICMP 192.168.34.163 > 192.168.34.118 echo-request 0 / Raw
ICMP 192.168.34.163 > 192.168.34.118 echo-request 0 / Raw
ICMP 192.168.34.163 > 192.168.34.136 echo-request 0 / Raw / Padding
ICMP 192.168.34.163 > 192.168.34.136 echo-request 0 / Raw / Padding

我想获得有关

Sequence Number
参数的更多信息,如
Wireshark
中所做的那样。

我查看了文档,但没有找到任何东西。

python python-3.x scapy icmp
1个回答
0
投票

ICMP 字段中有 
seq 属性:

def gettingDataFromICMPTraffic(pkt):
    if pkt.haslayer(scapy.layers.inet.ICMP):
        type_8 = pkt.getlayer(scapy.layers.inet.ICMP).type
        if type_8 == 8:
            icmp_layer = pkt.getlayer(scapy.layers.inet.ICMP)
            print(icmp_layer, f'; seq number: {icmp_layer.seq}')

输出示例:

ICMP 192.168.158.139 > 174.137.42.77 echo-request 0 / Raw ; seq number: 8448
ICMP 192.168.158.139 > 174.137.42.77 echo-request 0 / Raw ; seq number: 8704
ICMP 192.168.158.139 > 174.137.42.77 echo-request 0 / Raw ; seq number: 8960
ICMP 192.168.158.139 > 174.137.42.77 echo-request 0 / Raw ; seq number: 9216
© www.soinside.com 2019 - 2024. All rights reserved.