Ssid wifi для андроид

Wi-Fi и много других аббревиатур. Как в Android приложении получить данные об узлах Wi-Fi и не опухнуть

Однажды мне понадобилось сканировать из Android приложения сети Wi-Fi и получать подробную выкладку данных о точках доступа.

Тут пришлось столкнуться с несколькими трудностями: в офф.документации Android многие описанные классы стали deprecated (API level > 26), что никак не было в ней отражено; описание некоторых вещей в документации минимально (например поле capabilities класса ScanResult на момент написания не описано почти никак, хотя содержит много важных данных). Третья сложность может заключаться в том, что при первой близости с Wi-Fi, отличной от чтения теории и настройки роутера по localhost, приходится иметь дело с рядом аббревиатур, которые кажутся понятными по отдельности. Но может быть не очевидно, как их соотнести и структурировать (суждение субъективно и зависит от предыдущего опыта).

В данной статье рассмотрено как из Android кода получить исчерпывающие данные о Wi-Fi окружении без NDK, хаков, а лишь с помощью Android API и понять, как их интерпретировать.

Не будем тянуть и начнем писать код.

1. Создаем проект

Заметка рассчитана на тех, кто больше одного раза создавал Android проект, поэтому подробности данного пункта опускаем. Код ниже будет представлен на языке Kotlin, minSdkVersion=23.

2. Разрешения на доступы

Для работы с Wi-Fi из приложения понадобится получить от пользователя несколько разрешений. В соответствии с документацией, для того, чтобы осуществить сканирование сети на устройствах с ОС версий после 8.0, помимо доступа к просмотру состояния сетевого окружения нужен либо доступ на изменение состояния модуля Wi-Fi устройства, либо доступ к координатам (примерным или точным). Начиная с версии 9.0 необходимо запросить у пользователя и то и то, и при этом явно запросить у пользователя включить службу определения местоположения. Не забываем галантно объяснять пользователю, что это прихоть компании Google, а не наше желание устроить за ним слежку 🙂

Итого, в AndroidManifest.xml добавим:

А в коде, в котором есть ссылка на текущую Activity:

3. Создаем BroadcastReceiver и подписываемся на события обновления данных о сканировании сетевого окружения Wi-Fi

Метод WiFiManager.startScan в документации помечен как depricated с версии API 28, но офф. guide предлагает использовать его.

Итого, получили список объектов ScanResult.

4. Смотрим на ScanResult и разбираемся в терминах

Посмотрим на некоторые поля этого класса и опишем, что они означают:

SSID — Service Set Identifier – это название сети

BSSID – Basic Service Set Identifier – MAC адрес сетевого адаптера (Wi-Fi точки)

level — Received Signal Strength Indicator [dBm (русское дБм) — Децибел, опорная мощность 1 мВт.] — Показатель уровня принимаемого сигнала. Принимает значение от 0 до -100, чем дальше от 0, тем больше мощности сигнала потерялось по пути от Wi-Fi точки к вашему устройству. Подробнее можно посмотреть например на Википедии. Здесь же расскажу, что с помощью Android класса WifiManager можно проградуировать уровень сигнала по шкале от отличного до ужасного с выбранным вами шагом:

frequency — частота работы точки Wi-Fi [Гц]. Помимо самой частоты вас может заинтересовать так называемый канал. У каждой точки есть своя рабочая чистота. На момент написания текста наиболее популярным диапозоном Wi-Fi точек является 2.4 GHz. Но, если быть точнее, точка передает информацию на ваш телефон на пронумерованной частоте, близкой к названной. Количество каналов и значения соответствующих частот стандартизованы. Это сделано для того, чтобы точки поблизости работали на разных частотах, тем самым не создавая помехи друг другу и взаимно не понижая скорость и качество передачи. При этом точки работают не на одной частоте, а на диапазоне частот (пареметр channelWidth), называемом шириной канала. То есть точки, работающие на соседних (и не только на соседних, а даже на 3 от себя) каналах создают друг другу помехи. Вам может пригодится этот незамысловатый код, который позволяет вычислить номер канала по значению частоты для точек с частотой 2.4 и 5 Ghz:

Читайте также:  Detroit become human все модели андроидов

capabilities — наиболее интересное поле для анализа, работа с которым потребовало много времени. Тут в строку записываются «возможности» точки. При этом подробности интерпритации строки в документации можно не искать. Вот несколько примеров того, что может лежать в этой строке:

