เดเดฐเต เดฆเดฟเดตเดธเด เดเดจเดฟเดเตเดเต เดเตปเดกเตเดฐเตเดฏเดฟเดกเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดซเต เดจเตเดฑเตเดฑเตโเดตเตผเดเตเดเตเดเตพ เดธเตโเดเดพเตป เดเตเดฏเตเดฏเดพเดจเตเด เดเดเตโเดธเดธเต เดชเตเดฏเดฟเดจเตเดฑเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดตเดฟเดถเดฆเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดจเตเดเดพเดจเตเด เดเดตเดถเตเดฏเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต.
เดเดตเดฟเดเต เดเดเตเดเตพเดเตเดเต เดจเดฟเดฐเดตเดงเดฟ เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดเตพ เดจเตเดฐเดฟเดเตเดฃเตเดเดฟ เดตเดจเตเดจเต:
เดเตปโเดกเดฟโเดเต เดเตเดเดพเดคเต เดเตปเดกเตเดฐเตเดฏเดฟเดกเต เดเตเดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดซเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดธเดฎเดเตเดฐเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดเดเตเดเดจเต เดจเตเดเดพเดฎเตเดจเตเดจเตเด เดนเดพเดเตเดเต เดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเตเด เดเดจเตเดจเดพเตฝ เดเตปเดกเตเดฐเตเดฏเดฟเดกเต เดเดชเดฟเด เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเดพเดคเตเดฐเด เดเดเตเดเดจเต เดตเตเดฏเดพเดเตเดฏเดพเดจเดฟเดเตเดเดพเดฎเตเดจเตเดจเตเด เด เดฒเตเดเดจเด เดเตผเดเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดจเดฎเตเดเตเดเต เดคเดพเดฎเดธเดฟเดเตเดเดพเดคเต เดเตเดกเต เดเดดเตเดคเดพเตป เดคเตเดเดเตเดเดพเด.
1. เดเดฐเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเตเด
เด เดเตเดฑเดฟเดชเตเดชเต เดเดจเตเดจเดฟเดฒเดงเดฟเดเด เดคเดตเดฃ Android เดชเตเดฐเตเดเดเตโเดฑเตเดฑเต เดธเตเดทเตโเดเดฟเดเตเดเดตเดฐเต เดเดฆเตเดฆเตเดถเดฟเดเตเดเตเดณเตเดณเดคเดพเดฃเต, เด เดคเดฟเดจเดพเตฝ เด เดเดจเดคเตเดคเดฟเดจเตเดฑเต เดตเดฟเดถเดฆเดพเดเดถเดเตเดเตพ เดเดเตเดเตพ เดเดดเดฟเดตเดพเดเตเดเตเดจเตเดจเต. เดเตเดตเดเตเดฏเตเดณเตเดณ เดเตเดกเต Kotlin, 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 เดฎเตเดคเตฝ 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 เดเดฃเต. เดชเดเตเดทเต, เดเตเดเตเดคเตฝ เดเตเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฑเดเตเดเดพเตฝ, เดชเตเดฏเดฟเดจเตเดฑเต เดจเดฟเดเตเดเดณเตเดเต เดซเตเดฃเดฟเดฒเตเดเตเดเต เดตเดฟเดตเดฐเดเตเดเตพ เดเตเดฎเดพเดฑเตเดจเตเดจเต, เดชเตเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดจเตเดจเดฟเดจเต เด
เดเตเดคเตเดคเตเดณเตเดณ เดเดฐเต เดจเดฎเตเดชเตผ เดเดตเตเดคเตเดคเดฟเดฏเดฟเตฝ. เดเดพเดจเดฒเตเดเดณเตเดเต เดเดฃเตเดฃเดตเตเด เด
เดจเตเดฌเดจเตเดง เดเดตเตเดคเตเดคเดฟเดเดณเตเด
/* ะฟะพ ัะฐััะพัะต ะพะฟัะตะดะตะปัะตะผ ะฝะพะผะตั ะบะฐะฝะฐะปะฐ */
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, เดเตเดฐเดฎเตเดฃ เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต. เดธเตเดฆเตเดงเดพเดจเตเดคเดฟเดเดฎเดพเดฏเดฟ, เดเดจเตเดฑเตผเดชเตเดฐเตเดธเต เดธเตเดฒเตเดฏเตเดทเตป 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 เดตเดพเดฏเดฟเดเตเดเดพเตป เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเตเดเต เด
เดฒเดเตเดเตเดคเดฟเดฐเดฟเดฏเดพเดจเตเดณเตเดณ เดธเดจเตเดจเดฆเตเดงเดคเดฏเตเด เดเดตเดถเตเดฏเดฎเดพเดฃเตเดจเตเดจเต เดฎเดพเดคเตเดฐเดฎเต เดเดพเตป เดชเดฑเดฏเต. เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฒเตเดเดฟเดเตเดเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดจเดฟเดจเตเดจเต เดเดฐเต เดชเดพเดธเตโเดตเตเดกเต เดจเตฝเดเดฃเดฎเตเดเตเดเดฟเตฝ, เดเตเดฒเดพเดธเต เดตเดดเดฟ เดเดฃเดเตเดทเตป เดเดฃเตเดเดพเดเตเดเดพเด
ะกะฟะฐัะธะฑะพ
เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตเดเดฏเต เดคเดฟเดฐเตเดคเตเดคเตเดเดฏเต เดเตเดฏเตเดฏเดฃเดฎเตเดจเตเดจเต เดจเดฟเดเตเดเตพ เดเดฐเตเดคเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เด
เดญเดฟเดชเตเดฐเดพเดฏเดเตเดเดณเดฟเตฝ เดเดดเตเดคเตเด :)
เด
เดตเดฒเดเดฌเด: www.habr.com