Wi-Fi เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจธเฉฐเจ–เฉ‡เจช เจฐเฉ‚เจชเฅค เจฌเจฟเจจเจพเจ‚ เจธเฉเฉฑเจœเฉ‡ Android เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš Wi-Fi เจจเฉ‹เจกเจพเจ‚ เจฌเจพเจฐเฉ‡ เจกเฉ‡เจŸเจพ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจนเฉˆ

เจ‡เฉฑเจ• เจฆเจฟเจจ เจฎเฉˆเจจเฉ‚เฉฐ Android เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจคเฉ‹เจ‚ Wi-Fi เจจเฉˆเฉฑเจŸเจตเจฐเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจธเจ•เฉˆเจจ เจ•เจฐเจจ เจ…เจคเฉ‡ เจเจ•เจธเฉˆเจธ เจชเฉเจ†เจ‡เฉฐเจŸเจพเจ‚ เจฌเจพเจฐเฉ‡ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจกเฉ‡เจŸเจพ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจธเฉ€เฅค

เจ‡เฉฑเจฅเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ•เจˆ เจฎเฉเจธเจผเจ•เจฒเจพเจ‚ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเจฟเจ†: เจฌเฉฐเจฆเฅค เจเจ‚เจกเจฐเจพเจ‡เจก เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจ•เจˆ เจตเจฐเจฃเจฟเจค เจ•เจฒเจพเจธเจพเจ‚ เจฌเจฐเจคเจฐเจซเจผ เจนเฉ‹ เจ—เจˆเจ†เจ‚ (API เจชเฉฑเจงเจฐ > 26), เจœเฉ‹ เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจชเฉเจฐเจคเฉ€เจฌเจฟเฉฐเจฌเจฟเจค เจจเจนเฉ€เจ‚ เจธเจจ; เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจตเจฟเฉฑเจš เจ•เฉเจ เจšเฉ€เจœเจผเจพเจ‚ เจฆเจพ เจตเจฐเจฃเจจ เจ˜เฉฑเจŸ เจนเฉˆ (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ•เจฒเจพเจธ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจ–เฉ‡เจคเจฐ เจธเจ•เฉˆเจจ เจจเจคเฉ€เจœเจพ เจฒเจฟเจ–เจฃ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจฒเจ—เจญเจ— เจ•เฉเจ เจจเจนเฉ€เจ‚ เจฆเฉฑเจธเจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจกเฉ‡เจŸเจพ เจธเจผเจพเจฎเจฒ เจนเจจ). เจคเฉ€เจœเฉ€ เจฎเฉเจธเจผเจ•เจฒ เจ‡เจธ เจคเฉฑเจฅ เจตเจฟเฉฑเจš เจนเฉ‹ เจธเจ•เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจชเจนเจฟเจฒเฉ€ เจตเจพเจฐ เจตเจพเจˆ-เจซเจพเจˆ เจฆเฉ‡ เจจเฉ‡เฉœเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเฉ‹, เจฅเจฟเจŠเจฐเฉ€ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจ…เจคเฉ‡ เจฒเฉ‹เจ•เจฒเจนเฉ‹เจธเจŸ เจฆเฉเจ†เจฐเจพ เจฐเจพเจŠเจŸเจฐ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ•เจˆ เจธเฉฐเจ–เฉ‡เจช เจธเจผเจฌเจฆเจพเจ‚ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃเจพ เจชเฉˆเจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจฎเจเจฃ เจฏเฉ‹เจ— เจœเจพเจชเจฆเฉ‡ เจนเจจเฅค เจชเจฐ เจ‡เจน เจธเจชเฉฑเจธเจผเจŸ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจธเจ•เจฆเจพ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจœเฉ‹เฉœเจฟเจ† เจœเจพเจตเฉ‡ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพเจตเฉ‡ (เจจเจฟเจฐเจฃเจพ เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจนเฉˆ เจ…เจคเฉ‡ เจชเจฟเจ›เจฒเฉ‡ เจ…เจจเฉเจญเจต 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ)เฅค

