scapy:如何从fields_desc获取ByteEnumField值?

问题描述 投票:1回答:1

我正在使用scapy的bgp层,我想知道是否有可能在scapy Fields类中定义一些常量值。

例如,类BGPPathAttr包含一个字段type_code,它指的是一个包含NEXT_HOP和RFC 4271中定义的幻数3之间关联的映射。我想通过创建一个看起来像BGPPathAttr.type_code.NEXT_HOP的语句来访问值3

谢谢

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)
   ]
python scapy
1个回答
2
投票

嗨,

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

>>> BGPPathAttr.type_code.s2i['NEXT_HOP']
3
>>> BGPPathAttr.type_code.i2s[3]
'NEXT_HOP'
© www.soinside.com 2019 - 2024. All rights reserved.