我正在尝试解析WPS协议
我想以Wireshark的方式将一个领域中的许多领域分组
例如,在Wireshark中,数据元素类型,数据元素长度和版本分组在名为Version的字段下。
在这个例子中,Version是我唯一关心的字段 在Scapy中我想展示这样的东西:
>>>packet[WPS]
< WPS version=[Data Element Type=0x104a, Data Element Length=1,version=0x10] |>
如果我这样做:
>>>packet[WPS].version
0x10
现在,我有以下代码:
wps_message_types = { 4:"M1",
5:"M2",
7:"M3",
8:"M4",
9:"M5",
10:"M6",
11:"M7",
12:"M8",
15:"WSC_Done" }
class WPS(Packet): # eap type 253 vendor id 0x372a
name = "Wi-Fi Protected Setup"
fields_desc = [ ByteField("opcode", 1),
FlagsField("flags", 0, 8, ['more_flags', 'length']),
ShortField("Data_Element_type(version)", 0),
ShortField("Data_Element_lenght", 0),
ByteField("Version", 0),
ShortField("Data_Element_type:(Message type)", 0),
ShortField("Data_Element_length", 0),
ByteEnumField("Message_type", 0, wps_message_types),
StrField("data","")
]
def getType(self):
return wps_message_types[self.Message_type]
我怎样才能做到这一点?