เดตเตˆเดซเตˆเดฏเตเด‚ เดฎเดฑเตเดฑเต เดชเดฒ เดšเตเดฐเตเด•เตเด•เต†เดดเตเดคเตเดคเตเด•เดณเตเด‚. เดตเต€เตผเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต† เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เดตเตˆเดซเตˆ เดจเต‹เดกเตเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดŽเด™เตเด™เดจเต† เดฒเดญเดฟเด•เตเด•เตเด‚

เด’เดฐเต เดฆเดฟเดตเดธเด‚ เดŽเดจเดฟเด•เตเด•เต เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตˆเดซเตˆ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เตพ เดธเตโ€Œเด•เดพเตป เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด†เด•เตโ€Œเดธเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดถเดฆเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดจเต‡เดŸเดพเดจเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต.

เด‡เดตเดฟเดŸเต† เดžเด™เตเด™เตพเด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเด•เตพ เดจเต‡เดฐเดฟเดŸเต‡เดฃเตเดŸเดฟ เดตเดจเตเดจเต: เด“เดซเต.เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเตป เดตเดฟเดตเดฐเดฟเดšเตเดš เด•เตเดฒเดพเดธเตเด•เดณเดฟเตฝ เดชเดฒเดคเตเด‚ เด’เดดเดฟเดตเดพเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเต (API เดฒเต†เดตเตฝ > 26), เด…เดคเต เด…เดคเดฟเตฝ เดชเตเดฐเดคเดฟเดซเดฒเดฟเดšเตเดšเดฟเดฒเตเดฒ; เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเดฒเต† เดšเดฟเดฒ เด•เดพเดฐเตเดฏเด™เตเด™เดณเตเดŸเต† เดตเดฟเดตเดฐเดฃเด‚ เดตเดณเดฐเต† เด•เตเดฑเดตเดพเดฃเต (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด•เตเดฒเดพเดธเดฟเดจเตเดฑเต† เด•เดดเดฟเดตเตเด•เดณเตเดŸเต† เดซเต€เตฝเดกเต เดธเตเด•เดพเตป เดซเดฒเด‚ เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เด’เดจเตเดจเตเด‚ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚ เด…เดคเดฟเตฝ เดงเดพเดฐเดพเดณเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เดกเดพเดฑเตเดฑ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต). เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต† เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเต, เดจเดฟเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เดตเตˆเดซเตˆเดฏเตเดฎเดพเดฏเดฟ เด…เดŸเตเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดธเดฟเดฆเตเดงเดพเดจเตเดคเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฒเต‹เด•เตเด•เตฝ เดนเต‹เดธเตเดฑเตเดฑเต เดตเดดเดฟ เดฑเต‚เดŸเตเดŸเตผ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเดพเดคเต†, เดตเตเดฏเด•เตเดคเดฟเด—เดคเดฎเดพเดฏเดฟ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฏเดฟ เดคเต‹เดจเตเดจเตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เดšเตเดฐเตเด•เตเด•เต†เดดเตเดคเตเดคเตเด•เตพ เดจเดฟเด™เตเด™เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดŽเดจเตเดจเดพเตฝ เด…เดต เดŽเด™เตเด™เดจเต† เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดฎเต†เดจเตเดจเตเด‚ เดฐเต‚เดชเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดฎเต†เดจเตเดจเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚ (เดตเดฟเดงเดฟ เด†เดคเตเดฎเดจเดฟเดทเตเด เดตเตเด‚ เดฎเตเตป เด…เดจเตเดญเดตเดคเตเดคเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต).

เดŽเตปโ€Œเดกเดฟโ€Œเด•เต† เด•เต‚เดŸเดพเดคเต† เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตˆเดซเตˆ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดธเดฎเด—เตเดฐเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดŽเด™เตเด™เดจเต† เดจเต‡เดŸเดพเดฎเต†เดจเตเดจเตเด‚ เดนเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเตเด‚ เดŽเดจเตเดจเดพเตฝ เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต เดŽเดชเดฟเด เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดคเตเดฐเด‚ เดŽเด™เตเด™เดจเต† เดตเตเดฏเดพเด–เตเดฏเดพเดจเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดˆ เดฒเต‡เด–เดจเด‚ เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดจเดฎเตเด•เตเด•เต เดคเดพเดฎเดธเดฟเด•เตเด•เดพเดคเต† เด•เต‹เดกเต เดŽเดดเตเดคเดพเตป เดคเตเดŸเด™เตเด™เดพเด‚.

