scapy:如何从 fields_desc 获取 ByteEnumField 值?

scapy: How to get ByteEnumField value from fields_desc?

我正在使用 scapy 的 bgp 层,我想知道是否有可能获得在 scapy 字段中定义的一些常量值 class。

例如,class BGPPathAttr 包含一个字段 type_code,该字段引用包含 NEXT_HOP 与 RFC 4271 中定义的幻数 3 之间的关联的映射. 我想通过一个看起来像 BGPPathAttr.type_code.NEXT_HOP

的语句来访问值 3

谢谢

A scapy 代码的摘录 ./scapy/scapy/contrib/bgp.py

path_attributes = {
    0: "Reserved",
    1: "ORIGIN",  # RFC 4271
    2: "AS_PATH",  # RFC 4271
    3: "NEXT_HOP",  # RFC 4271
    [...]
}

class BGPPathAttr(Packet):

   name = "BGPPathAttr"
   fields_desc = [
       ByteEnumField("type_code", 0, path_attributes)
   ]

嗨,

您可以使用 s2i 属性(和 i2s 进行反向翻译):

>>> BGPPathAttr.type_code.s2i['NEXT_HOP']
3
>>> BGPPathAttr.type_code.i2s[3]
'NEXT_HOP'