Автоматический вход для авторизованных порталов в Linux

Опубликовано: 1 Декабря, 2021

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

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

Системные требования: любая система на базе Unix, предпочтительно ubuntu Linux.

Пакеты, которые необходимо установить: wget, w3m. (можно установить с помощью apt-get)

Шаг 1: Изучение страницы адаптивного портала. Это один из важных шагов, и к нему нужно относиться внимательно. Щелкните правой кнопкой мыши предоставленную текстовую область и выберите «Проверить» (учитывая, что используемый браузер - Chrome / Firefox). Обратите внимание на поле «имя» в области ввода текста. Это должно быть что-то вроде «имя пользователя» или «пароль» (как показано на изображении).

В HTML будет встроен JavaScript (очевидно!). Обратите внимание на вызываемые им функции.

Шаг 2. Изучите код JavaScript. Функции, которые мы видели ранее, должны быть в коде javascript, который использует браузер. Доступ к нему можно получить так же, как и к HTML. Перейдите к инспектору и на этот раз нажмите на источники, и вы увидите коды JS для веб-сайта.

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

Шаг 3: Найдите ссылку! Как мы хорошо знаем, каждый запрос HTTP POST используется для отправки данных на сервер. Итак, теперь в коде javascript должна быть ссылка или запрос, который создается и отправляет запрос POST. Итак, нам нужно найти запрос. Важной частью здесь является не поиск запроса, а поиск подписи, которая используется вместе со ссылкой.

Под подписью здесь подразумевается количество требуемых переменных, их последовательность и т. Д. Иногда для некоторых переменных требуется временная метка, поэтому им может быть предоставлено фиктивное значение (при необходимости также может использоваться фактическая временная метка). Обратите внимание, что на данном изображении переменной «режим» присвоено значение 191, что означает состояние входа в систему, и значение 193, которое означает состояние выхода. Это можно сделать, внимательно прочитав код.

Найденный запрос для входа:

queryString = “mode=191&username=” + encodeURIComponent(UserValue) + “&password=” + encodeURIComponent(document.frmHTTPClientLogin.password.value) + “&a=” + (new Date).getTime() + producttype;



Обнаружен запрос для выхода:

queryString = “mode=193&username=” + encodeURIComponent(document.frmHTTPClientLogin.username.value) + “&a=” + (new Date).getTime() + producttype;

Шаг 4: Создание собственной строки запроса с переменными. После наблюдения за запросом легко составить собственный запрос с теми же переменными и соответствующим образом заполнить соответствующие данные. Ссылка, которая была сделана в этом случае, была следующей:

 'mode = 191 & username = admin & password = root & a = 1551345153461'

Здесь важно отметить, что можно подумать, что эту строку можно добавить к IP-адресу адаптивного портала, а затем использовать в браузере. Например,

http://192.168.1.8/loginpage.html?mode=191&username=admin&password=root&a=1551345153461

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

Шаг 5: Отправка запроса POST с помощью терминала. Как только запрос POST может быть отправлен терминалом в Linux, его можно вставить в сценарий bash для автоматизации. Чтобы отправить сюда POST-запрос, использовался неграфический браузер, созданный для Linux. Существует множество браузеров с неграфическим интерфейсом, например lynx, w3m и т. Д. В этом случае использовался браузер w3m. Его можно легко изучить на страницах справочника Linux. Использование POST с помощью w3m хорошо объясняется на странице руководства (показано на изображении).

В этом случае для связи с серверной частью использовался Ajax, а запрос-ответ был в формате XML, поэтому запрос POST должен был быть отправлен на ссылку XML, а не на обычную HTML-страницу. Это может отличаться от сети к сети. Страница, на которую должен быть отправлен запрос, может быть идентифицирована в том же коде JavaScript, в котором были обнаружены переменные. Наконец, команда будет выглядеть примерно так:

w3m -post – http://192.168.1.8:8294/login.xml<<<"mode=191&username=admin&password=root&a=1551345153461"

Шаг 6: вставьте его в сценарий bash. Чтобы сделать процесс автоматизированным, необходимо создать файл сценария bash, который будет запускаться каждый раз, когда вы подключаетесь к сети вашей организации. Чтобы создать простой сценарий bash, перейдите в терминал и введите

 нано-автологин

Nano - это редактор командной строки, который теперь создаст файл с именем autologin. Теперь вставьте следующий скрипт в редактор, нажав ctrl+shift+V

Примечание. Чтобы создать файл bash, не вводите расширение имени файла, поскольку Linux никогда не работает с расширением, а идентифицирует файлы внутренне. Linux сам знает, является ли файл текстовым файлом ASCII, файлом doc или файлом bash.

#! / bin / bash

wget -q --tries = 10 --timeout = 10 http://192.168.1.8:8294
если [[$? -экв 0]]; тогда
    w3m -post - http://192.168.1.8:8294/login.xml <<< 'mode = 191 & username = admin & password = root & a = 1551345153461'
        эхо "Онлайн!"
еще
        echo "Недоступен!"
фи

Объяснение:

  • Первая строка кода указывает, что файл представляет собой сценарий bash, который должен выполняться только с использованием bash, и его расположение - / bin / bash .
  • wget - это команда Linux, в основном это программа, которая используется для получения контента из Интернета.
  • Здесь, в этом случае, wget используется для проверки подключения ПК к сети, проверяется IP, активен он или нет. Если этот IP-адрес не активен, это означает, что устройство не подключено к частной сети организации, и сценарий больше не будет выполняться.
  • Флаги для wget - это количество попыток до прерывания, аналогично таймауту. -q используется для отключения подробного вывода.
  • $? - это переменная среды, которая используется для хранения возвращаемых значений в среде Linux. Если wget возвращает false, $? становится 0, и управление переходит к другому, и ничего не произойдет.
  • Но когда IP активен, т.е. когда wget вернет положительное возвращаемое значение, оно будет отражено в $? и команда w3m будет выполнена, и вход в систему будет выполнен успешно.

Шаг 7: Создание исполняемого файла скрипта каждый раз, когда он подключается к сети. Это последняя часть, где скрипт должен быть исполняемым каждый раз, когда он подключается к какой-либо сети. Он внутренне определит, является ли сеть частной сетью организации или нет, и соответственно войдет в систему. Для этого шага перейдите в вашу /etc/network папку.

В этой папке есть 4 папки (начиная с последней версии ubuntu-19.10) с именами: if-down.d , if-post-down.d , if-pre-up.d , if-up.d . Только что написанный скрипт нужно вставить в if-up.d ». Linux внутренне вызывает все сценарии, присутствующие в этой папке, каждый раз, когда он подключается к новой сети.

Примечание. Если вы не нашли 4 папки по умолчанию, создайте нужную нам и добавьте запись в файл /etc/network/interfaces Чтобы вставить сценарий, перейдите в каталог, в котором находится сценарий, и введите:

sudo cp autologin /etc/network/if-up.d

Шаг 8: Создание исполняемого файла и перезагрузка сети. Право собственности на файл должно быть изменено на root. Следовательно, введите команду:

sudo chown root: root autologin

Затем дайте разрешения сделать файл исполняемым:

sudo chmod + x автологин

Наконец, перезапустите сетевой менеджер, чтобы новые настройки вступили в силу!

/etc/init.d/network-manager перезапуск

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