The following logic operates on an 802.11 association request frame, looking at various tagged parameter values to determine client capabilities.
-
802.11n: inspect tagged parameter number 45 (HT Capabilities)
- a. is tagged parameter present?
- Y - 802.11n supported
- N - 802.11n not supported
- b. inspect octets 3 to 7 (Rx MCS sets)
- count Rx MCS bitmasks that are set (11111111) to determine number of streams supported
- a. is tagged parameter present?
-
802.11ac: inspect tagged parameter 191 (VHT Capabilities)
- a. is tagged parameter present?
- Y - 802.11ac supported
- N - 802.11ac not supported
- b. inspect octets 4 & 5 (Rx MCS map) -
- count Rx MCS map bit pairs not set to '11' to determine number of streams supported
- MCS 0-7 if pairs are set to '00'
- MCS 0-8 if pairs are set to '01'
- MCS 0-9 if pairs are set to '11'
- c. inspect octet 1 (one of the four vht capability octets)
- if bit zero set to '1', client is SU Beam-formee capable
- d. inspect octect 1 (one of the four vht capability octets)
- add bit 5, 6, 7 to determine VHT Beamformee STS
- e. inspect octet 2 (one of the four vht capability octets)
- if bit zero set to '1', client is MU Beam-formee capable
- f. inspect octet 0 (one of the four vht capability octets)
- if bit zero set to '1', client supports VHT 160 MHz
- a. is tagged parameter present?
-
802.11k: inspect tagged parameter 70 (RM Enabled Capabilities) - RM = radio management
- a. is tagged parameter present?
- Y - 802.11k supported
- N - 802.11k not supported
- a. is tagged parameter present?
-
802.11r - inspect tagged parameter 54 (Mobility Domain)
- a. is tagged parameter present?
- Y - 802.11r supported
- N - 802.11r not supported
- a. is tagged parameter present?
-
802.11v - inspect tagged parameter 127 (Extended capabilities)
- a. is tagged parameter present?
- N - 802.11v not supported
- Y - 802.11v may be supported
- does octet 3 exist in ext capabilities tagged parameter?
- N - 802.11v not supported
- Y - 802.11v may be supported
- a. is bit 3 of octet 3 set to '1'?
- Y - 802.11v is supported
- N - 802.11v not supported
- a. is bit 3 of octet 3 set to '1'?
- does octet 3 exist in ext capabilities tagged parameter?
- a. is tagged parameter present?
-
Max/Min Power - inspect tagged parameter 33 (Power Capability)
- a. is tagged parameter present?
- N - unable to report max power
- Y - inspect octet 0 & 1 of tagged parameter
- a. octet 1 - max power in dBm
- b. octet 0 - min power in dBm
- a. is tagged parameter present?
-
Supported channels - inspect tagged parameter 6 (Supported Channels)
- a. Step through each channel set octet-pair provided reporting start channel and other channels in range
- Note: use step of 4 if start channel above number 14 (must be 5GHz channels), use step of 1 otherwise
- a. Step through each channel set octet-pair provided reporting start channel and other channels in range
-
802.11w: inspect tagged parameter 48 (RSN capabilities)
- a. is bit 8 of 2nd last octet in the rsn capabilities field set?
- Y - 11w supported
- N - 11w not supported
- a. is bit 8 of 2nd last octet in the rsn capabilities field set?
-
802.11ax: inspect extended tag number 35 (HE Capabilities)
- a. is HE capabilities tagged parameter present?
- Y - 802.11ax supported
- N - 802.11ax not supported
- a (Y) - pass
- a (N) - do not evaluate remaining capabilities
- b. Number of spatial streams by inspecting octets 19 & 20 (Rx MCS map) -
- count Rx MCS map bit pairs not set to '11' to determine number of streams supported
- c. MCS 10/11 support inspect NSS subfield (b.)
- MCS 0-7: NSS bit pairs set to '00'
- MCS 0-9: NSS bit pairs set to '01'
- MCS 0-11: NSS bit pairs set to '10'
- d. Punctured Preamble support: B8-B11 of HE PHY Capabilities
- Y - supported - if any(B0, B1, B2, B3) == true
- N - not supported - if any(B0, B1, B2, B3) == false
- e. HE ER (Extended Range) SU PPDU: B64 of HE PHY Capabilities
- Y - supported
- N - not supported
- f. Target Wake Time (TWT) support by inspecting octet 1 (bit 1):
- Y - supported
- N - not supported
- g. Uplink OFDMA Random Access (UORA) support: B26 of HE PHY Capabilities
- Y - supported
- N - not supported
- h. Buffer Status Report (BSR) support: B19 of HE PHY Capabilities
- Y - supported
- N - not supported
- i. HE SU Beamformer: Bit 31 of HE PHY Capabilities
- 1 - supported
- 0 - not supported
- j. HE SU Beamformee: Bit 32 of HE PHY Capabilities
- 1 - supported
- 0 - not supported
- k. HE Beamformee STS: Bits 36-34 of HE PHY Capabilities
- Add Bits 36-34 to determine HE Beamformee STS
- a. is HE capabilities tagged parameter present?
-
802.11ax spatial reuse: inspect spatial reuse tag number 39 (Spatial Reuse Parameter Set)
- a. is Spatial Reuse Parameter Set tagged parameter present?
- Y - supported
- N - not supported
- a. is Spatial Reuse Parameter Set tagged parameter present?
-
802.11ax 6 GHz capabilities: inspect extend tag number 59 (HE 6 GHz band capabilities)
- a. is HE 6 GHz band capabilities tagged parameter present?
- Y - supported
- N - not supported
- a. is HE 6 GHz band capabilities tagged parameter present?
-
Randomized MAC address - inspect OUI of 24-bit MAC address
- a. check if any of these digits
2
,6
,a
, ore
is located in the second hex position from the left- N - MAC is not unicast local address
- Y - MAC is a unicast local address (private mac/randomized mac)
- a. check if any of these digits
-
MAC address manufacturer detection through heuristics
- a. can MAC address be resolved by lookup of OUI in manuf db?
- Y - Return match
- N - investigate tagged parameter 221 (vendor specific)
- is vendor MAC in manuf database?
- N - Unable to match
- Y - Check OUI matches our heuristic
- Y - Return match
- N - Unable to match
- is vendor MAC in manuf database?
- a. can MAC address be resolved by lookup of OUI in manuf db?
-
Chipset manufacturer detection through heuristics
- a. can Vendor Specific Tag 221 OUI be resolved by lookup of OUI in manuf db?
- N - Unable to match
- Y - Check OUI matches our heuristics
- Y - return match
- N - unknown / unable to match
- a. can Vendor Specific Tag 221 OUI be resolved by lookup of OUI in manuf db?
-
Detecting 6 GHz Capability Out-of-band via Alternative Operating Class
- a. is Supported Operating Classes tagged parameter present?
- N - not supported
- Y - may be supported
- is 131 in alternative class list?
- Y - 20 MHz channel spacing in 6 GHz operating class supported
- is 132 in alternative class list?
- Y - 40 MHz channel spacing in 6 GHz operating class supported
- is 133 in alternative class list?
- Y - 80 MHz channel spacing in 6 GHz operating class supported
- is 134 in alternative class list?
- Y - 160 MHz channel spacing in 6 GHz operating class supported
- is 135 in alternative class list?
- Y - 80+80 MHz channel spacing in 6 GHz operating class supported
- is 131 in alternative class list?
- a. is Supported Operating Classes tagged parameter present?