aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMikael Kanstrup <mikael.kanstrup@sony.com>2018-11-08 16:12:09 +0100
committerAnders Broman <a.broman58@gmail.com>2018-11-09 06:55:12 +0000
commit1e71786f200b94f3c4e70eef05de1dce4fd86aca (patch)
tree23ad81855ddb80a67c3ed165848ea633eb10d818 /epan
parent11a9a501fb004bd3259f457714670ffb6d3d21e9 (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.c94
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 }},