Автоматическое подключение к скрытой сети Wi-Fi

Вопрос или проблема

Мой MacBook Pro не подключается автоматически к беспроводной сети с скрытым SSID. Мне нужно выбрать “Присоединиться к другой сети…” в меню Airport (в системном трее), где я должен ввести имя сети, затем тип безопасности, пароль и ждать, пока подключится. Это становится все более раздражающим, что мне приходится делать это каждый раз, когда я возвращаюсь к своему столу.

У меня установлена Mac OS X 10.5, и вроде бы нет опции подключиться к конкретной сети, а только “Предпочитаемые сети”. Единственная сеть, которую я установил как предпочтительную и которая в зоне действия – это моя домашняя сеть, и она все равно не подключается автоматически. Делать сеть общедоступной не в моей компетенции, поэтому я застрял с тем, что есть сейчас.

Краткая версия: как мне сделать так, чтобы мой MacBook Pro автоматически подключался к WiFi сети с скрытым SSID, не “настраивая” ее каждый раз, когда я хочу подключиться?

Автоматическое подключение к сети с скрытым SSID – плохая идея.

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

Не говоря уже о том, что, чтобы иметь возможность перемещаться между несколькими точками доступа с одним и тем же SSID, компьютеру нужно знать их BSSID (по сути, MAC-адрес AP). Обычно они делают это, прослушивая маяки, вещаемые точками доступа. Поскольку маяки не содержат SSID (эй, он скрыт!), компьютеру периодически приходится отправлять запросы проб даже если он уже подключен к точке доступа. Это делает его смехотворно простым для злоумышленника, чтобы выяснить SSID, если хотя бы один компьютер подключен к сети. Не говоря уже об атаках десасссоциации.

Итак, он практически не получает никакой безопасности (по-прежнему слишком легко найти SSID) и теряет немного больше безопасности (клиентские компьютеры постоянно объявляют всему миру “эй, я компьютер, принадлежащий тому, кто работает в компании XYZ!”, даже когда никуда не близко к компании XYZ). Чистый результат негативный.

Единственный способ снизить или даже избежать потери безопасности – это вручную подключаться вместо автоматического подключения. Что, похоже, делает Apple. (Windows Vista, если я правильно помню, предупреждает вас о проблемах безопасности, когда вы пытаетесь настроить автоматическое подключение. NetworkManager, используемый в большинстве дистрибутивов Linux, также, похоже, заставляет вас вручную выбирать сохраненное подключение из выпадающего списка.)

В теории, можно было бы сохранить известные BSSID для каждого ESSID и отправлять запрос на пробу только тогда, когда получен маяк для одного из них (т.е. когда вы находитесь рядом с точкой доступа, которая в прошлом использовалась для этого SSID). Я не знаю, почему никто, похоже, еще не пробовал это сделать.

Не знаю, как именно ответить на необоснованный комментарий Джона к ответу Джордана Каталдо, поэтому приношу извинения за новый ответ. Но — нет, iJohn, вы можете сохранить этот applescript через Script Editor в .app, который можно поместить в элементы входа пользователя (в разделе “Учетные записи” в системных настройках). Тогда вы автоматически войдете в скрытую сеть при запуске.

Основываясь на примере Джордана, я написал следующий скрипт для подключения к скрытой сети, которая может еще не быть доступна, для (действительно редкого) случая, когда сервер находится на одной и той же сетевой линии, что и клиент, и запускается с задержкой. Экспонаты в музеях имеют необычные потребности;)

set networkResult to false
repeat while not networkResult
    try

        do shell script "networksetup -setairportnetwork NetworkName networkPassword | /bin/bash"

        -- сеть найдена и подключена.
        set networkResult to true

    on error errorMsg

        -- сеть еще не доступна;
        -- подождите пять секунд и попробуйте снова.
        set networkResult to false
        delay 5

    end try
end repeat

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

Эй, вот самый простой способ сделать это.
Откройте редактор скриптов.
Если вы знаете имя сети SSID, введите это:

do shell script “networksetup -setairportnetwork {имя SSID сервера} {пароль} | /bin/bash”

.
Между двоеточием и точкой – все, что вам нужно иметь в applescript.