เจ‡เจน เจฒเฉ‡เจ– เจšเจฐเจšเจพ เจ•เจฐเจฆเจพ เจนเฉˆ เจ•เจฟ เจเจจเจกเฉ€เจ•เฉ‡, เจนเฉˆเจ• เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจเจ‚เจกเจฐเฉŒเจ‡เจก เจ•เฉ‹เจก เจคเฉ‹เจ‚ เจตเจพเจˆ-เจซเจพเจˆ เจตเจพเจคเจพเจตเจฐเจฃ เจฌเจพเจฐเฉ‡ เจตเจฟเจ†เจชเจ• เจกเฉ‡เจŸเจพ เจ•เจฟเจตเฉ‡เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจนเฉˆ, เจชเจฐ เจธเจฟเจฐเจซ เจเจ‚เจกเจฐเฉŒเจ‡เจก API เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเจฎเจเจฃเจพ เจนเฉˆเฅค

เจ†เจ“ เจฆเฉ‡เจฐเฉ€ เจจเจพ เจ•เจฐเฉ€เจ เจ…เจคเฉ‡ เจ•เฉ‹เจก เจฒเจฟเจ–เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจเฅค

1. เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ“

เจ‡เจน เจจเฉ‹เจŸ เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจนเฉˆ เจœเจฟเจจเฉเจนเจพเจ‚ เจจเฉ‡ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจตเจพเจฐ เจ‡เฉฑเจ• Android เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ‡เจ† เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจ†เจˆเจŸเจฎ เจฆเฉ‡ เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจ›เฉฑเจก เจฆเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเจพ เจ•เฉ‹เจก เจ•เฉ‹เจŸเจฒเจฟเจจ, 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 เจคเฉ‹เจ‚ เจตเจพเจ‚เจเฉ‡ เจตเจœเฉ‹เจ‚ เจšเจฟเฉฐเจจเฉเจนเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจชเจฐ เจฌเฉฐเจฆ เจนเฉˆเฅค เจฆเฉ€ เจ…เจ—เจตเจพเจˆ เจ‡เจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจธเฉเจเจพเจ… เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจ•เฉเฉฑเจฒ เจฎเจฟเจฒเจพ เจ•เฉ‡, เจธเจพเจจเฉ‚เฉฐ เจตเจธเจคเฉ‚เจ†เจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ‚เจšเฉ€ เจฎเจฟเจฒเฉ€ เจนเฉˆ เจธเจ•เฉˆเจจ เจจเจคเฉ€เจœเจพ.

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 เจนเฉˆเฅค เจชเจฐ, เจตเจงเฉ‡เจฐเฉ‡ เจธเจŸเฉ€เจ• เจนเฉ‹เจฃ เจฒเจˆ, เจฌเจฟเฉฐเจฆเฉ‚ เจจเจพเจฎ เจฆเฉ‡ เจจเฉ‡เฉœเฉ‡ เจ‡เฉฑเจ• เจจเฉฐเจฌเจฐ เจฆเฉ€ เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ 'เจคเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจซเจผเฉ‹เจจ เจตเจฟเฉฑเจš เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจšเฉˆเจจเจฒเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ† เจ…เจคเฉ‡ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ เจฎเจฟเจ†เจฐเฉ€. เจ…เจœเจฟเจนเจพ เจ‡เจธ เจฒเจˆ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจคเจพเจ‚ เจ•เจฟ เจจเฉ‡เฉœเจฒเฉ‡ เจฌเจฟเฉฐเจฆเฉ‚ เจตเฉฑเจ–-เจตเฉฑเจ– เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจฆเจ–เจฒ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเฉ‡ เจ…เจคเฉ‡ เจชเฉเจฐเจธเจพเจฐเจฃ เจฆเฉ€ เจ—เจคเฉ€ เจ…เจคเฉ‡ เจ—เฉเจฃเจตเฉฑเจคเจพ เจจเฉ‚เฉฐ เจ†เจชเจธ เจตเจฟเฉฑเจš เจจเจนเฉ€เจ‚ เจ˜เจŸเจพเจ‰เจ‚เจฆเฉ‡เฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจชเฉเจ†เจ‡เฉฐเจŸ เจ‡เฉฑเจ• เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ 'เจคเฉ‡ เจจเจนเฉ€เจ‚, เจฌเจฒเจ•เจฟ เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ เจฆเฉ€ เจ‡เฉฑเจ• เจธเฉ€เจฎเจพ (เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจšเฉˆเจจเจฒ เจฆเฉ€ เจšเฉŒเฉœเจพเจˆ), เจšเฉˆเจจเจฒ เจฆเฉ€ เจšเฉŒเฉœเจพเจˆ เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจจเฅค เจ…เจฐเจฅเจพเจค, เจจเฉ‡เฉœเฉ‡ เจฆเฉ‡ (เจ…เจคเฉ‡ เจจเจพ เจธเจฟเจฐเจซ เจ†เจธ เจชเจพเจธ, เจธเจ—เฉ‹เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจคเฉ‹เจ‚ 3) เจšเฉˆเจจเจฒเจพเจ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจชเฉเจ†เจ‡เฉฐเจŸ เจ‡เจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจฆเจ–เจฒ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจเฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจน เจธเจงเจพเจฐเจจ เจ•เฉ‹เจก เจฒเจพเจญเจฆเจพเจ‡เจ• เจฒเฉฑเจ— เจธเจ•เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ 2.4 เจ…เจคเฉ‡ 5 เจ—เฉ€เจ—เจพเจนเจฐเจŸเจœเจผ เจฆเฉ€ เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ เจตเจพเจฒเฉ‡ เจชเฉเจ†เจ‡เฉฐเจŸเจพเจ‚ เจฒเจˆ เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ เจฎเฉเฉฑเจฒ เจคเฉ‹เจ‚ เจšเฉˆเจจเจฒ เจจเฉฐเจฌเจฐ เจฆเฉ€ เจ—เจฃเจจเจพ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ:


    /* ะฟะพ ั‡ะฐัั‚ะพั‚ะต ะพะฟั€ะตะดะตะปัะตะผ ะฝะพะผะตั€ ะบะฐะฝะฐะปะฐ */
    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, เจœเฉ‹ เจ•เจฟ เจตเจงเฉ‡เจฐเฉ‡ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจ…เจคเฉ‡ เจ‰เฉฑเจจเจค เจนเฉˆ, เจจเฉ‚เฉฐ เจตเฉ€ เจนเฉŒเจฒเฉ€-เจนเฉŒเจฒเฉ€ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจธเจฟเจงเจพเจ‚เจคเจ• เจคเฉŒเจฐ 'เจคเฉ‡, เจเจ‚เจŸเจฐเจชเฉเจฐเจพเจˆเจธ เจนเฉฑเจฒ เจธเฉ€เจธเฉ€เจ•เฉ‡เจเจฎ (เจธเจฟเจธเจ•เฉ‹ เจธเฉˆเจ‚เจŸเจฐเจฒเจพเจˆเจœเจผเจก เจ•เฉ€ เจฎเฉˆเจจเฉ‡เจœเจฎเฉˆเจ‚เจŸ) เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจช เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจฎเฉˆเจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจ•เจฆเฉ‡ เจจเจนเฉ€เจ‚ เจฆเฉ‡เจ–เจฟเจ† เจนเฉˆเฅค

