рд╡рд╛рдИ-рдлрд╛рдИ рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕рдВрдХреНрд╖рд┐рдкреНрддрд╛рдХреНрд╖рд░ред рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╡рд╛рдИ-рдлрд╛рдИ рдиреЛрдбреНрд╕ рдкрд░ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдкреНрд░рдлреБрд▓реНрд▓рд┐рдд рди рд╣реЛрдВ

рдПрдХ рдмрд╛рд░ рдореБрдЭреЗ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реЗ рд╡рд╛рдИ-рдлрд╛рдИ рдиреЗрдЯрд╡рд░реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдФрд░ рдПрдХреНрд╕реЗрд╕ рдкреЙрдЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЧрдгрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдпрд╣рд╛рдВ рдореБрдЭреЗ рдХрдИ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛: рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдСрдл-рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ, рд╡рд░реНрдгрд┐рдд рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрдИ рдкрджрд╛рд╡рдирдд рд╣реЛ рдЧрдП (рдПрдкреАрдЖрдИ рд╕реНрддрд░> 26), рдЬреЛ рдЗрд╕рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реБрдЖ; рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдиреНрдпреВрдирддрдо рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦрди рдХреЗ рд╕рдордп ScanResult рд╡рд░реНрдЧ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)ред рддреАрд╕рд░реА рдХрдард┐рдирд╛рдИ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рд╡рд╛рдИ-рдлрд╛рдИ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реА рдирд┐рдХрдЯрддрд╛ рдкрд░, рдЬреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд░рд╛рдЙрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЖрдкрдХреЛ рдХрдИ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рддрд░реАрдХреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд▓рдЧрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХрд░рдирд╛ рд╣реИ (рдирд┐рд░реНрдгрдп рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ)ред

рдпрд╣ рд▓реЗрдЦ рдПрдирдбреАрдХреЗ рдХреЗ рдмрд┐рдирд╛ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЛрдб рд╕реЗ рд╡рд╛рдИ-рдлрд╛рдИ рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рд╡реНрдпрд╛рдкрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИ, рд╣реИрдХ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рд╕рдордЭреЗрдВ рдХрд┐ рдЙрдирдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХрд░реЗрдВред

рд╣рдо рдкреБрд▓ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред

1. рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдБ


рдиреЛрдЯ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдЖрдЗрдЯрдо рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдХреЛрдЯрд▓рд┐рди рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, minSdkVersion = 23ред

2. рдкрд╣реБрдБрдЪ рдЕрдиреБрдорддрд┐рдпрд╛рдБ


рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╡рд╛рдИ-рдлрд╛рдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдХрдИ рдЕрдиреБрдорддрд┐рдпрд╛рдВ рд▓реЗрдиреА рд╣реЛрдВрдЧреАред рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, 8.0 рдХреЗ рдмрд╛рдж рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╡рд╛рдИ-рдлрд╛рдИ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рдЕрдиреБрдорд╛рдирд┐рдд рдпрд╛ рд╕рдЯреАрдХ) рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 9.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрди рдФрд░ рдЙрд╕ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕рд╛рде рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реНрдерд╛рди рд╕реЗрд╡рд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рднреВрд▓ рди рдХрд░реЗрдВ рдХрд┐ рдпрд╣ Google рдХреА рдПрдХ рд╕рдирдХ рд╣реИ, рдФрд░ рдЙрд╕рдХреА рдЬрд╛рд╕реВрд╕реА рдХрд░рдиреЗ рдХреА рд╣рдорд╛рд░реА рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ :)

рдХреБрд▓, 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 рд╡рд┐рдзрд┐ рдПрдкреАрдЖрдИ рд╕рдВрд╕реНрдХрд░рдг 28 рд╕реЗ рд╣рдЯрд╛рдП рдЧрдП рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдмрдВрджред рдЧрд╛рдЗрдб рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред

рдХреБрд▓ рдореЗрдВ, рд╣рдореЗрдВ ScanResult рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓реАред

4. рд╣рдо ScanResult рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рд╢рд░реНрддреЛрдВ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ


рдЖрдЗрдП рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ:

SSID - рд╕реЗрд╡рд╛ рд╕реЗрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдирд╛рдо рд╣реИред

BSSID - рдореВрд▓ рд╕реЗрд╡рд╛ рд╕реЗрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ - рдиреЗрдЯрд╡рд░реНрдХ рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рдореИрдХ рдкрддрд╛ (рд╡рд╛рдИ-рдлрд╛рдИ рдмрд┐рдВрджреБ)

рд╕реНрддрд░ - рдкреНрд░рд╛рдкреНрдд рд╕рд┐рдЧреНрдирд▓ рд╕реНрдЯреНрд░реЗрдВрде рдЗрдВрдбрд┐рдХреЗрдЯрд░ [dBm (рд░реВрд╕реА dBm) - рдбреЗрд╕рд┐рдмрд▓, рд╕рдВрджрд░реНрдн рд╢рдХреНрддрд┐ 1 mWред] - рдкреНрд░рд╛рдкреНрдд рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕реНрддрд░ рдХрд╛ рд╕рдВрдХреЗрддрдХред рдпрд╣ 0 рд╕реЗ -100 рддрдХ рдХрд╛ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ, 0 рд╕реЗ рджреВрд░, рдЕрдзрд┐рдХ рд╕рд┐рдЧреНрдирд▓ рдкрд╛рд╡рд░ рд╡рд╛рдИ-рдлрд╛рдИ рдмрд┐рдВрджреБ рд╕реЗ рдЖрдкрдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ред рдпрд╣рд╛рдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ Android рд╡рд░реНрдЧ WifiManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдЖрдк рдЕрдкрдиреЗ рдЪреБрдиреЗ рд╣реБрдП рдЪрд░рдг рдХреЗ рд╕рд╛рде рдЙрддреНрдХреГрд╖реНрдЯ рд╕реЗ рднрдпрд╛рдирдХ рдкреИрдорд╛рдиреЗ рдкрд░ рд╕рд┐рдЧреНрдирд▓ рд╕реНрддрд░ рдХреЛ рдХреИрд▓рд┐рдмреНрд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager val numberOfLevels = 5 val level = WifiManager.calculateSignalLevel(level, numberOfLevels) 

