我应该怎么做?
我在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源代码?
答案 0 :(得分:0)
您只需要
IPOption_Ex.register_variant()
您将拥有
IP(options=[IPOption(option=26)])
工作