Python 在Scapy中使用lambda函数访问下层字段

Python 在Scapy中使用lambda函数访问下层字段,python,layer,scapy,Python,Layer,Scapy,我想做如下的事情 class Upper(Packet): name = "UpperLayer" fields_desc = [ ConditionalField(IntField("Field",0xABCDEF00), lambda pkt: pkt[IP].src == "1.2.3.4") ] p = IP(src="1.2.3.4")/Upper() 但这不起

我想做如下的事情

class Upper(Packet):

    name = "UpperLayer"
    fields_desc = [
        ConditionalField(IntField("Field",0xABCDEF00),
                         lambda pkt: pkt[IP].src == "1.2.3.4")
                   ]

p = IP(src="1.2.3.4")/Upper()

但这不起作用-我假设是因为上层
upper
没有关于下层
IP
层的信息,因此无法访问
src
字段。但我必须访问存储在较低层中的值。在我正试图实现的协议中,这是必需的。那么我该怎么做呢?

下限层或左边界层称为
底层。以下是您正在搜索的内容:

class Upper(Packet):
    name = "UpperLayer"
    fields_desc = [
        ConditionalField(IntField("Field",0xABCDEF00),
                         lambda pkt: hasattr(pkt.underlayer,"src") and pkt.underlayer.src == "1.2.3.4")
                   ]

下边界层或左边界层称为
underlayer
。以下是您正在搜索的内容:

class Upper(Packet):
    name = "UpperLayer"
    fields_desc = [
        ConditionalField(IntField("Field",0xABCDEF00),
                         lambda pkt: hasattr(pkt.underlayer,"src") and pkt.underlayer.src == "1.2.3.4")
                   ]