aboutsummaryrefslogtreecommitdiffstats
path: root/src/ap/sta_info.c
diff options
context:
space:
mode:
authorDenton Gentry <dgentry@google.com>2016-08-15 04:42:48 (GMT)
committerJouni Malinen <j@w1.fi>2016-09-21 21:45:24 (GMT)
commit04059ab84458f43dda9130e4fff745b268424b99 (patch)
tree721e97b115588a12766fb6a31974af2fad20ae34 /src/ap/sta_info.c
parent5e993390f6ce34b169bf37becb2e5561262ec68f (diff)
downloadhostap-04059ab84458f43dda9130e4fff745b268424b99.zip
hostap-04059ab84458f43dda9130e4fff745b268424b99.tar.gz
hostap-04059ab84458f43dda9130e4fff745b268424b99.tar.bz2
Passive Client Taxonomy
Implement the signature mechanism described in the paper "Passive Taxonomy of Wifi Clients using MLME Frame Contents" published by Denton Gentry and Avery Pennarun. http://research.google.com/pubs/pub45429.html https://arxiv.org/abs/1608.01725 This involves: 1. Add a CONFIG_TAXONOMY compile option. Enabling taxonomy incurs a memory overhead of up to several kilobytes per associated station. 2. If enabled, store the Probe Request and (Re)Associate Request frame in struct sta_info. 3. Implement code to extract the ID of each Information Element, plus selected fields and bitmasks from certain IEs, into a descriptive text string. This is done in a new source file, src/ap/taxonomy.c. 4. Implement a "signature qq:rr:ss:tt:uu:vv" command in hostapd_cli to retrieve the signature. Signatures take the form of a text string. For example, a signature for the Nexus 5X is: wifi4|probe:0,1,127,45,191,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:338061b2, vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:00000a0201000040|assoc:0,1,48,45, 221(0050f2,2),191,127,htcap:01ef,htagg:03,htmcs:0000ffff,vhtcap:339071b2, vhtrxmcs:030cfffa,vhttxmcs:030cfffa,extcap:0000000000000040 Signed-off-by: dgentry@google.com (Denton Gentry) Signed-off-by: denny@geekhold.com (Denton Gentry) Signed-off-by: rofrankel@google.com (Richard Frankel) Signed-off-by: richard@frankel.tv (Richard Frankel)
Diffstat (limited to 'src/ap/sta_info.c')
-rw-r--r--src/ap/sta_info.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/ap/sta_info.c b/src/ap/sta_info.c
index c36842b..d9aa8e3 100644
--- a/src/ap/sta_info.c
+++ b/src/ap/sta_info.c
@@ -222,6 +222,13 @@ void ap_free_sta(struct hostapd_data *hapd, struct sta_info *sta)
hapd->iface->num_sta_ht_20mhz--;
}
+#ifdef CONFIG_TAXONOMY
+ wpabuf_free(sta->probe_ie_taxonomy);
+ sta->probe_ie_taxonomy = NULL;
+ wpabuf_free(sta->assoc_ie_taxonomy);
+ sta->assoc_ie_taxonomy = NULL;
+#endif /* CONFIG_TAXONOMY */
+
#ifdef CONFIG_IEEE80211N
ht40_intolerant_remove(hapd->iface, sta);
#endif /* CONFIG_IEEE80211N */