เจเฉฑเจ เจฆเจฟเจจ เจฎเฉเจจเฉเฉฐ Android เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจคเฉเจ Wi-Fi เจจเฉเฉฑเจเจตเจฐเจเจพเจ เจจเฉเฉฐ เจธเจเฉเจจ เจเจฐเจจ เจ
เจคเฉ เจเจเจธเฉเจธ เจชเฉเจเจเฉฐเจเจพเจ เจฌเจพเจฐเฉ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจกเฉเจเจพ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจธเฉเฅค
เจเฉฑเจฅเฉ เจธเจพเจจเฉเฉฐ เจเจ เจฎเฉเจธเจผเจเจฒเจพเจ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจเจฐเจจเจพ เจชเจฟเจ:
เจเจน เจฒเฉเจ เจเจฐเจเจพ เจเจฐเจฆเจพ เจนเฉ เจเจฟ เจเจจเจกเฉเจเฉ, เจนเฉเจ เจคเฉเจ เจฌเจฟเจจเจพเจ เจเจเจกเจฐเฉเจเจก เจเฉเจก เจคเฉเจ เจตเจพเจ-เจซเจพเจ เจตเจพเจคเจพเจตเจฐเจฃ เจฌเจพเจฐเฉ เจตเจฟเจเจชเจ เจกเฉเจเจพ เจเจฟเจตเฉเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจจเจพ เจนเฉ, เจชเจฐ เจธเจฟเจฐเจซ เจเจเจกเจฐเฉเจเจก API เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจเจฟเจตเฉเจ เจธเจฎเจเจฃเจพ เจนเฉเฅค
เจเจ เจฆเฉเจฐเฉ เจจเจพ เจเจฐเฉเจ เจ เจคเฉ เจเฉเจก เจฒเจฟเจเจฃเจพ เจธเจผเฉเจฐเฉ เจเจฐเฉเจเฅค
1. เจเฉฑเจ เจชเฉเจฐเฉเจเฉเจเจ เจฌเจฃเจพเจ
เจเจน เจจเฉเจ เจเจนเจจเจพเจ เจฒเจ เจนเฉ เจเจฟเจจเฉเจนเจพเจ เจจเฉ เจเฉฑเจ เจคเฉเจ เจตเฉฑเจง เจตเจพเจฐ เจเฉฑเจ Android เจชเฉเจฐเฉเจเฉเจเจ เจฌเจฃเจพเจเจ เจนเฉ, เจเจธเจฒเจ เจ เจธเฉเจ เจเจธ เจเจเจเจฎ เจฆเฉ เจตเฉเจฐเจตเจฟเจเจ เจจเฉเฉฐ เจเฉฑเจก เจฆเจฟเฉฐเจฆเฉ เจนเจพเจเฅค เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเจพ เจเฉเจก เจเฉเจเจฒเจฟเจจ, minSdkVersion=23 เจตเจฟเฉฑเจ เจชเฉเจธเจผ เจเฉเจคเจพ เจเจพเจตเฉเจเจพเฅค
2. เจชเจนเฉเฉฐเจ เจ เจจเฉเจฎเจคเฉเจเจ
เจเจชเจฒเฉเจเฉเจธเจผเจจ เจคเฉเจ Wi-Fi เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเจชเจญเฉเจเจคเจพ เจคเฉเจ เจเจ เจ
เจจเฉเจฎเจคเฉเจเจ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเจตเฉเจเฉเฅค เจเจธเจฆเฉ เจ
เจจเฉเจธเจพเจฐ
เจเจธ เจฒเจ, AndroidManifest.xml เจตเจฟเฉฑเจ เจ เจธเฉเจ เจธเจผเจพเจฎเจฒ เจเจฐเจพเจเจเฉ:
<uses-permission android_name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android_name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android_name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android_name="android.permission.ACCESS_FINE_LOCATION"/>
เจ เจคเฉ เจเฉเจก เจตเจฟเฉฑเจ เจเจฟเจธ เจตเจฟเฉฑเจ เจฎเฉเจเฉเจฆเจพ เจเจคเฉเจตเจฟเจงเฉ เจฆเจพ เจฒเจฟเฉฐเจ เจนเฉ:
import android.app.Activity
import android.content.Context
import android.location.LocationManager
import androidx.core.app.ActivityCompat
....
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
ActivityCompat.requestPermissions(
activity,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CHANGE_WIFI_STATE),
1
)
makeEnableLocationServices(activity.applicationContext)
} else {
ActivityCompat.requestPermissions(
activity,
arrayOf(Manifest.permission.CHANGE_WIFI_STATE),
1
)
}
/* ะฒะบะปััะฐะตั ัะบัะฐะฝ ะฒะบะปััะตะฝะธั ัะปัะถะฑั ะฟะพ ะพะฟัะตะดะตะปะตะฝะธั ะผะตััะพะฟะพะปะพะถะตะฝะธั */
fun makeEnableLocationServices(context: Context) {
// TODO: ะฟะตัะตะด ะฒัะทะพะฒะพะผ ััะพะน ััะฝะบัะธะธ ะฝะฐะดะพ ัะฐััะบะฐะทะฐัั ะฟะพะปัะทะพะฒะฐัะตะปั, ะทะฐัะตะผ ะะฐะผ ะดะพัััะฟ ะบ ะผะตััะพะฟะพะปะพะถะตะฝะธั
val lm: LocationManager =
context.applicationContext.getSystemService(Context.LOCATION_SERVICE) as LocationManager
val gpsEnabled: Boolean = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
val networkEnabled: Boolean = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!gpsEnabled && !networkEnabled) {
context.startActivity(Intent(ACTION_LOCATION_SOURCE_SETTINGS));
}
}
3. เจเฉฑเจ เจฌเฉเจฐเฉเจกเจเจพเจธเจ เจฐเฉเจธเฉเจตเจฐ เจฌเจฃเจพเจ เจ เจคเฉ เจตเจพเจ-เจซเจพเจ เจจเฉเฉฑเจเจตเจฐเจ เจตเจพเจคเจพเจตเจฐเจจ เจจเฉเฉฐ เจธเจเฉเจจ เจเจฐเจจ เจฌเจพเจฐเฉ เจกเจพเจเจพ เจ เฉฑเจชเจกเฉเจ เจเจตเฉเจเจเจธ เจฆเฉ เจเจพเจนเจเฉ เจฒเจเฅค
val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager
val wifiScanReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val success = intent.getBooleanExtra(WifiManager.EXTRA_RESULTS_UPDATED, false)
if (success) {
scanSuccess()
}
}
}
val intentFilter = IntentFilter()
/* ะฟะพะดะฟะธััะฒะฐะตะผัั ะฝะฐ ัะพะพะฑัะตะฝะธั ะพ ะฟะพะปััะตะฝะธะธ ะฝะพะฒัั
ัะตะทัะปััะฐัะพะฒ ัะบะฐะฝะธัะพะฒะฐะฝะธั */
intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)
context.registerReceiver(wifiScanReceiver, intentFilter)
val success = wifiManager.startScan()
if (!success) {
/* ััะพ-ัะพ ะฝะต ะฟะพะปััะธะปะพัั ะฟัะธ ะทะฐะฟััะบะต ัะบะฐะฝะธัะพะฒะฐะฝะธั, ะฟัะพะฒะตัััะต ะฒัะดะฐะฝัะต ัะฐะทัะตัะตะฝะธั */
}
....
private fun scanSuccess() {
/* ะฒะพั ะพะฝะธ, ัะตะทัะปััะฐัั ัะบะฐะฝะธัะพะฒะฐะฝะธั */
val results: List<ScanResult> = wifiManager.scanResults
}
เจฆเจธเจคเจพเจตเฉเจเจผ เจตเจฟเฉฑเจ WiFiManager.startScan เจตเจฟเจงเฉ เจจเฉเฉฐ API เจธเฉฐเจธเจเจฐเจฃ 28 เจคเฉเจ เจตเจพเจเจเฉ เจตเจเฉเจ เจเจฟเฉฐเจจเฉเจนเจฟเจค เจเฉเจคเจพ เจเจฟเจ เจนเฉ, เจชเจฐ เจฌเฉฐเจฆ เจนเฉเฅค
เจเฉเฉฑเจฒ เจฎเจฟเจฒเจพ เจเฉ, เจธเจพเจจเฉเฉฐ เจตเจธเจคเฉเจเจ เจฆเฉ เจเฉฑเจ เจธเฉเจเฉ เจฎเจฟเจฒเฉ เจนเฉ
4. ScanResult เจฆเฉเจเฉ เจ เจคเฉ เจธเจผเจฐเจคเจพเจ เจจเฉเฉฐ เจธเจฎเจเฉ
เจเจ เจเจธ เจเจฒเจพเจธ เจฆเฉ เจเฉเจ เจเฉเจคเจฐเจพเจ เจจเฉเฉฐ เจตเฉเจเฉเจ เจ เจคเฉ เจตเจฐเจฃเจจ เจเจฐเฉเจ เจเจฟ เจเจนเจจเจพเจ เจฆเจพ เจเฉ เจ เจฐเจฅ เจนเฉ:
SSID โ เจธเจฐเจตเจฟเจธ เจธเฉเฉฑเจ เจเจเจกเฉเจเจเฉเจซเจพเจเจฐ เจจเฉเฉฑเจเจตเจฐเจ เจฆเจพ เจจเจพเจฎ เจนเฉ
เจฌเฉเจเจธเจเจธเจเจเจกเฉ - เจฌเฉเจธเจฟเจ เจธเจฐเจตเจฟเจธ เจธเฉเฉฑเจ เจเจเจกเฉเจเจเฉเจซเจพเจเจฐ - เจจเฉเฉฑเจเจตเจฐเจ เจ เจกเฉเจชเจเจฐ เจฆเจพ MAC เจเจกเจฐเฉเฉฑเจธ (เจตเจพเจ-เจซเจพเจ เจชเฉเจเจเฉฐเจ)
เจฆเจพ เจชเฉฑเจงเจฐ โ เจชเฉเจฐเจพเจชเจค เจธเจฟเจเจจเจฒ เจคเจพเจเจค เจธเฉเจเจ [dBm (เจฐเฉเจธเฉ dBm) โ เจกเฉเจธเฉเจฌเจฒ, เจนเจตเจพเจฒเจพ เจธเจผเจเจคเฉ 1 mWเฅค] โ เจชเฉเจฐเจพเจชเจค เจธเจฟเจเจจเจฒ เจคเจพเจเจค เจฆเจพ เจธเฉเจเจเฅค 0 เจคเฉเจ -100 เจคเฉฑเจ เจฆเจพ เจฎเฉเฉฑเจฒ เจฒเฉเจเจฆเจพ เจนเฉ, เจเจฟเฉฐเจจเจพ 0 เจคเฉเจ เจ
เฉฑเจเฉ, Wi-Fi เจชเฉเจเจเฉฐเจ เจคเฉเจ เจคเฉเจนเจพเจกเฉ เจกเจฟเจตเจพเจเจธ เจฆเฉ เจฐเจธเจคเฉ เจตเจฟเฉฑเจ เจธเจฟเจเจจเจฒ เจชเจพเจตเจฐ เจเจจเฉ เจนเฉ เจตเฉฑเจง เจเจพเจเจฆเฉ เจนเฉเฅค เจนเฉเจฐ เจตเฉเจฐเจตเฉ เจฒเฉฑเจญเฉ เจเจพ เจธเจเจฆเฉ เจนเจจ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, 'เจคเฉ
val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
val numberOfLevels = 5
val level = WifiManager.calculateSignalLevel(level, numberOfLevels)
เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ - Wi-Fi เจชเฉเจเจเฉฐเจ [Hz] เจฆเฉ เจเจชเจฐเฉเจเจฟเฉฐเจ เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพเฅค เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ เจคเฉเจ เจเจฒเจพเจตเจพ, เจคเฉเจนเจพเจจเฉเฉฐ เจ
เจเฉเจคเฉ เจเฉเจจเจฒ เจตเจฟเฉฑเจ เจฆเจฟเจฒเจเจธเจชเฉ เจนเฉ เจธเจเจฆเฉ เจนเฉ. เจนเจฐเฉเจ เจฌเจฟเฉฐเจฆเฉ เจฆเฉ เจเจชเจฃเฉ เจธเฉฐเจเจพเจฒเจจ เจธเจผเฉเฉฑเจงเจคเจพ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ, Wi-Fi เจชเฉเจเจเฉฐเจเจพเจ เจฆเฉ เจธเจญ เจคเฉเจ เจชเฉเจฐเจธเจฟเฉฑเจง เจฐเฉเจเจ 2.4 GHz เจนเฉเฅค เจชเจฐ, เจตเจงเฉเจฐเฉ เจธเจเฉเจ เจนเฉเจฃ เจฒเจ, เจฌเจฟเฉฐเจฆเฉ เจจเจพเจฎ เจฆเฉ เจจเฉเฉเฉ เจเฉฑเจ เจจเฉฐเจฌเจฐ เจฆเฉ เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ 'เจคเฉ เจคเฉเจนเจพเจกเฉ เจซเจผเฉเจจ เจตเจฟเฉฑเจ เจเจพเจฃเจเจพเจฐเฉ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจเจฐเจฆเจพ เจนเฉเฅค เจเฉเจจเจฒเจพเจ เจฆเฉ เจธเฉฐเจเจฟเจ เจ
เจคเฉ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ
/* ะฟะพ ัะฐััะพัะต ะพะฟัะตะดะตะปัะตะผ ะฝะพะผะตั ะบะฐะฝะฐะปะฐ */
val channel: Int
get() {
return if (frequency in 2412..2484) {
(frequency - 2412) / 5 + 1
} else if (frequency in 5170..5825) {
(frequency - 5170) / 5 + 34
} else {
-1
}
}
เจธเจฎเจฐเฉฑเจฅเจพ - เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจฒเจ เจธเจญ เจคเฉเจ เจฆเจฟเจฒเจเจธเจช เจเฉเจคเจฐ, เจเจฟเจธ เจจเจพเจฒ เจฌเจนเฉเจค เจธเจพเจฐเจพ เจธเจฎเจพเจ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค เจเฉฑเจฅเฉ เจฌเจฟเฉฐเจฆเฉ เจฆเฉเจเจ "เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ" เจฒเจพเจเจจ เจตเจฟเฉฑเจ เจฒเจฟเจเฉเจเจ เจเจเจเจ เจนเจจเฅค เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจฆเจธเจคเจพเจตเฉเจเจผ เจตเจฟเฉฑเจ เจธเจเฉเจฐเจฟเฉฐเจ เจตเจฟเจเจเจฟเจ เจฆเฉ เจตเฉเจฐเจตเจฟเจเจ เจฆเฉ เจเฉเจ เจเจฐเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจจเจนเฉเจ เจนเฉเฅค เจเฉฑเจฅเฉ เจเฉเจ เจเจฆเจพเจนเจฐเจจเจพเจ เจนเจจ เจเจฟ เจเจธ เจฒเจพเจเจจ เจตเจฟเฉฑเจ เจเฉ เจนเฉ เจธเจเจฆเจพ เจนเฉ:
[WPA-PSK-TKIP+CCMP][WPA2-PSK-TKIP+CCMP][WPS][ESS]
[WPA2-PSK-CCMP][ESS]
[WPA2-PSK-CCMP+TKIP][ESS]
[WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][ESS]
[ESS][WPS]
5. เจธเฉฐเจเฉเจช เจ เจคเฉ เจชเจพเจฐเจธเจฟเฉฐเจ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจจเฉเฉฐ เจธเจฎเจเจฃเจพ
เจเจผเจฟเจเจฐเจฏเฉเจ เจนเฉ เจเจฟ android.net.wifi.* เจชเฉเจเฉเจ เจฆเฉเจเจ เจเจฒเจพเจธเจพเจ เจจเฉเฉฐ เจฒเฉเจจเจเจธ เจเจชเจฏเฉเจเจคเจพ เจฆเฉเจเจฐเจพ เจนเฉเฉฑเจก เจฆเฉ เจนเฉเจ เจพเจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค
เจ เจธเฉเจ เจฒเจเจพเจคเจพเจฐ เจเจพเจฐเจตเจพเจ เจเจฐเจพเจเจเฉเฅค เจเจ เจชเจนเจฟเจฒเจพเจ เจเฉฑเจ เจซเจพเจฐเจฎเฉเจ เจฆเฉ เจเจเจเจชเฉเฉฑเจ 'เจคเฉ เจตเจฟเจเจพเจฐ เจเจฐเฉเจ เจเจฟเจธ เจตเจฟเฉฑเจ เจฌเจฐเฉเจเจเจพเจ เจฆเฉ เจ เฉฐเจฆเจฐเจฒเฉ เจคเฉฑเจคเจพเจ เจจเฉเฉฐ "-" เจเจฟเฉฐเจจเฉเจน เจฆเฉเจเจฐเจพ เจตเฉฑเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ:
[WPA-PSK-TKIP+CCMP]
[WPA2-PSK-CCMP]
เจชเจนเจฟเจฒเจพ เจ เจฐเจฅ เจ เจเฉเจคเฉ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจชเฉเจฐเจฎเจพเจฃเจฟเจเจคเจพ เจตเจฟเจงเฉ. เจฏเจพเจจเฉ, เจกเจฟเจตเจพเจเจธ เจ เจคเฉ เจเจเจธเฉเจธ เจชเฉเจเจเฉฐเจ เจจเฉเฉฐ เจเจฟเจฐเจฟเจเจตเจพเจ เจฆเจพ เจเจฟเจนเฉเจพ เจเฉเจฐเจฎ เจเจฐเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจคเจพเจ เจเฉ เจเจเจธเฉเจธ เจชเฉเจเจเฉฐเจ เจจเฉเฉฐ เจเจชเจฃเฉ เจเจช เจจเฉเฉฐ เจตเจฐเจคเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฑเจคเฉ เจเจพ เจธเจเฉ เจ เจคเฉ เจชเฉเจฒเฉเจก เจจเฉเฉฐ เจเจฟเจตเฉเจ เจเจจเจเฉเจฐเจฟเจชเจ เจเฉเจคเจพ เจเจพเจตเฉเฅค เจเจธ เจชเฉเจธเจ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ, เจธเจญ เจคเฉเจ เจเจฎ เจตเจฟเจเจฒเจช WPA เจ เจคเฉ WPA2 เจนเจจ, เจเจฟเจธ เจตเจฟเฉฑเจ เจเจพเจ เจคเจพเจ เจนเจฐเฉเจ เจจเจพเจฒ เจเฉเฉเฉ เจกเจฟเจตเจพเจเจธ เจจเฉเฉฐ เจธเจฟเฉฑเจงเฉ เจเจพเจ เจ เจเฉเจคเฉ เจฆเฉเจเจฐเจพ. RADIUS เจธเจฐเจตเจฐ (WPA-Enterprice) เจเฉฑเจ เจเจจเจเฉเจฐเจฟเจชเจเจก เจเฉเจจเจฒ เจเฉฑเจคเฉ เจชเจพเจธเจตเจฐเจก เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจผเจฟเจเจฆเจพเจคเจฐ เจธเฉฐเจญเจพเจตเจจเจพ เจนเฉ, เจคเฉเจนเจพเจกเฉ เจเจฐ เจตเจฟเฉฑเจ เจชเจนเฉเฉฐเจ เจฌเจฟเฉฐเจฆเฉ เจเจธ เจธเจเฉเจฎ เจฆเฉ เจ เจจเฉเจธเจพเจฐ เจเฉฑเจ เจเฉเจจเฉเจเจธเจผเจจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจฆเฉเจเฉ เจธเฉฐเจธเจเจฐเจฃ เจ เจคเฉ เจชเจนเจฟเจฒเฉ เจตเจฟเฉฑเจ เจ เฉฐเจคเจฐ เจเจน เจนเฉ เจเจฟ เจเจธเจฆเจพ เจเฉฑเจ เจฎเจเจผเจฌเฉเจค โโโโเจธเจพเจเจซเจฐ เจนเฉ: AES เจฌเจจเจพเจฎ เจ เจธเฉเจฐเฉฑเจเจฟเจ เจค TKIPเฅค WPA3, เจเฉ เจเจฟ เจตเจงเฉเจฐเฉ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจ เจคเฉ เจเฉฑเจจเจค เจนเฉ, เจจเฉเฉฐ เจตเฉ เจนเฉเจฒเฉ-เจนเฉเจฒเฉ เจชเฉเจธเจผ เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉเฅค เจธเจฟเจงเจพเจเจคเจ เจคเฉเจฐ 'เจคเฉ, เจเจเจเจฐเจชเฉเจฐเจพเจเจธ เจนเฉฑเจฒ เจธเฉเจธเฉเจเฉเจเจฎ (เจธเจฟเจธเจเฉ เจธเฉเจเจเจฐเจฒเจพเจเจเจผเจก เจเฉ เจฎเฉเจจเฉเจเจฎเฉเจเจ) เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจตเจฟเจเจฒเจช เจนเฉ เจธเจเจฆเจพ เจนเฉ, เจชเจฐ เจฎเฉเจ เจเจธ เจจเฉเฉฐ เจเจฆเฉ เจจเจนเฉเจ เจฆเฉเจเจฟเจ เจนเฉเฅค
เจเจเจธเฉเจธ เจชเฉเจเจเฉฐเจ เจจเฉเฉฐ MAC เจเจกเจฐเฉเฉฑเจธ เจฆเฉเจเจฐเจพ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจเจฐเจจ เจฒเจ เจเฉเจเจซเจฟเจเจฐ เจเฉเจคเจพ เจเจฟเจ เจนเฉ เจธเจเจฆเจพ เจนเฉเฅค เจเจพเจ, เจเฉเจเจฐ เจเจเจธเฉเจธ เจชเฉเจเจเฉฐเจ เจชเฉเจฐเจพเจฃเฉ WEP เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจกเฉเจเจพ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉ, เจคเจพเจ เจ
เจธเจฒ เจตเจฟเฉฑเจ เจเฉเจ เจชเฉเจฐเจฎเจพเจฃเจฟเจเจคเจพ เจจเจนเฉเจ เจนเฉ (เจเฉฑเจฅเฉ เจเฉเจชเจค เจเฉเฉฐเจเฉ เจเจจเจเฉเจฐเจฟเจชเจธเจผเจจ เจเฉเฉฐเจเฉ เจนเฉ)เฅค เจ
เจธเฉเจ เจ
เจเจฟเจนเฉ เจตเจฟเจเจฒเจชเจพเจ เจจเฉเฉฐ OTHER เจตเจเฉเจ เจธเจผเฉเจฐเฉเจฃเฉเจฌเฉฑเจง เจเจฐเจฆเฉ เจนเจพเจเฅค
เจเฉฑเจ เจขเฉฐเจ เจตเฉ เจนเฉ เจเฉ เจเจจเจคเจ เจตเจพเจ-เจซเจพเจ เจตเจฟเฉฑเจ เจเฉเจชเฉ เจนเฉเจ เจเฉเจชเจเจฟเจต เจชเฉเจฐเจเจฒ เจเฉเจ เจฆเฉ เจจเจพเจฒ เจชเฉเจฐเจธเจฟเฉฑเจง เจนเฉ - เจเฉฑเจ เจฌเฉเจฐเจพเจเจเจผเจฐ เจฐเจพเจนเฉเจ เจเฉฑเจ เจชเฉเจฐเจฎเจพเจฃเฉเจเจฐเจจ เจฌเฉเจจเจคเฉเฅค เจ
เจเจฟเจนเฉ เจเจเจธเฉเจธ เจชเฉเจเจเฉฐเจ เจธเจเฉเจจเจฐ เจจเฉเฉฐ เจเฉเฉฑเจฒเฉเจนเฉ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเฉ เจนเจจ (เจเฉ เจเจฟ เจเจน เจญเฉเจคเจฟเจ เจเฉเจจเฉเจเจธเจผเจจ เจฆเฉ เจฆเฉเจฐเจฟเจธเจผเจเฉเจเฉเจฃ เจคเฉเจ เจนเจจ)เฅค เจเจธเจฒเจ, เจ
เจธเฉเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจชเจจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจธเจผเฉเจฐเฉเจฃเฉเจฌเฉฑเจง เจเจฐเจฆเฉ เจนเจพเจเฅค
เจฆเฉเจเจพ เจฎเฉเฉฑเจฒ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฆเจฐเจธเจพเจเจ เจเจพ เจธเจเจฆเจพ เจนเฉ เจฎเฉเฉฑเจ เจชเฉเจฐเจฌเฉฐเจงเจจ เจเจฒเจเฉเจฐเจฟเจฆเจฎ. เจเจน เจเฉฑเจชเจฐ เจฆเฉฑเจธเฉ เจชเฉเจฐเจฎเจพเจฃเจฟเจเจคเจพ เจตเจฟเจงเฉ เจฆเจพ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจนเฉเฅค เจเจจเจเฉเจฐเจฟเจชเจธเจผเจจ เจเฉเฉฐเจเฉเจเจ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจฌเจฆเจฒเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจเจธ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเจฆเจพ เจนเฉเฅค เจเจ เจธเฉฐเจญเจพเจตเจฟเจค เจตเจฟเจเจฒเจชเจพเจ 'เจคเฉ เจตเจฟเจเจพเจฐ เจเจฐเฉเจ. EAP - เจเจผเจฟเจเจฐ เจเฉเจคเฉ WPA-Enterprice เจตเจฟเฉฑเจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจฆเจพเจเจฒ เจเฉเจคเฉ เจชเฉเจฐเจฎเจพเจฃเฉเจเจฐเจจ เจกเฉเจเจพ เจฆเฉ เจชเฉเจธเจผเจเฉ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจกเฉเจเจพเจฌเฉเจธ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉเฅค SAE - เจเจกเจตเจพเจเจธเจก WPA3 เจตเจฟเฉฑเจ เจตเจฐเจคเจฟเจ เจเจฟเจ, เจฌเจฐเฉเจ เจซเฉเจฐเจธ เจฒเจ เจตเจงเฉเจฐเฉ เจฐเฉเจงเจเฅค PSK - เจธเจญ เจคเฉเจ เจเจฎ เจตเจฟเจเจฒเจช, เจเฉฑเจ เจชเจพเจธเจตเจฐเจก เจฆเจพเจเจฒ เจเจฐเจจเจพ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจเจจเจเฉเจฐเจฟเจชเจเจก เจฐเฉเจช เจตเจฟเฉฑเจ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจเจฐเจจเจพ เจธเจผเจพเจฎเจฒ เจเจฐเจฆเจพ เจนเฉเฅค IEEE8021X - เจเฉฑเจ เจ เฉฐเจคเจฐเจฐเจพเจธเจผเจเจฐเฉ เจฎเจฟเจเจฐ เจฆเฉ เจ เจจเฉเจธเจพเจฐ (WPA เจชเจฐเจฟเจตเจพเจฐ เจฆเฉเจเจฐเจพ เจธเจฎเจฐเจฅเจฟเจค เจเจธ เจคเฉเจ เจตเฉฑเจเจฐเจพ)เฅค OWE (เจ เจตเจธเจฐเจตเจพเจฆเฉ เจตเจพเจเจฐเจฒเฉเฉฑเจธ เจเจจเจเฉเจฐเจฟเจชเจธเจผเจจ) เจชเฉเจเจเฉฐเจเจพเจ เจฒเจ IEEE 802.11 เจธเจเฉเจเจกเจฐเจก เจฆเจพ เจเฉฑเจ เจเจเจธเจเฉเจเจธเจผเจจ เจนเฉ เจเจฟเจจเฉเจนเจพเจ เจจเฉเฉฐ เจ เจธเฉเจ เจเจชเจจ เจตเจเฉเจ เจธเจผเฉเจฐเฉเจฃเฉเจฌเฉฑเจง เจเฉเจคเจพ เจนเฉเฅค OWE เจเฉฑเจ เจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจจเฉเฉฑเจเจตเจฐเจ เจเฉฑเจคเฉ เจเจธ เจจเฉเฉฐ เจเจจเจเฉเจฐเจฟเจชเจ เจเจฐเจเฉ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจเฉเจคเฉ เจเจ เจกเฉเจเจพ เจฆเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจจเฉเฉฐ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค เจเฉฑเจ เจตเจฟเจเจฒเจช เจตเฉ เจธเฉฐเจญเจต เจนเฉ เจเจฆเฉเจ เจเฉเจ เจเจเจธเฉเจธ เจเฉเฉฐเจเฉเจเจ เจจเจพ เจนเฉเจฃ, เจเจ เจเจธ เจตเจฟเจเจฒเจช เจจเฉเฉฐ NONE เจเจนเฉเจเฅค
เจคเฉเจเจพ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจ เจเฉเจคเฉ เจนเฉ. เจเจจเจเฉเจฐเจฟเจชเจธเจผเจจ เจธเจเฉเจฎเจพเจ - เจชเฉเจฐเจธเจพเจฐเจฟเจค เจกเฉเจเจพ เจจเฉเฉฐ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเจฐเจจ เจฒเจ เจธเจพเจเจซเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฟเจตเฉเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจเจ เจตเจฟเจเจฒเจชเจพเจ เจจเฉเฉฐ เจธเฉเจเฉเจฌเฉฑเจง เจเจฐเฉเจเฅค WEP - เจเฉฑเจ RC4 เจธเจเฉเจฐเฉเจฎ เจธเจฟเจซเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉ, เจเฉเจชเจค เจเฉเฉฐเจเฉ เจเจจเจเฉเจฐเจฟเจชเจธเจผเจจ เจเฉเฉฐเจเฉ เจนเฉ, เจเฉ เจเจฟ เจเจงเฉเจจเจฟเจ เจเฉเจฐเจฟเจชเจเฉเจเฉเจฐเจพเจซเฉ เจฆเฉ เจฆเฉเจจเฉเจ เจตเจฟเฉฑเจ เจ เจธเจตเฉเจเจพเจฐเจจเจฏเฉเจ เจฎเฉฐเจจเฉ เจเจพเจเจฆเฉ เจนเฉเฅค TKIP - WPA, CKIP - WPA2 เจตเจฟเฉฑเจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค TKIP + CKIP - เจชเฉฑเจเฉเฉ เจ เจจเฉเจเฉเจฒเจคเจพ เจฒเจ WPA เจ เจคเฉ WPA2 เจฆเฉ เจธเจฎเจฐเฉฑเจฅ เจชเฉเจเจเฉฐเจเจพเจ เจตเจฟเฉฑเจ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจคเจฟเฉฐเจจ เจคเฉฑเจคเจพเจ เจฆเฉ เจฌเจเจพเจ, เจคเฉเจธเฉเจ เจเฉฑเจ เจเจเฉฑเจฒเฉ WEP เจเจฟเฉฐเจจเฉเจน เจฒเฉฑเจญ เจธเจเจฆเฉ เจนเฉ:
[WEP]
เจเจฟเจตเฉเจ เจเจฟ เจ เจธเฉเจ เจเฉฑเจชเจฐ เจเจฐเจเจพ เจเฉเจคเฉ เจนเฉ, เจเจน เจเฉเฉฐเจเฉเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฒเจ เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจพ เจเจฐเจจ เจฒเจ เจเจพเจซเจผเฉ เจนเฉ, เจเฉ เจฎเฉเจเฉเจฆ เจจเจนเฉเจ เจนเฉ, เจ เจคเฉ เจเจจเจเฉเจฐเจฟเจชเจธเจผเจจ เจตเจฟเจงเฉ, เจเฉ เจเจฟ เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ เจธเจฎเจพเจจ เจนเฉเฅค
เจนเฉเจฃ เจเจธ เจฌเจฐเฉเจเจ 'เจคเฉ เจตเจฟเจเจพเจฐ เจเจฐเฉ:
[ESS]
เจเจธ เจตเจพเจ-เจซเจพเจ เจเจชเจฐเฉเจเจฟเฉฐเจ เจฎเฉเจก เจ เจตเจพเจ-เจซเจพเจ เจจเฉเฉฑเจเจตเจฐเจ เจเฉเจชเฉเจฒเฉเจเฉ. เจคเฉเจนเจพเจจเฉเฉฐ BSS (เจฌเฉเจธเจฟเจ เจธเจฐเจตเจฟเจธ เจธเฉเฉฑเจ) เจฎเฉเจก เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจเจฐเจจเจพ เจชเฉ เจธเจเจฆเจพ เจนเฉ - เจเจฆเฉเจ เจเฉฑเจ เจเจเจธเฉเจธ เจชเฉเจเจเฉฐเจ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฟเจธ เจฐเจพเจนเฉเจ เจเจจเฉเจเจ เจเฉเจคเฉ เจกเจฟเจตเจพเจเจธเจพเจ เจธเฉฐเจเจพเจฐ เจเจฐเจฆเฉเจเจ เจนเจจเฅค เจธเจฅเจพเจจเจ เจจเฉเฉฑเจเจตเจฐเจ 'เจคเฉ เจชเจพเจเจ เจเจพ เจธเจเจฆเจพ เจนเฉ. เจเฉฑเจ เจจเจฟเจฏเจฎ เจฆเฉ เจคเฉเจฐ 'เจคเฉ, เจตเฉฑเจ-เจตเฉฑเจ เจธเจฅเจพเจจเจ เจจเฉเฉฑเจเจตเจฐเจเจพเจ เจคเฉเจ เจกเจฟเจตเจพเจเจธเจพเจ เจจเฉเฉฐ เจเจจเฉเจเจ เจเจฐเจจ เจฒเจ เจเจเจธเฉเจธ เจชเฉเจเจเฉฐเจเจธ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจเจธเจฒเจ เจเจน เจเจเจธเจเฉเจเจกเจก เจธเจฐเจตเจฟเจธ เจธเฉเฉฑเจเจพเจ - ESS เจฆเจพ เจนเจฟเฉฑเจธเจพ เจนเจจเฅค IBSSs (เจธเฉเจคเฉฐเจคเจฐ เจฌเฉเจธเจฟเจ เจธเจฐเจตเจฟเจธ เจธเฉเฉฑเจ) เจฆเฉ เจเจฟเจธเจฎ เจฆเจฐเจธเจพเจเจเจฆเฉ เจนเฉ เจเจฟ เจกเจฟเจตเจพเจเจธ เจเฉฑเจ เจชเฉเจ เจฐ-เจเฉ-เจชเฉเจ เจฐ เจจเฉเฉฑเจเจตเจฐเจ เจฆเจพ เจนเจฟเฉฑเจธเจพ เจนเฉเฅค
เจคเฉเจธเฉเจ WPS เจซเจฒเฉเจ เจตเฉ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ:
[WPS]
WPS (Wi-Fi เจธเฉเจฐเฉฑเจเจฟเจ เจค เจธเฉเฉฑเจเจ เฉฑเจช) เจเฉฑเจ Wi-Fi เจจเฉเฉฑเจเจตเจฐเจ เจฆเฉ เจ เจฐเจง-เจเจเฉเจฎเฉเจเจฟเจ เจธเจผเฉเจฐเฉเจเจค เจฒเจ เจเฉฑเจ เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจนเฉเฅค เจธเจผเฉเจฐเฉ เจเจฐเจจ เจฒเจ, เจเจชเจญเฉเจเจคเจพ เจเจพเจ เจคเจพเจ 8-เจ เฉฑเจเจฐเจพเจ เจฆเจพ เจชเจพเจธเจตเจฐเจก เจฆเจพเจเจฒ เจเจฐเจฆเจพ เจนเฉ เจเจพเจ เจฐเจพเจเจเจฐ 'เจคเฉ เจเฉฑเจ เจฌเจเจจ เจฆเจฌเจพเจเจฆเจพ เจนเฉเฅค เจเฉเจเจฐ เจคเฉเจนเจพเจกเจพ เจเจเจธเฉเจธ เจชเฉเจเจเฉฐเจ เจชเจนเจฟเจฒเฉ เจเจฟเจธเจฎ เจฆเจพ เจนเฉ เจ เจคเฉ เจเจน เจเฉเจเจฌเจพเจเจธ เจคเฉเจนเจพเจกเฉ เจเจเจธเฉเจธ เจชเฉเจเจเฉฐเจ เจฆเฉ เจจเจพเจฎ เจฆเฉ เจ เฉฑเจเฉ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจกเจฎเจฟเจจ เจชเฉเจจเจฒ 'เจคเฉ เจเจพเจฃ เจ เจคเฉ WPS เจชเจนเฉเฉฐเจ เจจเฉเฉฐ เจ เจธเจฎเจฐเฉฑเจฅ เจเจฐเจจ เจฆเฉ เจเจผเฉเจฐเจฆเจพเจฐ เจธเจฟเจซเจพเจฐเจธเจผ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจนเจเฉเจเจค เจเจน เจนเฉ เจเจฟ เจ เจเจธเจฐ 8-เจ เฉฐเจ เจตเจพเจฒเจพ เจชเจฟเฉฐเจจ MAC เจเจกเจฐเฉเฉฑเจธ เจฆเฉเจเจฐเจพ เจฒเฉฑเจญเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจเจพเจ เจเจธ เจจเฉเฉฐ เจจเจเจผเจฆเฉเจเฉ เจธเจฎเฉเจ เจตเจฟเฉฑเจ เจเจพเจเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจเจฟเจธเจฆเจพ เจเฉเจ เจฌเฉเจเจฎเจพเจจเฉ เจจเจพเจฒ เจซเจพเจเจฆเจพ เจเจ เจพ เจธเจเจฆเจพ เจนเฉเฅค
6. เจเฉฑเจ เจฎเจพเจกเจฒ เจ เจคเฉ เจชเจพเจฐเจธเจฟเฉฐเจ เจซเฉฐเจเจธเจผเจจ เจฌเจฃเจพเจ
เจธเจพเจจเฉเฉฐ เจเฉฑเจชเจฐ เจเฉ เจชเจคเจพ เจฒเฉฑเจเจพ เจเจธ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ, เจ เจธเฉเจ เจตเจฐเจฃเจจ เจเจฐเจพเจเจเฉ เจเจฟ เจกเฉเจเจพ เจเจฒเจพเจธเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉ เจนเฉเจเจ:
/* ัั
ะตะผะฐ ะฐััะตะฝัะธัะธะบะฐัะธะธ */
enum class AuthMethod {
WPA3,
WPA2,
WPA, // Wi-Fi Protected Access
OTHER, // ะฒะบะปััะฐะตั ะฒ ัะตะฑั Shared Key Authentication ะธ ะดั. ะธัะฟะพะปัะทัััะธะต mac-address-based ะธ WEP
CCKM, // Cisco
OPEN // Open Authentication. ะะพะถะตั ะฑััั ัะพ ัะบััััะผ Captive Portal Detection - ะทะฐะฟัะพั ะฐััะตะฝัะธัะธะบะฐัะธะธ ัะตัะตะท ะฑัะฐัะทะตั
}
/* ะฐะปะณะพัะธัะผ ะฒะฒะพะดะฐ ะบะปััะตะน */
enum class KeyManagementAlgorithm {
IEEE8021X, // ะฟะพ ััะฐะฝะดะฐััั
EAP, // Extensible Authentication Protocol, ัะฐััะธััะตะผัะน ะฟัะพัะพะบะพะป ะฐััะตะฝัะธัะธะบะฐัะธะธ
PSK, // Pre-Shared Key โ ะบะฐะถะดัะน ัะทะตะป ะฒะฒะพะดะธั ะฟะฐัะพะปั ะดะปั ะดะพัััะฟะฐ ะบ ัะตัะธ
WEP, // ะฒ WEP ะฟะฐัะพะปั ัะฒะปัะตััั ะบะปััะพะผ ัะธััะพะฒะฐะฝะธั (No auth key)
SAE, // Simultaneous Authentication of Equals - ะผะพะถะตั ะฑััั ะฒ WPA3
OWE, // Opportunistic Wireless Encryption - ะฒ ัะพััะตัะฐั
ะฝะพะฒัั
ะฟะพะบะพะปะตะฝะธะน, ะฟัะฑะปะธัะฝัั
ัะตััั
ัะธะฟะฐ OPEN
NONE // ะผะพะถะตั ะฑััั ะฑะตะท ัะธััะพะฒะฐะฝะธั ะฒ OPEN, OTHER
}
/* ะผะตัะพะด ัะธััะพะฒะฐะฝะธั */
enum class CipherMethod {
WEP, // Wired Equivalent Privacy, ะะฝะฐะปะพะณ ัะธััะพะฒะฐะฝะธั ััะฐัะธะบะฐ ะฒ ะฟัะพะฒะพะดะฝัั
ัะตััั
TKIP, // Temporal Key Integrity Protocol
CCMP, // Counter Mode with Cipher Block Chaining Message Authentication Code Protocol,
// ะฟัะพัะพะบะพะป ะฑะปะพัะฝะพะณะพ ัะธััะพะฒะฐะฝะธั ั ะบะพะดะพะผ ะฐััะตะฝัะธัะฝะพััะธ ัะพะพะฑัะตะฝะธั ะธ ัะตะถะธะผะพะผ ััะตะฟะปะตะฝะธั ะฑะปะพะบะพะฒ ะธ ััะตััะธะบะฐ
// ะฝะฐ ะพัะฝะพะฒะต AES
NONE // ะผะพะถะตั ะฑััั ะฑะตะท ัะธััะพะฒะฐะฝะธั ะฒ OPEN, OTHER
}
/* ะฝะฐะฑะพั ะผะตัะพะดะพะฒ ัะธััะพะฒะฐะฝะธั ะธ ะฟัะพัะพะบะพะปะพะฒ, ะฟะพ ะบะพัะพััะผ ะผะพะถะตั ัะฐะฑะพัะฐัั ัะพัะบะฐ */
data class Capability(
var authScheme: AuthMethod? = null,
var keyManagementAlgorithm: KeyManagementAlgorithm? = null,
var cipherMethod: CipherMethod? = null
)
/* ะ ะตะถะธะผ ัะฐะฑะพัั WiFi (ะธะปะธ ัะพะฟะพะปะพะณะธั ัะตัะตะน WiFi) */
enum class TopologyMode {
IBSS, // ะญะฟะธะทะพะดะธัะตัะบะฐั ัะตัั (Ad-Hoc ะธะปะธ IBSS โ Independent Basic Service Set).
BSS, // ะัะฝะพะฒะฝะฐั ะทะพะฝะฐ ะพะฑัะปัะถะธะฒะฐะฝะธั Basic Service Set (BSS) ะธะปะธ Infrastructure Mode.
ESS // ะ ะฐััะธัะตะฝะฝะฐั ะทะพะฝะฐ ะพะฑัะปัะถะธะฒะฐะฝะธั ESS โ Extended Service Set.
}
เจเจ เจนเฉเจฃ เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจฒเจฟเจเฉเจ เจเฉ เจธเจฎเจฐเฉฑเจฅเจพ เจเฉเจคเจฐ เจจเฉเฉฐ เจชเจพเจฐเจธ เจเจฐเฉเจเจพ:
private fun parseCapabilities(capabilitiesString: String): List < Capability > {
val capabilities: List < Capability > = capabilitiesString
.splitByBrackets()
.filter {
!it.isTopology() && !it.isWps()
}
.flatMap {
parseCapability(it)
}
return
if (!capabilities.isEmpty()) {
capabilities
} else {
listOf(Capability(AuthMethod.OPEN, KeyManagementAlgorithm.NONE, CipherMethod.NONE))
}
}
private fun parseCapability(part: String): List < Capability > {
if (part.contains("WEP")) {
return listOf(Capability(
AuthMethod.OTHER,
KeyManagementAlgorithm.WEP,
CipherMethod.WEP
))
}
val authScheme = when {
part.contains("WPA3") - > AuthMethod.WPA3
part.contains("WPA2") - > AuthMethod.WPA2
part.contains("WPA") - > AuthMethod.WPA
else - > null
}
val keyManagementAlgorithm = when {
part.contains("OWE") - > KeyManagementAlgorithm.OWE
part.contains("SAE") - > KeyManagementAlgorithm.SAE
part.contains("IEEE802.1X") - > KeyManagementAlgorithm.IEEE8021X
part.contains("EAP") - > KeyManagementAlgorithm.EAP
part.contains("PSK") - > KeyManagementAlgorithm.PSK
else - > null
}
val capabilities = ArrayList < Capability > ()
if (part.contains("TKIP") || part.contains("CCMP")) {
if (part.contains("TKIP")) {
capabilities.add(Capability(
authScheme ? : AuthMethod.OPEN,
keyManagementAlgorithm ? : KeyManagementAlgorithm.NONE,
CipherMethod.TKIP
))
}
if (part.contains("CCMP")) {
capabilities.add(Capability(
authScheme ? : AuthMethod.OPEN,
keyManagementAlgorithm ? : KeyManagementAlgorithm.NONE,
CipherMethod.CCMP
))
}
} else if (authScheme != null || keyManagementAlgorithm != null) {
capabilities.add(Capability(
authScheme ? : AuthMethod.OPEN,
keyManagementAlgorithm ? : KeyManagementAlgorithm.NONE,
CipherMethod.NONE
))
}
return capabilities
}
private fun parseTopologyMode(capabilitiesString: String): TopologyMode ? {
return capabilitiesString
.splitByBrackets()
.mapNotNull {
when {
it.contains("ESS") - > TopologyMode.ESS
it.contains("BSS") - > TopologyMode.BSS
it.contains("IBSS") - > TopologyMode.IBSS
else - > null
}
}
.firstOrNull()
}
private fun parseWPSAvailable(capabilitiesString: String): Boolean {
return capabilitiesString
.splitByBrackets()
.any {
it.isWps()
}
}
private fun String.splitByBrackets(): List < String > {
val m = Pattern.compile("[(.*?)]").matcher(this)
val parts = ArrayList < String > ()
while (m.find()) {
parts.add(m.group().replace("[", "").replace("]", ""))
}
return parts
}
private fun String.isTopology(): Boolean {
return TopologyMode.values().any {
this == it.name
}
}
private fun String.isWps(): Boolean {
return this == "WPS"
}
8. เจจเจคเฉเจเจพ เจตเฉเจเฉ
เจฎเฉเจ เจจเฉเฉฑเจเจตเจฐเจ เจจเฉเฉฐ เจธเจเฉเจจ เจเจฐเจพเจเจเจพ เจ เจคเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจฆเจฟเจเจพเจตเจพเจเจเจพ เจเจฟ เจฎเฉเจจเฉเฉฐ เจเฉ เจฎเจฟเจฒเจฟเจเฅค Log.d เจฆเฉเจเจฐเจพ เจธเจงเจพเจฐเจจ เจเจเจเจชเฉเฉฑเจ เจฆเฉ เจจเจคเฉเจเฉ เจฆเจฟเจเจพเจ เจเจ เจนเจจ:
Capability of Home-Home [WPA2-PSK-CCMP][ESS][WPS]
...
capabilities=[Capability(authScheme=WPA2, keyManagementAlgorithm=PSK, cipherMethod=CCMP)], topologyMode=ESS, availableWps=true
เจเจชเจฒเฉเจเฉเจธเจผเจจ เจเฉเจก เจคเฉเจ เจจเฉเจเจตเจฐเจ เจจเจพเจฒ เจเฉเฉเจจ เจฆเจพ เจฎเฉเฉฑเจฆเจพ เจ
เจฃเจเจพเจฃ เจฐเจฟเจนเจพเฅค เจฎเฉเจ เจธเจฟเจฐเจซ เจเจน เจเจนเจพเจเจเจพ เจเจฟ เจฎเฉเจฌเจพเจเจฒ เจกเจฟเจตเจพเจเจธ เจฆเฉ OS เจคเฉเจ เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจเฉเจคเฉ เจชเจพเจธเจตเจฐเจกเจพเจ เจจเฉเฉฐ เจชเฉเฉเจนเจจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ wpa_supplicant.conf เจจเฉเฉฐ เจชเฉเฉเจนเจจ เจฒเจ เจฐเฉเจ เจ
เจงเจฟเจเจพเจฐเจพเจ เจ
เจคเฉ เจซเจพเจเจฒ เจธเจฟเจธเจเจฎ เจฆเฉเจเจฐเจพ เจฐเจฎเจ เจเจฐเจจ เจฆเฉ เจเฉฑเจเจพ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจเฉเจเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจคเจฐเจ เจฒเจ เจฌเจพเจนเจฐเฉเจ เจชเจพเจธเจตเจฐเจก เจฆเจพเจเจฒ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจคเจพเจ เจเฉเจจเฉเจเจธเจผเจจ เจเจฒเจพเจธ เจฐเจพเจนเฉเจ เจฌเจฃเจพเจเจ เจเจพ เจธเจเจฆเจพ เจนเฉ
ะกะฟะฐัะธะฑะพ
เจเฉ เจคเฉเจธเฉเจ เจธเฉเจเจฆเฉ เจนเฉ เจเจฟ เจเฉเจ เจเฉเฉเจจ เจเจพเจ เจ เฉเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ, เจคเจพเจ เจเจฟเฉฑเจชเจฃเฉเจเจ เจตเจฟเฉฑเจ เจฒเจฟเจเฉ :)
เจธเจฐเฉเจค: www.habr.com