5. Разбираемся в аббревиатурах и парсим capabilities

Стоит упомянуть, что классы пакета android.net.wifi.* использует под капотом linux-утилиту wpa_supplicant и результат вывода в поле capabilities является копией поля flags при сканировании.

Будем действовать последовательно. Рассмотрим сначала вывод такого формата, при котором внутри скобок элементы отделены знаком «-«:

Первое значение описывает т.н. метод аутентификации (authentication). То есть, какую последовательность действий должны произвести устройство и точка доступа, чтобы точка доступа позволила собой пользоваться и каким образом шифровать полезную нагрузку. На момент написания поста самые частые варианты это WPA и WPA2, при котором либо каждое подключаемое устройство напрямую, либо через т.н. RADIUS-сервер (WPA-Enterprice) предоставляет пароль по зашифрованному каналу. Скорее всего у вас дома точка доступа предоставляет подключение по этой схеме. Отличие второй версии от первой в болеее стойком шифре: AES против небезопасного TKIP. Также постепенно внедряется WPA3, более сложный и продвинутый. Теоритически может встретиться вариант с enterprice-решением CCKM (Cisco Centralized Key Managment), но мне так и не встретился.

Точка доступа могла быть настроена на аутентификацию по MAC-адресу. Или, если точка доступа предоставляет данные по устаревшему алгоритму WEP, то аутентификации фактически нет (секретный ключ тут и является ключом шифрования). Такие варианты отнесем к типу OTHER.
Ещё есть полюбившийся в общественных wi-fi метод со скрытым Captive Portal Detection — запрос аутентификации через браузер. Такие точки доступа выглядят для сканера как открытые (какими с точки зраения физического подключения и являются). Поэтому отнесем их к типу OPEN.

Второе значение можно обозначить как алгоритм использования ключей (key management). Является параметром метода аутентификации, о котором написано выше. Говорит о том, как именно происходит обмен ключами шифрования. Рассмотрим возможные варианты. EAP — используется в упомянутом WPA-Enterprice, использует базу данных для сверки введеных аутентификационных данных. SAE — используется в продвинутом WPA3, более устойчива к перебору. PSK — самый частый вариант, подразумевает ввод пароля и его передачу в зашифрованном виде. IEEE8021X — по международному стандарту (отличному от поддержанным семейством WPA). OWE (Opportunistic Wireless Encryption) является расширением стандарта IEEE 802.11, для точек, которые мы отнесли к типу OPEN. OWE обеспечивает безопасность данных, передаваемых по незащищенной сети, за счет их шифрования. Также возможен варинант когда ключей доступа нет, назовем такой вариант NONE.

Третьим параметром является т.н. метод шифрования (encryption schemes) — как именно используется шифр для зашиты передаваемых данных. Перечислим варианты. WEP — использует поточный шифр RC4, секретный ключ является ключом шифрования, что в мире современной криптографии считается неприемлемым. TKIP — используется в WPA, CKIP — в WPA2. TKIP+CKIP — может быть указан в точках умеющих WPA и WPA2 для обратной совместимости.

Вместо трех элементов можно встретить одинокую пометку WEP:

Как мы обсудили выше, этого достаточно чтобы не конкретизировать алгоритм использования ключей, которого нет, и метода шифрования, которое одно по-умолчанию.

Теперь рассмотрим такую скобочку:

Это режим работы Wi-Fi или топология сетей Wi-Fi. Вам может встретиться Режим BSS (Basic Service Set) — когда есть одна точка доступа, через которую общаются подключенные устройства. Можно встретить в локальных сетях. Как правило точки доступа нужны для того, чтобы соединять устройства из разных локальных сетей, поэтому они являются частью Extended Service Sets — ESS. Тип IBSSs (Independent Basic Service Sets) говорит о том, что устройство является частью Peer-to-Peer сети.

Читайте также:  Gps bluetooth приемник внешний модуль для android

Ещё может попасться флаг WPS:

WPS (Wi-Fi Protected Setup) — протокол полуавтоматической инициализации сети Wi-Fi. Для инициализации пользователь либо вводит 8-символьный пароль, либо зажимает кнопку на роутере. Если ваша точка доступа относится к первому типу и этот флажок высветился напротив имени вашей точки доступа, вам настоятельно рекомендуется зайти в админку и отключить доступ по WPS. Дело в том, что часто 8-значный PIN можно узнать по MAC-адресу, либо перебрать за обозримое время, чем кто-то нечистый на руку сможет воспользоваться.

