Skip to content

Commit bf8f64f

Browse files
committed
add SecurityType to VerboseWifiLogging
1 parent 87336a0 commit bf8f64f

File tree

2 files changed

+57
-6
lines changed

2 files changed

+57
-6
lines changed

BetterVerboseWiFiLogging/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ android {
1414

1515
dependencies {
1616
implementation(project(":reflection"))
17+
implementation(libs.hiddenapibypass)
1718
}

BetterVerboseWiFiLogging/src/main/java/de/binarynoise/betterVerboseWiFiLogging/Wrapper.kt

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package de.binarynoise.betterVerboseWiFiLogging
22

33
import android.net.wifi.ScanResult
4+
import android.net.wifi.WifiConfiguration
45
import android.net.wifi.WifiInfo
56
import android.os.Build
67
import de.binarynoise.betterVerboseWiFiLogging.WifiEntry.mWifiInfoField
78
import de.binarynoise.betterVerboseWiFiLogging.Wrapper.classLoader
89
import de.binarynoise.reflection.findDeclaredField
910
import de.binarynoise.reflection.findDeclaredMethod
11+
import org.lsposed.hiddenapibypass.HiddenApiBypass
1012

1113
const val wifitrackerlib = "com.android.wifitrackerlib"
1214

@@ -199,6 +201,7 @@ val channelMap = mapOf(
199201
object WifiEntry {
200202
val wifiEntryClass: Class<*> = classLoader.loadClass("$wifitrackerlib.WifiEntry")
201203

204+
// TODO: check inline in SystemUI
202205
val getWifiInfoDescription = wifiEntryClass.findDeclaredMethod("getWifiInfoDescription")
203206

204207
private const val CONNECTED_STATE_CONNECTED = 2
@@ -220,6 +223,11 @@ object WifiEntry {
220223
append("standard=${mWifiInfo.wifiStandard}")
221224
append(", ")
222225
append("rssi=$rssi\u202FdBm")
226+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
227+
append(", ")
228+
// append("securityType=")
229+
append(securityTypeToString(currentSecurityType))
230+
}
223231
}
224232
}
225233
}
@@ -232,6 +240,40 @@ object WifiEntry {
232240
val getConnectedState = wifiEntryClass.findDeclaredMethod("getConnectedState")
233241

234242
val mWifiInfoField = wifiEntryClass.findDeclaredField("mWifiInfo")
243+
244+
245+
@Suppress("DEPRECATION")
246+
val getSecurityTypeNameMethod = WifiConfiguration::class.java.getDeclaredMethod("getSecurityTypeName", Int::class.java)
247+
248+
@Suppress("DEPRECATION")
249+
val WifiConfigurationFields = HiddenApiBypass.getStaticFields(WifiConfiguration::class.java);
250+
251+
val SECURITY_TYPE_PASSPOINT_R1_R2 = WifiConfigurationFields.first { it.name == "SECURITY_TYPE_PASSPOINT_R1_R2" }.getInt(null)
252+
val SECURITY_TYPE_PASSPOINT_R3 = WifiConfigurationFields.first { it.name == "SECURITY_TYPE_PASSPOINT_R3" }.getInt(null)
253+
254+
@Suppress("DEPRECATION")
255+
fun convertWifiConfigurationSecurityTypeBack(/* @WifiInfo.SecurityType */ wifiInfoSecurity: Int): /* @WifiAnnotations.SecurityType */ Int =
256+
when (wifiInfoSecurity) {
257+
WifiInfo.SECURITY_TYPE_OPEN -> WifiConfiguration.SECURITY_TYPE_OPEN
258+
WifiInfo.SECURITY_TYPE_WEP -> WifiConfiguration.SECURITY_TYPE_WEP
259+
WifiInfo.SECURITY_TYPE_PSK -> WifiConfiguration.SECURITY_TYPE_PSK
260+
WifiInfo.SECURITY_TYPE_EAP -> WifiConfiguration.SECURITY_TYPE_EAP
261+
WifiInfo.SECURITY_TYPE_SAE -> WifiConfiguration.SECURITY_TYPE_SAE
262+
WifiInfo.SECURITY_TYPE_OWE -> WifiConfiguration.SECURITY_TYPE_OWE
263+
WifiInfo.SECURITY_TYPE_WAPI_PSK -> WifiConfiguration.SECURITY_TYPE_WAPI_PSK
264+
WifiInfo.SECURITY_TYPE_WAPI_CERT -> WifiConfiguration.SECURITY_TYPE_WAPI_CERT
265+
WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE -> WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE
266+
WifiInfo.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT -> WifiConfiguration.SECURITY_TYPE_EAP_WPA3_ENTERPRISE_192_BIT
267+
WifiInfo.SECURITY_TYPE_PASSPOINT_R1_R2 -> SECURITY_TYPE_PASSPOINT_R1_R2
268+
WifiInfo.SECURITY_TYPE_PASSPOINT_R3 -> SECURITY_TYPE_PASSPOINT_R3
269+
WifiInfo.SECURITY_TYPE_DPP -> WifiConfiguration.SECURITY_TYPE_DPP
270+
else -> WifiInfo.SECURITY_TYPE_UNKNOWN
271+
}
272+
273+
274+
fun securityTypeToString(type: Int): String {
275+
return getSecurityTypeNameMethod(null, convertWifiConfigurationSecurityTypeBack(type)) as String
276+
}
235277
}
236278

237279
object StandardWifiEntry {
@@ -243,25 +285,33 @@ object StandardWifiEntry {
243285
val mTargetScanResults = mTargetScanResultsField[wifiEntry] as ArrayList<ScanResult>
244286
val mWifiInfo = mWifiInfoField[wifiEntry] as WifiInfo?
245287
if (mTargetScanResults.isEmpty()) return ""
246-
return mTargetScanResults.sortedBy { it.frequency }.joinToString(",\n ", "[", "]") {
288+
return mTargetScanResults.sortedBy { it.frequency }.joinToString(",\n ", "[", "]") { scanResult ->
247289
buildString {
248290
append("{")
249-
append(it.BSSID)
250-
if (mWifiInfo != null && mWifiInfo.bssid == it.BSSID) {
291+
append(scanResult.BSSID)
292+
if (mWifiInfo != null && mWifiInfo.bssid == scanResult.BSSID) {
251293
append("*")
252294
}
253295
append(", ")
254296

255-
append(it.frequency)
297+
append(scanResult.frequency)
256298
append("\u202FMHz")
257-
channelMap[it.frequency]?.let {
299+
channelMap[scanResult.frequency]?.let {
258300
append("\u202F($it)")
259301
}
260302
append(", ")
261303

262-
append(it.level)
304+
append(scanResult.level)
263305
append("\u202FdBm")
264306

307+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
308+
append(", ")
309+
// append("securityType=")
310+
append("[")
311+
append(scanResult.securityTypes.joinToString { WifiEntry.securityTypeToString(it) })
312+
append("]")
313+
}
314+
265315
// removed: WiFi-Standard
266316
// removed: WiFi 11BE info: mldMac, linkId, addLinks
267317
// removed: age in seconds

0 commit comments

Comments
 (0)