1. เด’เดฐเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•

เดˆ เด•เตเดฑเดฟเดชเตเดชเต เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดคเดตเดฃ Android เดชเตเดฐเตŠเดœเด•เตโ€Œเดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดšเดตเดฐเต† เด‰เดฆเตเดฆเต‡เดถเดฟเดšเตเดšเตเดณเตเดณเดคเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดˆ เด‡เดจเดคเตเดคเดฟเดจเตเดฑเต† เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดžเด™เตเด™เตพ เด’เดดเดฟเดตเดพเด•เตเด•เตเดจเตเดจเต. เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เด•เต‹เดกเต Kotlin, minSdkVersion=23-เตฝ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚.

2. เด†เด•เตเดธเดธเต เด…เดจเตเดฎเดคเดฟเด•เตพ

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต Wi-Fi เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดฐเดตเดงเดฟ เด…เดจเตเดฎเดคเดฟเด•เตพ เดจเต‡เดŸเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด‡เดคเดจเตเดธเดฐเดฟเดšเตเดšเต เดชเตเดฐเดฎเดพเดฃเต€เด•เดฐเดฃเด‚, 8.0-เดจเต เดถเต‡เดทเด‚ OS เดชเดคเดฟเดชเตเดชเตเด•เดณเตเดณเตเดณ เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเดฟเตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดธเตเด•เดพเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเตเดŸเต† เด…เดตเดธเตเดฅ เด•เดพเดฃเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเตเดธเต เด•เต‚เดŸเดพเดคเต†, เด‰เดชเด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† Wi-Fi เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดจเตเดฑเต† เด…เดตเดธเตเดฅ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เต‹เตผเดกเดฟเดจเต‡เดฑเตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด†เด•เตโ€Œเดธเดธเต (เดเด•เดฆเต‡เดถเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ). เดชเดคเดฟเดชเตเดชเต 9.0 เดฎเตเดคเตฝ, เดจเดฟเด™เตเด™เตพ เดฐเดฃเตเดŸเดฟเดจเตเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต‹เดŸเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเดฃเด‚, เด•เต‚เดŸเดพเดคเต† เดฒเตŠเด•เตเด•เต‡เดทเตป เดธเต‡เดตเดจเด™เตเด™เตพ เด“เดฃเดพเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต‹เดŸเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เด…เดญเตเดฏเตผเดคเตเดฅเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚. เด‡เดคเต เด—เต‚เด—เดฟเดณเดฟเดจเตเดฑเต† เด‡เดทเตโ€ŒเดŸเดฎเดพเดฃเต†เดจเตเดจเตเด‚ เด…เดตเดจเต† เดšเดพเดฐเดชเตเดชเดฃเดฟ เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เด†เด—เตเดฐเดนเดฎเดฒเตเดฒเต†เดจเตเดจเตเด‚ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต‹เดŸเต เดงเตˆเดฐเตเดฏเดคเตเดคเต‹เดŸเต† เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต :)

เด…เดคเดฟเดจเดพเตฝ, 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 เดฎเตเดคเตฝ depricated เดŽเดจเตเดจเต เด…เดŸเดฏเดพเดณเดชเตเดชเต†เดŸเตเดคเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด“เดซเต. เดตเดดเดฟเด•เดพเดŸเตเดŸเดฟ เด…เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเต.

เดฎเตŠเดคเตเดคเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เดตเดธเตเดคเตเด•เตเด•เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดฒเดญเดฟเดšเตเดšเต เดธเตเด•เดพเตป เดซเดฒเด‚.

4. ScanResult เดจเต‹เด•เตเด•เดฟ เดจเดฟเดฌเดจเตเดงเดจเด•เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเด•

