我正在使用 Pyshark 解析 Wireshark 嗅探器日志,并在使用“get_field_value”函数检索字段值时使用导出的 Json 格式文件(基于 pcapny 文件)查找字段名称。
例如,为了获得 BSSID 值:
在 Json 格式文件中,此信息显示为
"wlan.bssid": "11:22:33:44:55:66"
然后我可以使用:
value = packet['wlan'].get_field_value('bssid')
预期结果:
value == '11:22:33:44:55:66'
- 对于这种情况,它工作正常。
但是当我移动到信标数据包中的“wlan_mgt”部分时,我遇到了以下情况的问题,如下所示: - 在 Json 格式文件中,它显示:
"wlan_mgt.tagged.all": {
"wlan_mgt.tag": {
"wlan_mgt.tag.number": "0",
"wlan_mgt.tag.length": "5",
"wlan_mgt.ssid": "MWIFI"
},
"wlan_mgt.tag": {
"wlan_mgt.tag.number": "1",
"wlan_mgt.tag.length": "6",
"wlan_mgt.supported_rates": "24",
"wlan_mgt.supported_rates": "164",
"wlan_mgt.supported_rates": "48",
"wlan_mgt.supported_rates": "72",
"wlan_mgt.supported_rates": "96",
"wlan_mgt.supported_rates": "108"
},
"wlan_mgt.tag": {
"wlan_mgt.tag.number": "5",
"wlan_mgt.tag.length": "7",
"wlan_mgt.tim.dtim_count": "0",
"wlan_mgt.tim.dtim_period": "1",
"wlan_mgt.tim.bmapctl": "0x00000000",
"wlan_mgt.tim.bmapctl_tree": {
"wlan_mgt.tim.bmapctl.multicast": "0",
"wlan_mgt.tim.bmapctl.offset": "0x00000000"
},
"wlan_mgt.tim.partial_virtual_bitmap": "00:10:00:00",
"wlan.tim.aid": "0x0000000c"
},
正如我们所见,“wlan_mgt.supported_rates”有多个条目,字段名称(键)相同,每个条目的值不同,我需要将它们全部获取。但是如果我使用: - 如果我使用:
value = packet['wlan_mgt'].get_field_value('supported_rates')
- 然后它只给我值'24',这是第一个条目的值。而且我不知道如何检索其他条目值,因为键名是相同的。
它是否应该返回所有值的列表,例如 ['24', '164','48','72','96','108'],而不仅仅是第一个条目值?由于基于嗅探器日志(Json 格式),还有许多其他具有相同字段名称的条目,例如“wlan_mgt.tag.number”,但字段值不同,所以这个问题对我来说是一个障碍。
请建议如何获取所有数据,并提前非常感谢!
BR,
亚历克斯