I want to analyze the capabilities string of a ScanResult. However, the names ther are grouped in up to four square brackets e.g.
[WPA-PSK-TKIP+CCMP][WPA2-PSK-TK
This string is generated by wpa_supplicant. Unfortunately there is little documentation on this, but at least we can look at the precise code! There are three main functions reponsible for creating the string we see in Android:
struct wpa_bss
as argument, which contains the information about one networks, and converts it to a string. You can see tags such as [ESS]
and WPA2
being added. It also (indirectly) calls the following two functions. So this function add the general capabilities of the network.[PSK]
and/or [EAP]
tags. In other words the type of handshake being used.TKIP
or CCMP
. It's only called if the network is WPA1 or WPA2.By reading these three functions you will know exactly what kind of parameters in the string that you can expect. You can always confirm your understanding by creating your own network and confirming the string corresponding to your own network!
Last year there was a topic about this issue. You can find some help in this stackoverflow answer. In fact, there is little Android documentation about WiFi access points capabilities. Even in the offical Javadoc, regarding the signal level, the attribute level
is only documented with:
The detected signal level in dBm. At least those are the units used by the TI driver.
It seems this is a very volatile information about the WiFi handling in Android.
i found this topic :
How do I connect to a WiFi Network with an unknown encryption algorithm in Android?
the user who asked the question seems to know what does it mean :
I have assumed, based on some research, that these are bracket-separated capabilities, and the first item for each of these is a - separated String showing:
[Authentication Algorithm - Key Management Algorithm - Pairwise Cipher]