私は 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」などの同じフィールド名を持つ他の多くのエントリがありますが、フィールド値は異なるため、この問題は私にとってはブロッカーです。
Pls はすべてのデータを取得する方法をアドバイスし、事前に感謝します!
BR、
アレックス