ip选项的icmp响应

时间:2018-10-12 09:22:28

标签: python-3.x ip scapy icmp

我应该怎么做?

我在scapy 2.4源代码(scapy.layers.inet)中写了一个新的IP Option字段。

class IPOption_Ex(IPOption):
name = "IP Option Ex"
copy_flag = 1
option = 26
fields_desc = [_IPOption_HDR,
               ByteField("op1", 16),
               ShortField("op2", 0),
               ShortField("op3", 0),
               IPField("originator_ip", "0.0.0.0"),
               LongField("op4", 0)]

这只是L3级别的选项,因此它不涉及TCP或UDP。每当目的地接收到新的IP选项(例如26)时,我都需要一个响应ICMP数据包(类型45)。假设响应ICMP数据包具有四个字段:1.类型2.代码3.校验和4.源IP地址。 (scapy.layers.inet)

class ICMP(Packet):
name = "ICMP"
fields_desc = [ ByteEnumField("type",8, icmptypes),
                MultiEnumField("code",0, icmpcodes, depends_on=lambda pkt:pkt.type,fmt="B"),
                XShortField("chksum", None),
                ConditionalField(IPField("originator_ip","0.0.0.0"), lambda pkt:pkt.type==45)]

现在我不明白如何在python / scapy中编写代码以从目标位置生成ICMP Type-45响应数据包以及在何处编写scapy源代码?

1 个答案:

答案 0 :(得分:0)

您只需要

IPOption_Ex.register_variant()

您将拥有

IP(options=[IPOption(option=26)])

工作