Затем сохраните это как приложение, которое запускается только. Готово. Теперь у вас есть приложение, которое автоматически подключится к сети, когда оно будет открыто. Если вы хотите отредактировать приложение, сохраните также версию скрипта. Надеюсь, это поможет.

Если вы “хотите”, вы можете использовать скрипт команды и поместить его в автозагрузку или как файл запуска в доке: просто откройте терминал и сохраните с помощью следующей команды (с вашим SSID и ключом)

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport --associate=yourSSID --password=yourkey

Надеюсь, это поможет некоторым людям. Если вы хотите “сделать” больше, посмотрите на:

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -h

Обновление 2024

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

networksetup -setairportnetwork <имя устройства> <сеть> [пароль]

Так что, когда мы возьмем пример:

Имя WiFi: My-Wifi
Пароль WiFi: My!Password
Имя устройства WiFi: en0 (смотрите, удерживая option + щелкая по

Либо прямо в терминале:

networksetup -setairportnetwork en0 'My-Wifi' 'My!Password'

или в AppleScript

do shell script "networksetup -setairportnetwork en0 'My-Wifi' 'My!Password' | /bin/bash"

Я заключил имя сети и пароль в одинарные кавычки, так как у меня были специальные символы в обоих. Надеюсь, это поможет.

Ответ или решение

Автоматическое подключение к WiFi сети с скрытым SSID на MacBook Pro

Проблема автоматического подключения к WiFi сети с скрытым SSID на MacBook Pro довольно распространена и может вызывать много неудобств у пользователей. В данном ответе мы рассмотрим возможные способы решения этой проблемы, а также последствия, которые могут оказать влияние на безопасность вашей сети.

Понимание Проблемы

Скрытие SSID, или имени сети, делается для повышения уровня безопасности. Однако на практике это может привести к сложности подключения устройств. Ваш MacBook Pro, работающий под управлением Mac OS X 10.5, не принимает автоматически скрытые сети, так как система не получает информацию о сети через стандартные запросы.

Для подключения к скрытой сети системе нужно вручную ввести имя сети (SSID) и пароль каждый раз. Это можно считать раздражающим процессом, особенно если вы часто возвращаетесь на своё рабочее место.

Почему Для Подключения Необходимы Активные Действия?

При скрытии SSID маршрутизатор не передает его в сообщениях-уведомлениях (beacon). В результате системы, подключенные к скрытым сетям, должны активно отправлять запросы (probe requests), сообщая имя сети, что, к сожалению, создает уязвимость. Лишь одно устройство, подключенное к сети, может легко открыть имя сети для многих потенциальных злоумышленников с помощью специальных инструментов.

Возможные Решения

Несмотря на риски, существуют способы автоматизировать подключение к скрытым сетям на MacBook Pro.

  1. Скрипт AppleScript:
    Вы можете создать AppleScript, который автоматически попытается подключиться к вашей скрытой сети при запуске. Вот пример кода:

    set networkResult to false
    repeat while not networkResult
       try
           do shell script "networksetup -setairportnetwork en0 'My-Wifi' 'My!Password' | /bin/bash"
           set networkResult to true
       on error errorMsg
           set networkResult to false
           delay 5
       end try
    end repeat

    Сохраните этот код в виде приложения и добавьте его в элементы входа в систему (Login Items) в параметрах учетной записи.

  2. Командная строка:
    Если вы предпочитаете терминал, воспользуйтесь следующим способом:

    networksetup -setairportnetwork en0 'My-Wifi' 'My!Password'

    Замените ‘My-Wifi’ и ‘My!Password’ на имя вашей сети и пароль соответственно.

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

Заключение

Скрытие SSID имеет свои плюсы, но также создает дополнительные сложности и риски для безопасности. Хотя можно настроить MacBook Pro для автоматического подключения к скрытой сети, рассматривайте это решение в контексте более широкой безопасности. Где возможно, рекомендуется использовать открытые сети для простоты или рассмотреть возможность публичного отображения SSID, если безопасность не является критическим элементом.

Если вам необходимо поддерживать скрытый SSID, вышеописанные скрипты могут быть эффективным временным решением.

Оцените материал
Добавить комментарий

Капча загружается...