scapy: Как получить значение ByteEnumField из fields_desc? - PullRequest
0 голосов
/ 14 февраля 2019

Я использую слой bgp scapy, и мне интересно, возможно ли получить некоторые постоянные значения, определенные в классе scapy Fields.

Например, класс BGPPathAttr содержит поле type_code это относится к карте, содержащей связь между NEXT_HOP и магическим числом 3, определенным в 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)
   ]

1 Ответ

0 голосов
/ 20 февраля 2019

Привет,

Вы можете использовать атрибут s2ii2s для обратного перевода):

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