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'
我正在使用 scapy 的 bgp 层,我想知道是否有可能获得在 scapy 字段中定义的一些常量值 class。
例如,class BGPPathAttr
包含一个字段 type_code
,该字段引用包含 NEXT_HOP
与 RFC 4271 中定义的幻数 3 之间的关联的映射. 我想通过一个看起来像 BGPPathAttr.type_code.NEXT_HOP
谢谢
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'