6. Создаем модель и функцию парсинга

На основе того, что выяснили выше опишем data-классами то, что получилось:

Теперь напишем функцию, которая будет парсить поле capabilities:

8. Смотрим результат

Посканирую сеть и покажу, что получилось. Показаны результаты простого вывода через Log.d:

Неосвещенным остался вопрос подключения к сети из кода приложения. Скажу только, что для того, чтобы считать сохраненные пароли ОС мобильного устройства, нужны root-права и готовность порыться в файловой системе чтобы прочитать wpa_supplicant.conf. Если логика приложения предполагает ввод пароля извне, подключение можно осуществить через класс android.net.wifi.WifiManager.

Спасибо Егору Пономареву за ценные дополнения.

Если считаете, что нужно что-то добавить или исправить, пишите в комментарии 🙂

Источник

Как подключить Android-устройство к сети со скрытым SSID

Как выполнить подключение Android к Wi-Fi со скрытым SSID, должен знать каждый пользователь смартфона или планшета, а также те, у кого есть роутер. SSID – это имя маршрутизатора. Наверное, каждый слышал о том, что для повышения безопасности свою сеть можно скрыть. Но как потом к ней подключиться?

Как подключиться к скрытой сети

Любая версия данной операционной системы предусматривает такую возможность. В настройках беспроводного соединения есть соответствующие параметры, которые нам и нужно откорректировать. Сделать это несложно. Важно только знать последовательность действий и быть предельно внимательным в момент ввода данных. Итак, как найти скрытый SSID Wi-Fi на Android?

Стоит отметить, что данная функция существенно повышает уровень безопасности, так как злоумышленники просто не смогут увидеть доступное соединение. А это означает, что не будет даже попыток взлома.

Итак, в первую очередь для того чтобы подключить скрытый Wi-Fi на Android, следует знать название точки доступа.

Если это ваша личная сеть, то с этим проблем нет. В любом случае, даже если вы сомневаетесь, вы можете соединиться с роутером при помощи кабеля, войти в меню управления и посмотреть его название, пароль безопасности и любую другую информацию.

Нам же потребуется знать следующие данные, которые необходимо указать при ручной настройке на Android:

  • Название маршрутизатора.
  • Ключ безопасности (если установлен в настройках маршрутизатора).
  • Тип шифрования данных (если подключение защищено).

Не зная этих данных, вы не сможете выполнить соединение. Итак, рассмотрим процесс подключения подробнее. Сведения нужно будет указать в настройках Wi-Fi на планшете или телефоне.

Подключение Android к Wi-Fi со скрытым SSID: Видео

Подключение к скрытой точке доступа

Для начала войдите в конфигурацию Wi-Fi на смартфоне. Включите модуль беспроводной связи. Система начнет поиск точек доступа.

Но так как наше соединение скрыто, на Android SSID не транслируется. Это означает, что эти данные нужно будет вводить вручную. Для этого выполняем следующие действия:

  1. Пролистываем в самый низ списка и нажимаем на кнопку «Добавить Wi-Fi». В первой строке «SSID сети» нужно указать имя сети для устройства Андроид. Оно в точности должно совпадать с тем, что указано в конфигурации маршрутизатора.
  2. Вторым шагом является выбор типа шифрования данных. В пункте «Безопасность» выберите тот тип, который указан в конфигурации роутера. Как правило, это WPA-PSKWPA2-PSK, но встречаются и другие варианты. Важно точно знать, какой именно тип установлен в конфигурации точки доступа.
  3. После того как вы выберете тип шифрования информации, появится еще одна строка, в которой следует ввести ключ. Введите его и нажмите кнопку «Подключиться».

После этого устройство выполнит соединение с маршрутизатором. Стоит отметить, что второй и третий пункты нужны только в том случае, если в конфигурации роутера беспроводное соединение защищено.

Иногда требуется более детальная настройка. Для этого после ввода ключа поставьте галочку в пункт «Показать дополнительные параметры». Появятся две дополнительные строки. В разделе «Параметры IP» вместо DHCP выберите «Статический». Это позволит открыть ручные настройки. При этом вам придется вручную вводить IP-адрес и другую информацию для соединения с роутером.

Читайте также:  Как переместить контакты андроид

