ieee80211: Implement more KDEs from ieee802.11-2016 and on.

I have picked up more KDEs from ieee802.11-2016 and Draft P802.11REVmd_D5.0
and Draft P802.11be_D1.4.
This commit is contained in:
Richard Sharpe 2022-04-15 22:50:57 -07:00
parent 24d65950e9
commit 8889d8c78b
2 changed files with 418 additions and 59 deletions

View File

@ -6094,20 +6094,57 @@ static int hf_ieee80211_vs_fortinet_data = -1;
static int hf_ieee80211_rsn_ie_ptk_keyid = -1;
static int hf_ieee80211_rsn_ie_gtk_keyid = -1;
static int hf_ieee80211_rsn_ie_gtk_tx = -1;
static int hf_ieee80211_rsn_ie_gtk_reserved1 = -1;
static int hf_ieee80211_rsn_ie_gtk_reserved2 = -1;
static int hf_ieee80211_rsn_ie_gtk_key = -1;
static int hf_ieee80211_rsn_ie_gtk_kde_data_type = -1;
static int hf_ieee80211_rsn_ie_gtk_kde_key_id = -1;
static int hf_ieee80211_rsn_ie_gtk_kde_tx = -1;
static int hf_ieee80211_rsn_ie_gtk_kde_reserved1 = -1;
static int hf_ieee80211_rsn_ie_gtk_kde_reserved2 = -1;
static int hf_ieee80211_rsn_ie_gtk_kde_gtk = -1;
static int hf_ieee80211_rsn_ie_mac_address_kde_mac = -1;
static int hf_ieee80211_rsn_ie_pmkid = -1;
static int hf_ieee80211_rsn_ie_igtk_keyid = -1;
static int hf_ieee80211_rsn_ie_igtk_ipn = -1;
static int hf_ieee80211_rsn_ie_igtk_key = -1;
static int hf_ieee80211_rsn_ie_unknown = -1;
static int hf_ieee80211_rsn_ie_gtk_kde_nonce = -1;
static int hf_ieee80211_rsn_ie_gtk_kde_lifetime = -1;
static int hf_ieee80211_rsn_ie_error_kde_res = -1;
static int hf_ieee80211_rsn_ie_error_kde_error_type = -1;
static int hf_ieee80211_rsn_ie_igtk_kde_keyid = -1;
static int hf_ieee80211_rsn_ie_igtk_kde_ipn = -1;
static int hf_ieee80211_rsn_ie_igtk_kde_igtk = -1;
static int hf_ieee80211_rsn_ie_oci_operating_class = -1;
static int hf_ieee80211_rsn_ie_oci_primary_channel_number = -1;
static int hf_ieee80211_rsn_ie_oci_frequency_segment_1 = -1;
static int hf_ieee80211_rsn_ie_bigtk_key_id = -1;
static int hf_ieee80211_rsn_ie_bigtk_bipn = -1;
static int hf_ieee80211_rsn_ie_bigtk_bigtk = -1;
static int hf_ieee80211_rsn_ie_mlo_link_info = -1;
static int hf_ieee80211_rsn_ie_mlo_linkid = -1;
static int hf_ieee80211_rsn_ie_mlo_rnse_present = -1;
static int hf_ieee80211_rsn_ie_mlo_rnsxe_present = -1;
static int hf_ieee80211_rsn_ie_mlo_reserved = -1;
static int hf_ieee80211_rsn_ie_mlo_mac_addr = -1;
static int hf_ieee80211_rsn_ie_mlo_gtk_kde_key_id = -1;
static int hf_ieee80211_rsn_ie_mlo_gtk_kde_tx = -1;
static int hf_ieee80211_rsn_ie_mlo_gtk_kde_reserved = -1;
static int hf_ieee80211_rsn_ie_mlo_gtk_kde_linkid = -1;
static int hf_ieee80211_rsn_ie_mlo_gtk_kde_pn = -1;
static int hf_ieee80211_rsn_ie_mlo_gtk_kde_gtk = -1;
static int hf_ieee80211_rsn_ie_mlo_igtk_kde_key_id = -1;
static int hf_ieee80211_rsn_ie_mlo_igtk_kde_ipn = -1;
static int hf_ieee80211_rsn_ie_mlo_igtk_kde_reserved = -1;
static int hf_ieee80211_rsn_ie_mlo_igtk_kde_linkid = -1;
static int hf_ieee80211_rsn_ie_mlo_igtk_kde_igtk = -1;
static int hf_ieee80211_rsn_ie_mlo_bigtk_kde_key_id = -1;
static int hf_ieee80211_rsn_ie_mlo_bigtk_kde_ipn = -1;
static int hf_ieee80211_rsn_ie_mlo_bigtk_kde_reserved = -1;
static int hf_ieee80211_rsn_ie_mlo_bigtk_kde_linkid = -1;
static int hf_ieee80211_rsn_ie_mlo_bigtk_kde_bigtk = -1;
static int hf_ieee80211_marvell_ie_type = -1;
static int hf_ieee80211_marvell_ie_mesh_subtype = -1;
static int hf_ieee80211_marvell_ie_mesh_version = -1;
@ -7318,6 +7355,8 @@ static gint ett_rsn_cap_tree = -1;
static gint ett_rsn_pmkid_tree = -1;
static gint ett_rsn_gmcs_tree = -1;
static gint ett_kde_mlo_link_info = -1;
static gint ett_wpa_mcs_tree = -1;
static gint ett_wpa_ucs_tree = -1;
static gint ett_wpa_sub_ucs_tree = -1;
@ -17230,50 +17269,144 @@ dissect_vendor_ie_wfa(packet_info *pinfo, proto_item *item, tvbuff_t *tag_tvb)
dissector_try_uint_new(wifi_alliance_ie_table, subtype, vendor_tvb, pinfo, item, FALSE, NULL);
}
static const range_string kde_selectors_rvals[] = {
{ 0, 0, "Reserved" },
{ 1, 1, "GTK KDE" },
{ 2, 2, "Reserved" },
{ 3, 3, "MAC address KDE" },
{ 4, 4, "PMKID KDE" },
{ 5, 5, "Reserved" },
{ 6, 6, "Nonce KDE" },
{ 7, 7, "Lifetime KDE" },
{ 8, 8, "Error KDE" },
{ 9, 9, "IGTK KDE" },
{ 10, 10, "Key ID KDE" },
{ 11, 11, "Multi-band GTK KDE" },
{ 12, 12, "Multi-band Key ID KDE" },
{ 13, 13, "OCI KDE" },
{ 14, 14, "BIGTK KDE" },
{ 15, 15, "Reserved" },
{ 16, 16, "MLO GTK KDE" },
{ 17, 17, "MLO IGTK KDE" },
{ 18, 18, "MLO BIGTK KDE" },
{ 19, 19, "MLO LINK KDE" },
{ 20, 255, "Reserved" },
{ 0, 0, NULL }
};
static const true_false_string tfs_rsn_gtk_kde_tx = {
"Temporal key used for both transmission and reception",
"Temporal key used only for reception"
};
static int * const mlo_kde_link_hdrs[] = {
&hf_ieee80211_rsn_ie_mlo_linkid,
&hf_ieee80211_rsn_ie_mlo_rnse_present,
&hf_ieee80211_rsn_ie_mlo_rnsxe_present,
&hf_ieee80211_rsn_ie_mlo_reserved,
NULL
};
static void
dissect_rsn_ie_mlo_link(proto_item *item, proto_tree *tree, tvbuff_t *tvb,
int offset, guint32 tag_len _U_, packet_info *pinfo)
{
guint8 info = tvb_get_guint8(tvb, offset);
proto_tree_add_bitmask(tree, tvb, offset,
hf_ieee80211_rsn_ie_mlo_link_info,
ett_kde_mlo_link_info, mlo_kde_link_hdrs,
ENC_NA);
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_mac_addr, tvb, offset, 6,
ENC_NA);
offset += 6;
if ((info & 0x10) == 0x10) { /* Add the RSNE if present */
offset += add_tagged_field(pinfo, tree, tvb, offset, 0, NULL, 0, NULL);
}
if ((info & 0x20) == 0x20) { /* Add the RSNXE if present */
offset += add_tagged_field(pinfo, tree, tvb, offset, 0, NULL, 0, NULL);
}
proto_item_append_text(item, ": MLO Link KDE");
}
static void
dissect_vendor_ie_rsn(proto_item * item, proto_tree * tree, tvbuff_t * tvb,
int offset, guint32 tag_len, packet_info *pinfo)
{
guint8 data_type = tvb_get_guint8(tvb, offset);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_kde_data_type, tvb,
offset, 1, ENC_NA);
offset += 1;
switch(tvb_get_guint8(tvb, offset)){
switch(data_type) {
case 1:
{
/* IEEE 802.11i / Key Data Encapsulation / Data Type=1 - GTK.
* This is only used within EAPOL-Key frame Key Data. */
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_kde_key_id, tvb,
offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_kde_tx, tvb, offset,
1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_kde_reserved1, tvb,
offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_keyid, tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_tx, tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_reserved1, tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_kde_reserved2, tvb,
offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_reserved2, tvb, offset, 1, ENC_LITTLE_ENDIAN);
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_key, tvb, offset, tag_len - 3, ENC_NA);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_kde_gtk, tvb, offset,
tag_len - 3, ENC_NA);
proto_item_append_text(item, ": RSN GTK");
save_proto_data(tvb, pinfo, offset, tag_len - 3, GTK_KEY);
save_proto_data_value(pinfo, tag_len - 3, GTK_LEN_KEY);
break;
}
case 3: /* MAC Address KDE */
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mac_address_kde_mac, tvb,
offset, 6, ENC_NA);
proto_item_append_text(item, ": MAC Address KDE");
break;
case 4:
{
/* IEEE 802.11i / Key Data Encapsulation / Data Type=4 - PMKID.
* This is only used within EAPOL-Key frame Key Data. */
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_pmkid, tvb, offset, 16, ENC_NA);
proto_item_append_text(item, ": RSN PMKID");
break;
}
case 9:
case 6:
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_kde_nonce, tvb, offset,
32, ENC_NA);
proto_item_append_text(item, ": NONCE KDE");
break;
case 7: /* Lifetime KDE */
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_gtk_kde_lifetime, tvb,
offset, 4, ENC_LITTLE_ENDIAN);
proto_item_append_text(item, ": Lifetime KDE");
break;
case 8: /* Error KDE */
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_error_kde_res, tvb, offset,
2, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_error_kde_error_type, tvb,
offset, 2, ENC_LITTLE_ENDIAN);
proto_item_append_text(item, ": Error KDE");
offset += 2;
break;
case 9: /* IGTK KDE */
{
/* IEEE 802.11i / Key Data Encapsulation / Data Type=9 - IGTK.
* This is only used within EAPOL-Key frame Key Data. */
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_igtk_keyid, tvb, offset, 2, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_igtk_kde_keyid, tvb,
offset, 2, ENC_LITTLE_ENDIAN);
offset += 2;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_igtk_ipn, tvb, offset, 6, ENC_LITTLE_ENDIAN);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_igtk_kde_ipn, tvb, offset,
6, ENC_LITTLE_ENDIAN);
offset += 6;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_igtk_key, tvb, offset, tag_len - 9, ENC_NA);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_igtk_kde_igtk, tvb, offset,
tag_len - 9, ENC_NA);
proto_item_append_text(item, ": RSN IGTK");
break;
}
@ -17281,13 +17414,101 @@ dissect_vendor_ie_rsn(proto_item * item, proto_tree * tree, tvbuff_t * tvb,
{
/* IEEE 802.11 - 2016 / Key Data Encapsulation / Data Type=10 - KeyID
* This is only used within EAPOL-Key frame Key Data when using Extended Key ID */
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_ptk_keyid, tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_item_append_text(item, ": RSN PTK");
break;
}
case 13: /* OCI KDE */
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_oci_operating_class, tvb,
offset, 1, ENC_NA);
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_oci_primary_channel_number,
tvb, offset, 1, ENC_NA);
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_oci_frequency_segment_1,
tvb, offset, 1, ENC_NA);
proto_item_append_text(item, ": OCI KDE");
break;
case 14: /* BIGTK KDE */
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_bigtk_key_id, tvb, offset,
2, ENC_LITTLE_ENDIAN);
offset += 2;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_bigtk_bipn, tvb, offset,
6, ENC_LITTLE_ENDIAN);
offset += 6;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_bigtk_bigtk, tvb, offset,
tag_len - 9, ENC_NA);
proto_item_append_text(item, ": BIGTK KDE");
break;
case 16: /* MLO GTK KDE */
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_gtk_kde_key_id, tvb,
offset, 1, ENC_NA);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_gtk_kde_tx, tvb,
offset, 1, ENC_NA);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_gtk_kde_reserved, tvb,
offset, 1, ENC_NA);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_gtk_kde_linkid, tvb,
offset, 1, ENC_NA);
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_gtk_kde_pn, tvb,
offset, 6, ENC_NA);
offset += 6;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_gtk_kde_gtk, tvb,
offset, tag_len - 7, ENC_NA);
proto_item_append_text(item, ": MLO GTK KDE");
break;
case 17: /* MLO IGTK KDE */
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_igtk_kde_key_id, tvb,
offset, 2, ENC_NA);
offset += 2;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_igtk_kde_ipn, tvb,
offset, 6, ENC_NA);
offset += 6;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_igtk_kde_reserved, tvb,
offset, 1, ENC_NA);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_igtk_kde_linkid, tvb,
offset, 1, ENC_NA);
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_igtk_kde_igtk, tvb,
offset, tag_len - 9, ENC_NA);
proto_item_append_text(item, ": MLO IGTK KDE");
break;
case 18: /* MLO BIGTK KDE */
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_bigtk_kde_key_id, tvb,
offset, 2, ENC_NA);
offset += 2;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_bigtk_kde_ipn, tvb,
offset, 6, ENC_NA);
offset += 6;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_bigtk_kde_reserved, tvb,
offset, 1, ENC_NA);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_bigtk_kde_linkid, tvb,
offset, 1, ENC_NA);
offset += 1;
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_mlo_bigtk_kde_bigtk, tvb,
offset, tag_len - 9, ENC_NA);
proto_item_append_text(item, ": MLO BIGTK KDE");
break;
case 19: /*
* MLO Link KDE, contains Link info, MAC Addr and possibly
* RSNE and RSNXE
*/
dissect_rsn_ie_mlo_link(item, tree, tvb, offset, tag_len, pinfo);
break;
default:
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_unknown, tvb, offset, tag_len, ENC_NA);
proto_tree_add_item(tree, hf_ieee80211_rsn_ie_unknown, tvb, offset,
tag_len - 1, ENC_NA);
proto_item_append_text(item, ": RSN UNKNOWN");
break;
}
@ -35421,7 +35642,10 @@ dissect_wlan_rsna_eapol_wpa_or_rsn_key(tvbuff_t *tvb, packet_info *pinfo, proto_
The Secure Bit is incorrectly set on rekeys for Windows clients for Message 2 and the Nonce is non-zero
in Message 4 in Bug 11994 (Apple?) */
/* When using AES-SIV without plaintext (i.e. only for integrity), the ciphertext has length 16 */
if (((eapol_key_mic_len == 0) && (eapol_data_len > 16)) || ((eapol_key_mic_len > 0) && (eapol_data_len > 0))) {
/* With MLO message 4 will have 12 bytes of data */
if (((eapol_key_mic_len == 0) && (eapol_data_len > 16)) ||
((eapol_key_mic_len > 0) && (eapol_data_len != 0) &&
(eapol_data_len != 12))) {
ti = proto_tree_add_uint(tree, hf_wlan_rsna_eapol_wpa_keydes_msgnr, tvb, offset, 0, 2);
col_set_str(pinfo->cinfo, COL_INFO, "Key (Message 2 of 4)");
@ -46737,51 +46961,184 @@ proto_register_ieee80211(void)
FT_UINT8, BASE_DEC, NULL, 0x03,
NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_key,
{"GTK", "wlan.rsn.ie.gtk.key",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_keyid,
{"KeyID", "wlan.rsn.ie.gtk.keyid",
FT_UINT8, BASE_DEC, NULL, 0x03,
NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_tx,
{"Tx", "wlan.rsn.ie.gtk.tx",
FT_UINT8, BASE_DEC, NULL, 0x04,
NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_reserved1,
{"Reserved", "wlan.rsn.ie.gtk.reserved1",
FT_UINT8, BASE_HEX, NULL, 0xF8,
NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_reserved2,
{"Reserved", "wlan.rsn.ie.gtk.reserved2",
FT_UINT8, BASE_DEC, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_rsn_ie_pmkid,
{"PMKID", "wlan.rsn.ie.pmkid",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_rsn_ie_igtk_keyid,
{"KeyId", "wlan.rsn.ie.igtk.keyid",
{&hf_ieee80211_rsn_ie_gtk_kde_data_type,
{"Data Type", "wlan.rsn.ie.kde.data_type",
FT_UINT16, BASE_DEC|BASE_RANGE_STRING, RVALS(kde_selectors_rvals),
0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_kde_key_id,
{"Key ID", "wlan.rsn.ie.gtk_kde.key_id",
FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_kde_tx,
{"Tx", "wlan.rsn.ie.gtk_kde.tx",
FT_BOOLEAN, 8, TFS(&tfs_rsn_gtk_kde_tx), 0x04, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_kde_reserved1,
{"Reserved", "wlan.rsn.ie.gtk_kde.res1",
FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_kde_reserved2,
{"Reserved", "wlan.rsn.ie.gtk_kde.res2",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_kde_gtk,
{"GTK", "wlan.rsn.ie.gtk_kde.gtk",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mac_address_kde_mac,
{"MAC Address", "wlan.rsn.ie.mac_address_kde.mac_address",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_kde_nonce,
{"Key Nonce", "wlan.rsn.ie.key_nonce_kde.nonce",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_gtk_kde_lifetime,
{"Key Lifetime", "wlan.rsn.ie.key_lifetime_kde.lifetime",
FT_UINT32, BASE_DEC|BASE_UNIT_STRING, &units_seconds, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_error_kde_res,
{"Reserved", "wlan.rsn.ie.error_kde.reserved",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_error_kde_error_type,
{"Error Type", "wlan.rsn.ie.error_kde.error_type",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_igtk_kde_keyid,
{"KeyId", "wlan.rsn.ie.igtk.kde.keyid",
FT_UINT16, BASE_DEC, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_rsn_ie_igtk_ipn,
{"IPN", "wlan.rsn.ie.igtk.ipn",
{&hf_ieee80211_rsn_ie_igtk_kde_ipn,
{"IPN", "wlan.rsn.ie.igtk.kde.ipn",
FT_UINT48, BASE_DEC, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_rsn_ie_igtk_key,
{"IGTK", "wlan.rsn.ie.igtk.key",
{&hf_ieee80211_rsn_ie_igtk_kde_igtk,
{"IGTK", "wlan.rsn.ie.igtk.kde.igtk",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{&hf_ieee80211_rsn_ie_oci_operating_class,
{"Operating Class", "wlan.rsn.ie.oci_kde.operating_class",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_oci_primary_channel_number,
{"Primary Channel Number", "wlan.rsn.ie.oci_kde.primary_channel_number",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_oci_frequency_segment_1,
{"Frequency Segment 1 Channel Number",
"wlan.rsn.ie.oci_kde.frequency_segment_1_channel_number",
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_bigtk_key_id,
{"Key ID", "wlan.rsn.ie.bigtk_kde.key_id",
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_bigtk_bipn,
{"BIPN", "wlan.rsn.ie.bigtk_kde.bipn",
FT_UINT48, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_bigtk_bigtk,
{"Key ID", "wlan.rsn.ie.bigtk_kde.bigtk",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_link_info,
{"Link Information", "wlan.rsn.ie.mlo_link.link_info",
FT_UINT8, BASE_HEX, NULL, 0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_linkid,
{"LinkID", "wlan.rsn.ie.mlo_link.link_info.linkid",
FT_UINT8, BASE_DEC, NULL, 0x0F, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_rnse_present,
{"RSNEInfo", "wlan.rsn.ie.mlo_link.link_info.rsneinfo",
FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_rnsxe_present,
{"RSNXEInfo", "wlan.rsn.ie.mlo_link.link_info.rsnxeinfo",
FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_reserved,
{"Reserved", "wlan.rsn.ie.mlo_link.link_info.reserved",
FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_mac_addr,
{"MAC Address", "wlan.rsn.ie.mlo_link.mac_addr",
FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_gtk_kde_key_id,
{"Key ID", "wlan.rsn.ie.mlo_gtk.key_id",
FT_UINT8, BASE_HEX, NULL, 0x03, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_gtk_kde_tx,
{"Tx", "wlan.rsn.ie.mlo_gtk.tx",
FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_gtk_kde_reserved,
{"Reserved", "wlan.rsn.ie.mlo_gtk.reserved",
FT_UINT8, BASE_HEX, NULL, 0x08, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_gtk_kde_linkid,
{"LinkID", "wlan.rsn.ie.mlo_gtk.linkid",
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_gtk_kde_pn,
{"PN", "wlan.rsn.ie.mlo_gtk.pn",
FT_UINT48, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_gtk_kde_gtk,
{"GTK", "wlan.rsn.ie.mlo_gtk.gtk",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_igtk_kde_key_id,
{"Key ID", "wlan.rsn.ie.mlo_igtk.key_id",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_igtk_kde_ipn,
{"IPN", "wlan.rsn.ie.mlo_igtk.ipn",
FT_UINT48, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_igtk_kde_reserved,
{"Reserved", "wlan.rsn.ie.mlo_igtk.reserved",
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_igtk_kde_linkid,
{"LinkID", "wlan.rsn.ie.mlo_igtk.linkid",
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_igtk_kde_igtk,
{"IGTK", "wlan.rsn.ie.mlo_igtk.igtk",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_bigtk_kde_key_id,
{"Key ID", "wlan.rsn.ie.mlo_bigtk.key_id",
FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_bigtk_kde_ipn,
{"IPN", "wlan.rsn.ie.mlo_bigtk.ipn",
FT_UINT48, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_bigtk_kde_reserved,
{"Reserved", "wlan.rsn.ie.mlo_bigtk.reserved",
FT_UINT8, BASE_HEX, NULL, 0x0F, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_bigtk_kde_linkid,
{"LinkID", "wlan.rsn.ie.mlo_bigtk.linkid",
FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_mlo_bigtk_kde_bigtk,
{"BIGTK", "wlan.rsn.ie.mlo_bigtk.bigtk",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{&hf_ieee80211_rsn_ie_unknown,
{"RSN Unknown", "wlan.rsn.ie.unknown",
FT_BYTES, BASE_NONE, NULL, 0,
@ -51032,6 +51389,8 @@ proto_register_ieee80211(void)
&ett_rsn_pmkid_tree,
&ett_rsn_gmcs_tree,
&ett_kde_mlo_link_info,
&ett_wpa_mcs_tree,
&ett_wpa_ucs_tree,
&ett_wpa_sub_ucs_tree,

View File

@ -130,7 +130,7 @@ class case_decrypt_80211(subprocesstest.SubprocessTestCase):
'-o', 'wlan.enable_decryption: TRUE',
'-r', capture_file('wpa3-suiteb-192.pcapng.gz'),
'-Tfields',
'-e' 'wlan.rsn.ie.gtk.key',
'-e' 'wlan.rsn.ie.gtk_kde.gtk',
'-e' 'wlan.analysis.kck',
'-e' 'wlan.analysis.kek',
))