เจเจ•เจธเฉˆเจธ เจชเฉเจ†เจ‡เฉฐเจŸ เจจเฉ‚เฉฐ 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 เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจฒเจˆ เจฐเฉ‚เจŸ เจ…เจงเจฟเจ•เจพเจฐเจพเจ‚ เจ…เจคเฉ‡ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ เจฆเฉเจ†เจฐเจพ เจฐเจฎเจœ เจ•เจฐเจจ เจฆเฉ€ เจ‡เฉฑเจ›เจพ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจคเจฐเจ• เจฒเจˆ เจฌเจพเจนเจฐเฉ‹เจ‚ เจชเจพเจธเจตเจฐเจก เจฆเจพเจ–เจฒ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจ•เจฒเจพเจธ เจฐเจพเจนเฉ€เจ‚ เจฌเจฃเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ android.net.wifi.WifiManager.

ะกะฟะฐัะธะฑะพ เจˆเจ—เฉ‹เจฐ เจชเฉ‹เจจเฉ‹เจฎเจพเจฐเฉ‡เจต เจ•เฉ€เจฎเจคเฉ€ เจœเฉ‹เฉœเจพเจ‚ เจฒเจˆเฅค

เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจธเฉ‹เจšเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ•เฉเจ เจœเฉ‹เฉœเจจ เจœเจพเจ‚ เจ เฉ€เจ• เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚ เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ‹ :)

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