我想知道如何根据另一个类的字段动态定义一个类的字段类型??? 我的意思是如何定义一个字段并将其从一个类链接到另一个类,例如:
class TemplateRecord(Packet):
name = "Template Record"
fields_desc = [ ShortField("Type", 0),
ShortField("Length", 0) ]
def extract_padding(self, s):
return "", s
class DataRecord(Packet):
name = "Data Record"
fields_desc = [ ==> Here i would like something like this :
"if Type == 0 from Class TemplateRecord:
IPField("ipsrc", "0.0.0.0"),
if Type == 1 from Class TemplateRecord
IPField("ipdst", "0.0.0.0"),
if Type == 2 from Class TemplateRecord
ByteField("DstMask", 0),
....etc..."
]
def extract_padding(self, s):
return "", s
请您参考如下方法:
我相信 Scapy 最接近您想要的功能是条件字段。格式为:
ConditionalField(XShortField("chksum",None),lambda pkt:pkt.chksumpresent==1)
尝试将其与 Packet.underlayer 结合使用。
假设层的设置像TemplateRecord()/DataRecord()
ConditionalField(IPField("ipsrc", "0.0.0.0"), lambda pkt:pkt.underlayer.Type==0),
ConditionalField(IPField("ipdst", "0.0.0.0"), lambda pkt:pkt.underlayer.Type==1),
ConditionalField(ByteField("DstMask", 0), lambda pkt:pkt.underlayer.Type==2)
