gpt4 book ai didi

python - Pyshark:如果相同的键名(字段名)显示具有不同值的多个条目,则只能获取第一个字段值

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:19 25 4
gpt4 key购买 nike

我正在使用 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,
亚历克斯

最佳答案

首先,您不必使用项目子集和 get_field_value 来获取字段值。所以不是

value = packet['wlan_mgt'].get_field_value('supported_rates')

您可以使用:

value = packet.wlan_mgt.supported_rates

为了以 JSON 模式获取 wifi 数据包上的标签,您可以使用 packet.wlan_mgt.tagged.all.tag。这为您提供了所有标签的列表,您可以使用 python 对其进行过滤以仅查找受支持的费率标签。我正计划专门为像这样的 WiFi 东西做一个扩展,因为它很麻烦,但我还没有机会。如果您查看 wireshark 上的字段,您可以看到该类别是 tagged.all。

此外,在查找字段等时,我建议使用具有自动完成功能的解释器(例如 IPython),这样您就可以只查看哪些字段可用,或者只使用 packet_layer.field_names 来查看所有可用字段。

关于python - Pyshark:如果相同的键名(字段名)显示具有不同值的多个条目,则只能获取第一个字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43670808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com