Как вы можете заметить, все очень просто. С этой задачей справится даже новичок. Главное – быть предельно внимательным в момент ввода данных, чтобы не допустить ошибки. Ведь даже малейшая неточность сведет все старания на нет.

Как подключиться к Wi-Fi на Android: Видео

Источник

SSID что это и как получить имя сети Wi-Fi на Android

Чтобы понять, как получить идентификатор Wi-Fi на Android, следует знать, что это вообще такое и зачем может понадобиться. Android-устройства пользуются огромным спросом, и пользователь, если хочет понять принцип работы беспроводных сетей и процедуру подключения к ним, должен разобраться, что такое SSID на Wi-Fi в Android.

Что такое SSID

Дословно аббревиатура расшифровывается так – Service Set Identifier. В переводе это означает идентификатор сервиса. Таким образом, становится понятно, что это, по сути, имя сети. Когда мы хотим подключиться к точке доступа, то включаем беспроводной адаптер и система обнаруживает доступные соединения. Мы же видим только список подключений. Каждое из них имеет свое имя.

Если скрыть Service Set Identifier, то система просто не увидит название. Другими словами, соединение будет скрыто и мы не сможем подключиться к нему. Для того чтобы создать соединение, нам обязательно знать Service Set Identifier роутера. Итак, SSID сети для Wi-Fi в Android нужен для того, чтобы подключиться к точке доступа.

Пользователи могут установить абсолютно любое название для своей сети. Делается это в параметрах роутера, в разделе «Настройка беспроводной связи».

С этим проблем не должно возникнуть, так как все очень просто и понятно. Но как получить Service Set Identifier соединения?

Как найти беспроводную связь на Android

Если в конфигурации маршрутизатора соединение не скрыто, то имя подключения транслируется постоянно и в автоматическом режиме. Другими словами, в момент активации модуля беспроводной связи система автоматически находит доступные для подключения маршрутизаторы и их идентификаторы.

Вам ничего настраивать не нужно. Просто выбираете нужное название из списка и вводите пароль (если требуется). Устройство автоматически выполнит соединение. Другое дело, если стоит вопрос, как найти скрытую беспроводную сеть на Android.

Обнаружение и подключение к скрытому маршрутизатору

Часто в целях повышения безопасности пользователи скрывают свою точку доступа, чтобы никто больше ее не видел и не мог к ней подключиться. Конечно, существует парольная защита, но ведь находятся умельцы, которые могут обходить или взламывать подобные замки. Поэтому для того чтобы не было даже попыток взлома, можно просто скрыть роутер.

Но стоит отметить, что сама трансляция Wi-Fi при этом не прекращается. То есть интернет раздается, как и прежде. Не транслируется только название маршрутизатора. Но, по сути, и компьютер, и смартфон обнаруживают такую точку доступа, только без идентификатора.

Как правило, злоумышленники легко обходят такие меры безопасности, так как существует множество программ для работы в подобных условиях.

Поэтому наилучшая защита данных – это тип шифрования WPAWPA2 и сложный пароль, содержащий цифры и буквы. Причем ключ должен иметь обычные и заглавные символы.

Подключиться к такому роутеру можно только в случае, если вы будете знать название сети и пароль. Но как найти SSID на телефоне Android, если вы не знаете имени маршрутизатора? Для этого существуют приложения, которые способны обнаруживать скрытые точки доступа.

В любом случае, чтобы подключиться к скрытой точке доступа, вам потребуется вручную ввести название и пароль в параметрах подключения на Android-устройстве. Для этого открываете меню настроек и переходите в раздел «Подключения».

Здесь выбираете пункт «Wi-Fi». Далее включаете адаптер беспроводной связи. Перелистываете в самый низ страницы и нажимаете на кнопку «Добавить сеть».

В открывшемся окне вам потребуется вручную ввести следующие параметры:

  1. Service Set Identifier соединения.
  2. Тип безопасности (если нужно).
  3. Ввести пароль (если требуется).

Помните, что все настройки должны в точности совпадать с теми параметрами, которые указаны в маршрутизаторе. Малейшая ошибка (или опечатка) приведет к тому, что вы просто не сможете установить связь.

Теперь вы знаете, как получить имя сети Wi-Fi на Android, даже если точка доступа скрыта. Кроме этого, связь с такими роутерами не вызовет у вас трудностей.

SSID на Wi-Fi в Android: Видео

Источник

Оцените статью