рдЖрд╡реГрддреНрддрд┐ - рд╡рд╛рдИ-рдлрд╛рдИ рдмрд┐рдВрджреБ рдХреА рдЖрд╡реГрддреНрддрд┐ [рд╣рд░реНрдЯреНрдЬ]ред рдЖрд╡реГрддреНрддрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рддрдерд╛рдХрдерд┐рдд рдЪреИрдирд▓ рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреА рдЕрдкрдиреА рдХрд╛рд░реНрдп рд╕реНрд╡рдЪреНрдЫрддрд╛ рд╣реИред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╡рд╛рдИ-рдлрд╛рдИ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд░реЗрдВрдЬ 2.4 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬрд╝ рд╣реИред рд▓реЗрдХрд┐рди, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд┐рдВрджреБ рдЖрдкрдХреЗ рдлреЛрди рдкрд░ рд╕реВрдЪрдирд╛ рдХреЛ рдирд╛рдорд╛рдВрдХрд┐рдд рдЖрд╡реГрддреНрддрд┐ рдХреЗ рдХрд░реАрдм рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЪреИрдирд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдорд╛рди рдорд╛рдирдХреАрдХреГрдд рд╣реИрдВ ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкрд╛рд╕ рдХреЗ рдмрд┐рдВрджреБ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВ, рдЬрд┐рд╕рд╕реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рди рд╣реЛ рдФрд░ рд╕рдВрдЪрд░рдг рдХреА рдЧрддрд┐ рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрдо рди рдХрд░реЗрдВред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЕрдВрдХ рдПрдХ рд╣реА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрд╡реГрддреНрддрд┐ рд░реЗрдВрдЬ (рдЪреИрдирд▓рд╡рд┐рдж рдкреИрд░рд╛рдореАрдЯрд░ ) рдкрд░, рдЪреИрдирд▓ рдЪреМрдбрд╝рд╛рдИ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдкрдбрд╝реЛрд╕реА рдЪреИрдирд▓реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБ (рдФрд░ рди рдХреЗрд╡рд▓ рдкрдбрд╝реЛрд╕реА рдЪреИрдирд▓реЛрдВ рдкрд░, рдмрд▓реНрдХрд┐ рдЦреБрдж рд╕реЗ 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) рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдЪреИрдирд▓ рдкрд░ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдкрдХреЗ рдШрд░ рдкрд░, рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рд╕рд┐рдлрд░ рдореЗрдВ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдкрд╣рд▓реЗ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░: рдЕрд╕реБрд░рдХреНрд╖рд┐рдд TKIP рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдИрдПрд╕ред WPA3, рдЬреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдФрд░ рдЙрдиреНрдирдд рд╣реИ, рдХреЛ рднреА рдзреАрд░реЗ-рдзреАрд░реЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, CCKM (Cisco Centralized Key Managment) рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдореИрдХ рдкрддреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╛, рдпрджрд┐ рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рдкреБрд░рд╛рдиреЗ WEP рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╕реНрддреБрддрдГ рдХреЛрдИ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдирд╣реАрдВ рд╣реИ (рдпрд╣рд╛рдВ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рд╣реИ)ред рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЫрд┐рдкреЗ рд╣реБрдП рдХреИрдкреНрдЯрд┐рд╡ рдкреЛрд░реНрдЯрд▓ рдбрд┐рдЯреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд╛рдИ-рдлрд╛рдИ рдореЗрдВ рдПрдХ рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рднреА рд╣реИ - рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзред рдРрд╕реЗ рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рд╕реНрдХреИрдирд░ рдХреА рддрд░рд╣ рдЦреБрд▓реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ (рдЬреЛ рдХрд┐ рд╡реЗ рднреМрддрд┐рдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╣реИрдВ)ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЙрдиреНрд╣реЗрдВ OPEN рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред

рджреВрд╕рд░рд╛ рдорд╛рди рдХреБрдВрдЬреА рдкреНрд░рдмрдВрдзрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рдирд┐рдордп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред EAP - рдЙрдкрд░реНрдпреБрдХреНрдд WPA-Enterprice рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдбреЗрдЯрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред SAE - рдЙрдиреНрдирдд WPA3 рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╣рд▓рдЪрд▓ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рд░реЛрдзреА рд╣реИред рдкреАрдПрд╕рдХреЗ рд╕рдмрд╕реЗ рдЖрдо рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЗрд╕рдореЗрдВ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд░реВрдк рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред IEEE8021X - рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдп рдорд╛рдирдХ (рдбрдмреНрд▓реНрдпреВрдкреАрдП рдкрд░рд┐рд╡рд╛рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдХреЗ рдЕрдиреБрд╕рд╛рд░ред OWE (рдСрдкрд░реНрдЪреНрдпреБрдирд┐рд╕реНрдЯрд┐рдХ рд╡рд╛рдпрд░рд▓реЗрд╕ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди) IEEE 802.11 рдорд╛рдирдХ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ, рдЙрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ OPEN рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдерд╛ред OWE рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдХреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдПрдХреНрд╕реЗрд╕ рдХреБрдВрдЬреА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рддреЛ рдПрдХ рд╡реЗрд░рд┐рдПрдВрдЯ рднреА рд╕рдВрднрд╡ рд╣реИ; рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдХреЛрдИ рднреА рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИред

рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рддрдерд╛рдХрдерд┐рдд рд╣реИ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╡рд┐рдзрд┐ (рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╕реНрдХреАрдо) - рд╕рдВрдЪрд░рд┐рдд рдбреЗрдЯрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВред WEP - RC4 рд╕реНрдЯреНрд░реАрдо рд╕рд┐рдлрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдПрдХ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдзреБрдирд┐рдХ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯреАрдХреЗрдЖрдИрдкреА - рдбрдмреНрд▓реНрдпреВрдкреАрдП, рд╕реАрдХреЗрдЖрдИрдкреА - рдбрдмреНрд▓реНрдпреВрдкреАрдП 2 рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред TKIP + CKIP - рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП WPA рдФрд░ WPA2 рдореЗрдВ рд╕рдХреНрд╖рдо рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рддреАрди рддрддреНрд╡реЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдПрдХ рдЕрдХреЗрд▓рд╛ WEP рдЪрд┐рд╣реНрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 [WEP] 

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ, рдпрд╣ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдХрд┐ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рд╡рд┐рдзрд┐, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╣реИред

рдЕрдм рдЗрд╕ рдХреЛрд╖реНрдардХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 [ESS] 

рдпрд╣ рд╡рд╛рдИ-рдлрд╛рдИ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдпрд╛ рд╡рд╛рдИ-рдлрд╛рдИ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдЯреЛрдкреЛрд▓реЙрдЬреА рд╣реИ ред рдЖрдк рдмреАрдПрд╕рдПрд╕ (рдмреЗрд╕рд┐рдХ рд╕рд░реНрд╡рд┐рд╕ рд╕реЗрдЯ) рдореЛрдб рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЬрдм рдПрдХ рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯреЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБрдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реЗрд╡рд╛ рд╕рдореВрд╣ - рдИрдПрд╕рдПрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрддреЗ рд╣реИрдВред IBSS рдХрд╛ рдкреНрд░рдХрд╛рд░ (рдЗрдВрдбрд┐рдкреЗрдВрдбреЗрдВрдЯ рдмреЗрд╕рд┐рдХ рд╕рд░реНрд╡рд┐рд╕ рд╕реЗрдЯ) рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рдкреАрдпрд░-рдЯреВ-рдкреАрдпрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

WPS рдзреНрд╡рдЬ рднреА рдЧрд┐рд░ рд╕рдХрддрд╛ рд╣реИ:

 [WPS] 

WPS (рд╡рд╛рдИ-рдлрд╛рдИ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╕реЗрдЯрдЕрдк) - рд╡рд╛рдИ-рдлрд╛рдИ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЕрд░реНрдз-рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рддреЛ 8-рд╡рд░реНрдг рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд░рд╛рдЙрдЯрд░ рдкрд░ рдПрдХ рдмрдЯрди рджрдмрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреА рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИ рдФрд░ рдЗрд╕ рдЭрдВрдбреЗ рдХреЛ рдЖрдкрдХреЗ рдкрд╣реБрдВрдЪ рдмрд┐рдВрджреБ рдХреЗ рдирд╛рдо рдХреЗ рд╡рд┐рдкрд░реАрдд рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдкрд░ рдЬрд╛рдиреЗ рдФрд░ WPS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЕрдХреНрд╕рд░ 8-рдЕрдВрдХреЛрдВ рд╡рд╛рд▓реЗ рдкрд┐рди рдХреЛ рдореИрдХ рдкрддреЗ рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рджреВрд░ рдХреЗ рд╕рдордп рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рдЕрдпреЛрдЧреНрдп рд╡реНрдпрдХреНрддрд┐ рдлрд╛рдпрджрд╛ рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИред

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 рд╡рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореВрд▓реНрдпрд╡рд╛рди рдЬреЛрдбрд╝реЛ рдХреЗ рд▓рд┐рдП Egor Ponomarev рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред

рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ :)

Source: https://habr.com/ru/post/hi467765/


All Articles