เดˆ เด•เตเดฒเดพเดธเดฟเดฒเต† เดšเดฟเดฒ เดซเต€เตฝเดกเตเด•เตพ เดจเต‹เด•เตเด•เดพเด‚, เด…เดต เดŽเดจเตเดคเดพเดฃเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต:

SSID โ€” เดธเตผเดตเต€เดธเต เดธเต†เดฑเตเดฑเต เดเดกเดจเตเดฑเดฟเดซเดฏเตผ เดŽเดจเตเดจเดคเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดจเตเดฑเต† เดชเต‡เดฐเดพเดฃเต

เดฌเดฟ.เดŽเดธเต.เดŽเดธเต.เด.เดกเดฟ. โ€“ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต‡เดตเดจ เดธเต†เดฑเตเดฑเต เดเดกเดจเตเดฑเดฟเดซเดฏเตผ โ€“ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด…เดกเดพเดชเตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต† MAC เดตเดฟเดฒเดพเดธเด‚ (Wi-Fi เดชเต‹เดฏเดฟเดจเตเดฑเต)

เดฒเต†เดตเตฝ - เดฒเดญเดฟเดšเตเดš เดธเดฟเด—เตเดจเตฝ เดถเด•เตเดคเดฟ เดธเต‚เดšเด•เด‚ [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 เด†เดฃเต. เดชเด•เตเดทเต‡, เด•เต‚เดŸเตเดคเตฝ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฑเดžเตเดžเดพเตฝ, เดชเต‹เดฏเดฟเดจเตเดฑเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดซเต‹เดฃเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดตเดฐเด™เตเด™เตพ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต, เดชเต‡เดฐเดฟเดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดจเตเดจเดฟเดจเต เด…เดŸเตเดคเตเดคเตเดณเตเดณ เด’เดฐเต เดจเดฎเตเดชเตผ เด†เดตเตƒเดคเตเดคเดฟเดฏเดฟเตฝ. เดšเดพเดจเดฒเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเดตเตเด‚ เด…เดจเตเดฌเดจเตเดง เด†เดตเตƒเดคเตเดคเดฟเด•เดณเตเด‚ เดฎเดพเดจเดฆเดฃเตเดกเดฎเดพเด•เตเด•เดฟเดฏเดคเต. เด…เดŸเตเดคเตเดคเตเดณเตเดณ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เดตเตเดฏเดคเตเดฏเดธเตเดค เด†เดตเตƒเดคเตเดคเดฟเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเตเดตเดดเดฟ เดชเดฐเดธเตเดชเดฐเด‚ เด‡เดŸเดชเต†เดŸเดพเดคเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดฐเด•เตเดทเต‡เดชเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดตเต‡เด—เดคเดฏเตเด‚ เด—เตเดฃเดจเดฟเดฒเดตเดพเดฐเดตเตเด‚ เดชเดฐเดธเตเดชเดฐเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดฐเต เด†เดตเตƒเดคเตเดคเดฟเดฏเดฟเดฒเดฒเตเดฒ, เดฎเดฑเดฟเดšเตเดšเต เด†เดตเตƒเดคเตเดคเดฟเด•เดณเตเดŸเต† เดชเดฐเดฟเดงเดฟเดฏเดฟเดฒเดพเดฃเต (เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดšเดพเดจเตฝเดตเดฟเดกเตเดคเตเดคเต), เดšเดพเดจเตฝ เดตเต€เดคเดฟ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดพเดฏเดคเต, เด…เดŸเตเดคเตเดคเตเดณเตเดณ (เด…เดŸเตเดคเตเดคเตเดณเตเดณ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด…เดตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต 3 เดชเต‹เดฒเตเด‚) เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เดชเดฐเดธเตเดชเดฐเด‚ เด‡เดŸเดชเต†เดŸเตเดจเตเดจเต. 2.4, 5 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_supplicant เด•เต‚เดŸเดพเดคเต† เด•เดดเดฟเดตเตเด•เตพ เดซเต€เตฝเดกเดฟเดฒเต† เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดซเดฒเด‚ เดธเตเด•เดพเตป เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดซเตเดฒเดพเด—เตเดธเต เดซเต€เตฝเดกเดฟเดจเตเดฑเต† เด’เดฐเต เดชเด•เตผเดชเตเดชเดพเดฃเต.

เดžเด™เตเด™เตพ เดธเตเดฅเดฟเดฐเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚. เดชเดฐเดพเตปเดคเต€เดธเดฟเดธเดฟเดจเตเดณเตเดณเดฟเดฒเต† เด˜เดŸเด•เด™เตเด™เดณเต† โ€œ-โ€œ เดšเดฟเดนเตเดจเดคเตเดคเดพเตฝ เดตเต‡เตผเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดจเตเดฑเต† เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดจเดฎเตเด•เตเด•เต เด†เดฆเตเดฏเด‚ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเด‚:

[WPA-PSK-TKIP+CCMP]
[WPA2-PSK-CCMP]

เด†เดฆเตเดฏเดคเตเดคเต† เด…เตผเดคเตเดฅเด‚ เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเดคเดฟเดจเต† เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เดฐเต€เดคเดฟ. เด…เดคเดพเดฏเดคเต, เด†เด•เตโ€Œเดธเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เดชเต‡เดฒเต‹เดกเต เดŽเด™เตเด™เดจเต† เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‰เดชเด•เดฐเดฃเดตเตเด‚ เด†เด•เตโ€Œเดธเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด‚ เดเดคเต เด•เตเดฐเดฎเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดพเดฃเต เดจเดŸเดคเตเดคเต‡เดฃเตเดŸเดคเต. เดˆ เดชเต‹เดธเตเดฑเตเดฑเต เดŽเดดเตเดคเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, เดเดฑเตเดฑเดตเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏ เด“เดชเตเดทเดจเตเด•เตพ WPA, WPA2 เดŽเดจเตเดจเดฟเดตเดฏเดพเดฃเต, เด…เดคเดฟเตฝ เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด“เดฐเต‹ เด‰เดชเด•เดฐเดฃเดตเตเด‚ เดจเต‡เดฐเดฟเดŸเตเดŸเต‹ เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเดตเดฏเดฟเดฒเต‚เดŸเต†เดฏเต‹ เด†เดฃเต. RADIUS เดธเต†เตผเดตเตผ (WPA-Enterprice) เด’เดฐเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดค เดšเดพเดจเดฒเดฟเดฒเต‚เดŸเต† เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดจเตฝเด•เตเดจเตเดจเต. เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเต€เดŸเตเดŸเดฟเดฒเต† เด†เด•เตเดธเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเต เดˆ เดธเตเด•เต€เด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เด’เดฐเต เด•เดฃเด•เตเดทเตป เดจเตฝเด•เตเดจเตเดจเต. เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดชเดคเดฟเดชเตเดชเตเด‚ เด†เดฆเตเดฏ เดชเดคเดฟเดชเตเดชเตเด‚ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดตเตเดฏเดคเตเดฏเดพเดธเด‚ เด‡เดคเดฟเดจเต เดถเด•เตเดคเดฎเดพเดฏ เด’เดฐเต เดธเตˆเดซเตผ เด‰เดฃเตเดŸเต เดŽเดจเตเดจเดคเดพเดฃเต: AES, เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค TKIP. เด•เต‚เดŸเตเดคเตฝ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดตเตเด‚ เดจเต‚เดคเดจเดตเตเดฎเดพเดฏ WPA3, เด•เตเดฐเดฎเต‡เดฃ เด…เดตเดคเดฐเดฟเดชเตเดชเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. เดธเตˆเดฆเตเดงเดพเดจเตเดคเดฟเด•เดฎเดพเดฏเดฟ, เดŽเดจเตเดฑเตผเดชเตเดฐเตˆเดธเต เดธเตŠเดฒเตเดฏเต‚เดทเตป CCKM (เดธเดฟเดธเตเด•เต‹ เดธเต†เตปเดŸเตเดฐเดฒเตˆเดธเตเดกเต เด•เต€ เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต) เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เด“เดชเตเดทเตป เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚, เดชเด•เตเดทเต‡ เดžเดพเตป เด…เดคเต เด’เดฐเดฟเด•เตเด•เดฒเตเด‚ เด•เดฃเตเดŸเดฟเดŸเตเดŸเดฟเดฒเตเดฒ.

MAC เดตเดฟเดฒเดพเดธเด‚ เดตเดดเดฟ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เด•เตเดธเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเต เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เดพเด‚. เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด•เดพเดฒเดนเดฐเดฃเดชเตเดชเต†เดŸเตเดŸ WEP เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เด†เด•เตเดธเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเต เดกเดพเดฑเตเดฑ เดจเตฝเด•เตเดจเตเดจเดคเต†เด™เตเด•เดฟเตฝ, เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด†เดงเดฟเด•เดพเดฐเดฟเด•เดค เด‡เดฒเตเดฒ (เด‡เดตเดฟเดŸเต† เดฐเดนเดธเตเดฏ เด•เต€ เดŽเตปเด•เตเดฐเดฟเดชเตเดทเตป เด•เต€เดฏเดพเดฃเต). เดžเด™เตเด™เตพ เด…เดคเตเดคเดฐเด‚ เด“เดชเตเดทเดจเตเด•เดณเต† OTHER เดŽเดจเตเดจเต เดคเดฐเด‚เดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.
เดฎเดฑเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฏเดพเดชเตโ€Œเดฑเตเดฑเต€เดตเต เดชเต‹เตผเดŸเตเดŸเตฝ เดกเดฟเดฑเตเดฑเด•เตเดทเตป เด‰เดณเตเดณ เดชเตŠเดคเต เดตเตˆเดซเตˆเดฏเดฟเตฝ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เด’เดฐเต เดฐเต€เดคเดฟเดฏเตเด‚ เด‰เดฃเตเดŸเต - เด’เดฐเต เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต‚เดŸเต†เดฏเตเดณเตเดณ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เด…เดญเตเดฏเตผเดคเตเดฅเดจ. เด…เดคเตเดคเดฐเด‚ เด†เด•เตเดธเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เดธเตเด•เดพเดจเดฑเดฟเดจเต เดคเตเดฑเดจเตเดจเดคเดพเดฏเดฟ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดจเตเดจเต (เด…เดต เดซเดฟเดธเดฟเด•เตเด•เตฝ เด•เดฃเด•เตเดทเดจเตเดฑเต† เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต). เด…เดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เตพ เด…เดตเดฏเต† OPEN เดŽเดจเตเดจเต เดคเดฐเด‚เดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดฎเต‚เดฒเตเดฏเด‚ เด‡เด™เตเด™เดจเต† เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚ เด•เต€ เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เด…เตฝเด—เต‹เดฐเดฟเดคเด‚. เด‡เดคเต เดฎเตเด•เดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดš เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เดฐเต€เดคเดฟเดฏเตเดŸเต† เด’เดฐเต เดชเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดพเดฃเต. เดŽเตปเด•เตเดฐเดฟเดชเตเดทเตป เด•เต€เด•เตพ เดŽเด™เตเด™เดจเต† เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดธเดพเดงเตเดฏเดฎเดพเดฏ เด“เดชเตเดทเดจเตเด•เตพ เดจเดฎเตเด•เตเด•เต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเด‚. เด‡เดŽเดชเดฟ - เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดš WPA-เดŽเดจเตเดฑเตผเดชเตเดฐเตˆเดธเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เดจเตฝเด•เดฟเดฏ เดชเตเดฐเดพเดฎเดพเดฃเต€เด•เดฐเดฃ เดกเดพเดฑเตเดฑ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเตป เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. SAE - เดจเต‚เดคเดจ WPA3-เตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เดฎเตƒเด—เดถเด•เตเดคเดฟเดฏเต† เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเดคเดฟเดฐเต‹เดงเดฟเด•เตเด•เตเด‚. PSK - เดเดฑเตเดฑเดตเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏ เด“เดชเตเดทเตป, เด’เดฐเต เดฐเดนเดธเตเดฏเดตเดพเด•เตเด•เต เดจเตฝเด•เตเด•เดฏเตเด‚ เด…เดคเต เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดค เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด•เตˆเดฎเดพเดฑเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. IEEE8021X - เด’เดฐเต เด…เดจเตเดคเดพเดฐเดพเดทเตเดŸเตเดฐ เดจเดฟเดฒเดตเดพเดฐเด‚ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต (WPA เด•เตเดŸเตเด‚เดฌเด‚ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต). เด“เดชเตเดชเตบ เดŽเดจเตเดจเต เดžเด™เตเด™เตพ เดคเดฐเด‚เดคเดฟเดฐเดฟเดšเตเดš เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเตเดณเตเดณ IEEE 802.11 เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเดฟเดจเตเดฑเต† เด’เดฐเต เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดฎเดพเดฃเต OWE (เด…เดตเดธเดฐเดตเดพเดฆ เดตเดฏเตผเดฒเต†เดธเต เดŽเตปเด•เตเดฐเดฟเดชเตเดทเตป). เด’เดฐเต เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเต‚เดŸเต† เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เดกเดพเดฑเตเดฑ เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† OWE เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเต. เด†เด•เตโ€Œเดธเดธเต เด•เต€เด•เตพ เด‡เดฒเตเดฒเดพเดคเตเดคเดชเตเดชเต‹เตพ เด’เดฐเต เด“เดชเตโ€Œเดทเดจเตเด‚ เดธเดพเดงเตเดฏเดฎเดพเดฃเต, เดจเดฎเตเด•เตเด•เต เดˆ เด“เดชเตโ€Œเดทเตป NONE เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดพเด‚.

เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต† เดชเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเดคเดพเดฃเต. เดŽเตปเด•เตเดฐเดฟเดชเตเดทเตป เดธเตเด•เต€เดฎเตเด•เตพ โ€” เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดค เดกเดพเดฑเตเดฑ เดชเดฐเดฟเดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดธเตˆเดซเตผ เดŽเดคเตเดฐ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฎเตเด•เตเด•เต เด“เดชเตเดทเดจเตเด•เตพ เดชเดŸเตเดŸเดฟเด•เดชเตเดชเต†เดŸเตเดคเตเดคเดพเด‚. WEP - เด’เดฐเต RC4 เดธเตเดŸเตเดฐเต€เด‚ เดธเตˆเดซเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เดฐเดนเดธเตเดฏ เด•เต€ เดŽเตปเด•เตเดฐเดฟเดชเตเดทเตป เด•เต€เดฏเดพเดฃเต, เด‡เดคเต เด†เดงเตเดจเดฟเด• เด•เตเดฐเดฟเดชเตเดฑเตเดฑเต‹เด—เตเดฐเดพเดซเดฟเดฏเตเดŸเต† เดฒเต‹เด•เดคเตเดคเต เด…เดธเตเดตเต€เด•เดพเดฐเตเดฏเดฎเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. TKIP - WPA-เดฏเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, CKIP - WPA2-เตฝ. TKIP+CKIP - เดชเดฟเดจเตเดจเต‹เด•เตเด• เด…เดจเตเดฏเต‹เดœเตเดฏเดคเดฏเตเด•เตเด•เดพเดฏเดฟ WPA, WPA2 เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เต เดถเต‡เดทเดฟเดฏเตเดณเตเดณ เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เดณเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเด‚.

เดฎเต‚เดจเตเดจเต เด˜เดŸเด•เด™เตเด™เตพเด•เตเด•เต เดชเด•เดฐเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดเด•เดพเดจเตเดคเดฎเดพเดฏ WEP เด…เดŸเดฏเดพเดณเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเด‚:

[WEP]

เดžเด™เตเด™เตพ เดฎเตเด•เดณเดฟเตฝ เดšเตผเดšเตเดš เดšเต†เดฏเตเดคเดคเตเดชเต‹เดฒเต†, เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒเดพเดคเตเดค เด•เต€เด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด…เตฝเด—เต‹เดฐเดฟเดคเด‚, เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ เดธเดฎเดพเดจเดฎเดพเดฏ เดŽเตปเด•เตเดฐเดฟเดชเตเดทเตป เดฐเต€เดคเดฟ เดŽเดจเตเดจเดฟเดต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เด‡เดคเต เดฎเดคเดฟเดฏเดพเด•เตเด‚.

เด‡เดชเตเดชเต‹เตพ เดˆ เดฌเตเดฐเดพเด•เตเด•เดฑเตเดฑเต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเด•:

[ESS]

เดˆ Wi-Fi เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดฎเต‹เดกเต เด…เดฅเดตเดพ เดตเตˆเดซเตˆ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดŸเต‹เดชเตเดชเต‹เดณเดœเดฟ. เดจเดฟเด™เตเด™เตพเด•เตเด•เต BSS (เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต‡เดตเดจ เดธเต†เดฑเตเดฑเต) เดฎเต‹เดกเต เดจเต‡เดฐเดฟเดŸเดพเด‚ - เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดค เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจ เด’เดฐเต เด†เด•เตโ€Œเดธเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเต เด‰เดณเตเดณเดชเตเดชเต‹เตพ. เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เดณเดฟเตฝ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚. เดšเดŸเตเดŸเด‚ เดชเต‹เดฒเต†, เดตเดฟเดตเดฟเดง เดฒเต‹เด•เตเด•เตฝ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด‰เดชเด•เดฐเดฃเด™เตเด™เดณเต† เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เด•เตเดธเดธเต เดชเต‹เดฏเดฟเดจเตเดฑเตเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เด…เดต เดตเดฟเดชเตเดฒเต€เด•เตƒเดค เดธเต‡เดตเดจ เดธเต†เดฑเตเดฑเตเด•เดณเตเดŸเต† เดญเดพเด—เดฎเดพเดฃเต - ESS. IBSSs (เดธเตเดตเดคเดจเตเดคเตเดฐ เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต‡เดตเดจ เดธเต†เดฑเตเดฑเตเด•เตพ) เดคเดฐเด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เด‰เดชเด•เดฐเดฃเด‚ เด’เดฐเต เดชเดฟเดฏเตผ-เดŸเต-เดชเดฟเดฏเตผ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดจเตเดฑเต† เดญเดพเด—เดฎเดพเดฃเต†เดจเตเดจเต.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต WPS เดชเดคเดพเด•เดฏเตเด‚ เด•เดพเดฃเดพเดตเตเดจเตเดจเดคเดพเดฃเต:

[WPS]

เด’เดฐเต Wi-Fi เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดจเตเดฑเต† เดธเต†เดฎเดฟ-เด“เดŸเตเดŸเต‹เดฎเดพเดฑเตเดฑเดฟเด•เต เด‡เดจเต€เดทเตเดฏเดฒเตˆเดธเต‡เดทเดจเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เด†เดฃเต WPS (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 เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต‚เดŸเต† เด…เดฒเดžเตเดžเตเดคเดฟเดฐเดฟเดฏเดพเดจเตเดณเตเดณ เดธเดจเตเดจเดฆเตเดงเดคเดฏเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เดจเตเดจเต เดฎเดพเดคเตเดฐเดฎเต‡ เดžเดพเตป เดชเดฑเดฏเต‚. เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฒเต‹เดœเดฟเด•เตเด•เดฟเดจเต เดชเตเดฑเดคเตเดคเต เดจเดฟเดจเตเดจเต เด’เดฐเต เดชเดพเดธเตโ€Œเดตเต‡เดกเต เดจเตฝเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ, เด•เตเดฒเดพเดธเต เดตเดดเดฟ เด•เดฃเด•เตเดทเตป เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚ android.net.wifi.WifiManager.

ะกะฟะฐัะธะฑะพ เดŽเด—เต‹เตผ เดชเตŠเดจเต‹เดฎเดฑเต‡เดตเต เดตเดฟเดฒเดฏเต‡เดฑเดฟเดฏ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เดฒเตเด•เตพเด•เตเด•เดพเดฏเดฟ.

เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเด•เดฏเต‹ เดคเดฟเดฐเตเดคเตเดคเตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเดฃเดฎเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด•เดฐเตเดคเตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเตฝ เดŽเดดเตเดคเตเด• :)

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•