Wi-Fi āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ°ā§‚āĻĒāĨ¤ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§‡āĻĄ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻžāĻ¨ā§‡ āĻ“āĻ¯āĻŧāĻžāĻ‡-āĻĢāĻžāĻ‡ āĻ¨ā§‹āĻĄāĻ—ā§āĻ˛āĻŋ āĻĢā§āĻ˛ā§‡ āĻ¨āĻž āĻ—āĻŋāĻ¯āĻŧā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻŦā§‡āĻ¨

āĻāĻ•āĻĻāĻŋāĻ¨ āĻ†āĻŽāĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§‡āĻĄ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻĨā§‡āĻ•ā§‡ Wi-Fi āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻ—ā§āĻ˛āĻŋ āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻļāĻĻ āĻĄā§‡āĻŸāĻž āĻĒā§‡āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽā§āĻŽā§āĻ–ā§€āĻ¨ āĻšāĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛: āĻŦāĻ¨ā§āĻ§āĨ¤āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§‡āĻĄ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ•ā§āĻ˛āĻžāĻ¸āĻ—ā§āĻ˛āĻŋāĻ° āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻ…āĻŦāĻšāĻ¯āĻŧ āĻšāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡ (API āĻ¸ā§āĻ¤āĻ° > 26), āĻ¯āĻž āĻāĻ¤ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻĢāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧāĻ¨āĻŋ; āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ā§‡ āĻ•āĻŋāĻ›ā§ āĻœāĻŋāĻ¨āĻŋāĻ¸ā§‡āĻ° āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ•ā§āĻ˛āĻžāĻ¸ā§‡āĻ° āĻ¸āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ•āĻŋāĻ›ā§āĻ‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻ¯āĻĻāĻŋāĻ“ āĻāĻ¤ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ¤āĻĨā§āĻ¯ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡)āĨ¤ āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻ‡ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ āĻĒā§āĻ°āĻĨāĻŽ Wi-Fi āĻāĻ° āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āĻ¯āĻžāĻ¨, āĻ¤āĻ¤ā§āĻ¤ā§āĻŦāĻŸāĻŋ āĻĒāĻĄāĻŧāĻž āĻāĻŦāĻ‚ āĻ˛ā§‹āĻ•āĻžāĻ˛āĻšā§‹āĻ¸ā§āĻŸā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ°āĻžāĻ‰āĻŸāĻžāĻ° āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻžāĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ°ā§‚āĻĒā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽā§‹āĻ•āĻžāĻŦāĻŋāĻ˛āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯āĻž āĻĒā§ƒāĻĨāĻ•āĻ­āĻžāĻŦā§‡ āĻŦā§‹āĻ§āĻ—āĻŽā§āĻ¯ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧāĨ¤ āĻ¤āĻŦā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻ¯ā§āĻ•ā§āĻ¤ āĻāĻŦāĻ‚ āĻ—āĻ āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¤āĻž āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ¨āĻžāĻ“ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ (āĻŦāĻŋāĻšāĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻāĻŦāĻ‚ āĻĒā§‚āĻ°ā§āĻŦā§‡āĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻžāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡)āĨ¤

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ NDK, āĻšā§āĻ¯āĻžāĻ• āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ Android āĻ•ā§‹āĻĄ āĻĨā§‡āĻ•ā§‡ Wi-Fi āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤ā§ƒāĻ¤ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° Android API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻŦā§‹āĻāĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻĻā§‡āĻ°āĻŋ āĻ¨āĻž āĻ•āĻ°ā§‡ āĻ•ā§‹āĻĄ āĻ˛ā§‡āĻ–āĻž āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋāĨ¤

1. āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨

āĻāĻ‡ āĻ¨ā§‹āĻŸāĻŸāĻŋ āĻ¤āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻžāĻ°āĻž āĻāĻ•āĻžāĻ§āĻŋāĻ•āĻŦāĻžāĻ° āĻāĻ•āĻŸāĻŋ Android āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ†āĻ‡āĻŸā§‡āĻŽā§‡āĻ° āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻŦāĻžāĻĻ āĻĻāĻŋāĻ‡āĨ¤ āĻ¨ā§€āĻšā§‡āĻ° āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž āĻšāĻŦā§‡, minSdkVersion=23ā§ˇ

2. āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ā§‡āĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ

āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻĨā§‡āĻ•ā§‡ Wi-Fi āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻ¨āĻŋāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨, 8.0 āĻāĻ° āĻĒāĻ°ā§‡ OS āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ¸āĻš āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĻā§‡āĻ–āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ†āĻĒāĻ¨āĻžāĻ° āĻšāĻ¯āĻŧ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡āĻ° Wi-Fi āĻŽāĻĄāĻŋāĻ‰āĻ˛ā§‡āĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻŦāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ (āĻ†āĻ¨ā§āĻŽāĻžāĻ¨āĻŋāĻ• āĻŦāĻž āĻ¸āĻ āĻŋāĻ•)āĨ¤ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 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. āĻāĻ•āĻŸāĻŋ BroadcastReceiver āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ Wi-Fi āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻĄā§‡āĻŸāĻž āĻ†āĻĒāĻĄā§‡āĻŸ āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨āĻŋāĻ¨

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)

āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋ — āĻ“āĻ¯āĻŧāĻžāĻ‡-āĻĢāĻžāĻ‡ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻĢā§āĻ°āĻŋāĻ•ā§‹āĻ¯āĻŧā§‡āĻ¨ā§āĻ¸āĻŋ [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_āĻĒā§āĻ°āĻžāĻ°ā§āĻĨā§€ āĻāĻŦāĻ‚ āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻšāĻ˛ āĻĒāĻ¤āĻžāĻ•āĻž āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋāĨ¤

āĻ†āĻŽāĻ°āĻž āĻ§āĻžāĻ°āĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦāĨ¤ āĻ†āĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡āĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻŋ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŦāĻ¨ā§āĻ§āĻ¨ā§€āĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡āĻ° āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ "-" āĻšāĻŋāĻšā§āĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§ƒāĻĨāĻ• āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

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

āĻĒā§āĻ°āĻĨāĻŽ āĻ…āĻ°ā§āĻĨ āĻ¤āĻĨāĻžāĻ•āĻĨāĻŋāĻ¤ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ. āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻĒā§‡āĻ˛ā§‹āĻĄ āĻāĻ¨āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻāĻŦāĻ‚ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ•ā§‡ āĻ•ā§€ āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻ‡ āĻĒā§‹āĻ¸ā§āĻŸāĻŸāĻŋ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻšāĻ˛ WPA āĻāĻŦāĻ‚ WPA2, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦāĻž āĻ¤āĻĨāĻžāĻ•āĻĨāĻŋāĻ¤ āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡āĨ¤ RADIUS āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° (WPA-Enterprice) āĻāĻ•āĻŸāĻŋ āĻāĻ¨āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻž āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ā§‡ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤, āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦāĻžāĻĄāĻŧāĻŋāĻ° āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻāĻ‡ āĻ¸ā§āĻ•āĻŋāĻŽ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻšāĻ˛ āĻāĻŸāĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻ¸āĻžāĻ‡āĻĢāĻžāĻ° āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: AES āĻŦāĻ¨āĻžāĻŽ āĻ…āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ TKIPāĨ¤ WPA3, āĻ¯āĻž āĻ†āĻ°āĻ“ āĻœāĻŸāĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ‰āĻ¨ā§āĻ¨āĻ¤, āĻ§ā§€āĻ°ā§‡ āĻ§ā§€āĻ°ā§‡ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ āĻ¤āĻžāĻ¤ā§āĻ¤ā§āĻŦāĻŋāĻ•āĻ­āĻžāĻŦā§‡, āĻāĻ¨ā§āĻŸāĻžāĻ°āĻĒā§āĻ°āĻžāĻ‡āĻœ āĻ¸āĻ˛āĻŋāĻ‰āĻļāĻ¨ āĻ¸āĻŋāĻ¸āĻŋāĻ•ā§‡āĻāĻŽ (āĻ¸āĻŋāĻ¸āĻ•ā§‹ āĻ¸ā§‡āĻ¨ā§āĻŸā§āĻ°āĻžāĻ˛āĻžāĻ‡āĻœāĻĄ āĻ•ā§€ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻŽā§‡āĻ¨ā§āĻŸ) āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻ•āĻ–āĻ¨āĻ‡ āĻĒāĻžāĻ‡āĻ¨āĻŋāĨ¤

āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻŸāĻŋ MAC āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ…āĻĨāĻŦāĻž, āĻ¯āĻĻāĻŋ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§‹ WEP āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĄā§‡āĻŸāĻž āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻ¸āĻ˛ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻ¨ā§‡āĻ‡ (āĻāĻ–āĻžāĻ¨ā§‡ āĻ—ā§‹āĻĒāĻ¨ āĻ•ā§€āĻŸāĻŋ āĻāĻ¨āĻ•ā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻ•ā§€)āĨ¤ āĻ†āĻŽāĻ°āĻž āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻļā§āĻ°ā§‡āĻŖā§€āĻŦāĻĻā§āĻ§.
āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻāĻ•āĻŸāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻ˛ā§āĻ•āĻžāĻ¨ā§‹ āĻ•ā§āĻ¯āĻžāĻĒāĻŸāĻŋāĻ­ āĻĒā§‹āĻ°ā§āĻŸāĻžāĻ˛ āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤āĻ•āĻ°āĻŖ āĻ¸āĻš āĻĒāĻžāĻŦāĻ˛āĻŋāĻ• āĻ“āĻ¯āĻŧāĻžāĻ‡-āĻĢāĻžāĻ‡-āĻ āĻœāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ - āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĨ¤ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨āĻžāĻ°ā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻ–ā§‹āĻ˛āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧ (āĻ¯ā§‡āĻŸāĻŋ āĻ¤āĻžāĻ°āĻž āĻļāĻžāĻ°ā§€āĻ°āĻŋāĻ• āĻ¸āĻ‚āĻ¯ā§‹āĻ—ā§‡āĻ° āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ•ā§‹āĻŖ āĻĨā§‡āĻ•ā§‡)āĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ†āĻŽāĻ°āĻž āĻ¤āĻžāĻĻā§‡āĻ° OPEN āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻļā§āĻ°ā§‡āĻŖā§€āĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻŋāĨ¤

āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻŽāĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ•ā§€ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ. āĻāĻŸāĻŋ āĻ‰āĻĒāĻ°ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĨ¤ āĻ āĻŋāĻ• āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻ¨āĻ•ā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻ•ā§€ āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛ā§‡āĨ¤ āĻ†āĻ¸ā§āĻ¨ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻŋāĨ¤ 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]

āĻāĻ‡ Wi-Fi āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻŽā§‹āĻĄ āĻŦāĻž Wi-Fi āĻ¨ā§‡āĻŸāĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ• āĻŸāĻĒā§‹āĻ˛āĻœāĻŋ. āĻ†āĻĒāĻ¨āĻŋ 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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