【问题标题】:Accessing a lower layers fields with lambda function in Scapy在 Scapy 中使用 lambda 函数访问较低层字段
【发布时间】:2015-10-21 13:45:31
【问题描述】:

我想做类似下面的事情

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 字段。但是我有必要访问存储在较低层中的值。在我试图实现的协议中,这是需要的。那我该怎么做呢?

【问题讨论】:

    标签: python layer scapy


    【解决方案1】:

    下界或左界层称为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")
                       ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多