Как мне это сделать?
Я написал новое поле IP Option в исходном коде scapy 2.4 (scapy.layers.inet).
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 типа 45 из пункта назначения и куда писать в исходном коде scapy.