diff options
author | Mikael Kanstrup <mikael.kanstrup@sony.com> | 2018-11-08 16:12:09 +0100 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2018-11-09 06:55:12 +0000 |
commit | 1e71786f200b94f3c4e70eef05de1dce4fd86aca (patch) | |
tree | 23ad81855ddb80a67c3ed165848ea633eb10d818 /epan | |
parent | 11a9a501fb004bd3259f457714670ffb6d3d21e9 (diff) |
ieee80211: Dissect RSN GTK and IGTK IE
Change-Id: Ifda4defeb2db72d9f65dce89d6f97bfe09f7f5ad
Reviewed-on: https://code.wireshark.org/review/30547
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-ieee80211.c | 94 |
1 files changed, 88 insertions, 6 deletions
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c index bc538ba256..150c4aa6d7 100644 --- a/epan/dissectors/packet-ieee80211.c +++ b/epan/dissectors/packet-ieee80211.c @@ -4889,7 +4889,18 @@ static int hf_ieee80211_vs_aerohive_hostname_length = -1; static int hf_ieee80211_vs_aerohive_hostname = -1; static int hf_ieee80211_vs_aerohive_data = -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_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_marvell_ie_type = -1; @@ -13601,21 +13612,52 @@ dissect_vendor_ie_rsn(proto_item * item, proto_tree * tree, tvbuff_t * tvb, int { switch(tvb_get_guint8(tvb, offset)){ + case 1: + { + /* IEEE 802.11i / Key Data Encapsulation / Data Type=1 - GTK. + * This is only used within EAPOL-Key frame Key Data. */ + 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); + 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); + offset += tag_len - 3; + proto_item_append_text(item, ": RSN GTK"); + 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: + { + /* 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); + offset += 2; + proto_tree_add_item(tree, hf_ieee80211_rsn_ie_igtk_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); + offset += tag_len - 9; + proto_item_append_text(item, ": RSN IGTK"); + break; } - break; default: proto_tree_add_item(tree, hf_ieee80211_rsn_ie_unknown, tvb, offset, tag_len, ENC_NA); - break; + proto_item_append_text(item, ": RSN UNKNOWN"); + break; } - - proto_item_append_text(item, ": RSN"); - } typedef enum { @@ -32932,8 +32974,48 @@ proto_register_ieee80211(void) FT_UINT16, BASE_DEC, NULL, 0, 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, - {"RSN PMKID", "wlan.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", + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, + + {&hf_ieee80211_rsn_ie_igtk_ipn, + {"IPN", "wlan.rsn.ie.igtk.ipn", + FT_UINT48, BASE_DEC, NULL, 0, + NULL, HFILL }}, + + {&hf_ieee80211_rsn_ie_igtk_key, + {"IGTK", "wlan.rsn.ie.igtk.key", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, |