Intereting Posts
Поиск процессов, реагирующих на заданный привязку клавиш Каковы происхождение rgb.txt? Почему запись в / dev / random не делает параллельное чтение из / dev / random быстрее? Как узнать, используется ли портативный жесткий диск и будет ли его горячим подключением? fetchmail видит почту, но не извлекает ее – постоянный «временный сбой поиска» Что такое ожидающие сигналы? Не удалось получить http://security.debian.org/dists/wheezy/updates/Release команда после команды grep не работает Какие видеокарты для настольного компьютера, совместимого с Linux, могут поддерживать Dual Monitors? истечь все новые пароли и вручную сбросить пароли Невозможно загрузить в Windows после обновления таблицы разделов загрузки могу я сказать useradd выполнить скрипт? Может быть, в / etc / default / useradd? начиная с последней строки, обрабатываемой при обработке файла журнала несколько раз GUI для поиска, который может показывать миниатюры видео syslinux / vesamenu.c32 – используя максимально доступное разрешение экрана?

Как выполнить аутентификацию в «открытой» сети беспроводного провайдера без использования браузера?

Подобная установка, похоже, распространена в торговых центрах и аэропортах. В Западной Канаде Shaw предоставляет такую ​​услугу и называет ее «Shaw Open». Я уверен, что другие локали имеют аналогичные услуги от таких поставщиков, как T-Mobile и т. Д.

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

Мой простой вопрос: как мне автоматизировать шаг аутентификации с устройства, которое обычно не имеет традиционного браузера?

В моем конкретном случае у меня есть малина Pi, сконфигурированная с программным обеспечением, которое я хочу использовать на выставках и т. Д. В местах тезисов есть одни и те же «открытые» горячие точки. Распи должен быть самодостаточным. Он просто делает свой бизнес и ведет переговоры с веб-сайтом. Но это исходящее соединение блокируется «открытым» соединением ISP, потому что у меня нет и я не могу завершить часть браузера процесса.

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

Ключом к решению таких проблем, как это, является знание того, как задать вопрос. Я искал Google, ища «как получить доступ к вине Wii panera» и поднял этот драгоценный камень.

  • Автоматический вход для открытия Wi-Fi

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

В решении используется каталог dispantcher.d NetworkManager для запуска сценариев в любое время, когда определенный сетевой интерфейс идет вверх или вниз. В статье описывается сценарий, который вы разместили в этом каталоге, /etc/NetworkManager/dispatch.d , называемый 07-autologin_openwifi . Вот этот скрипт:

 #!/bin/bash #------------------------------ # By Fahad Alduraibi # Last update: June 12, 2012 # Version: 1.1 #------------------------------ export LC_ALL=C LogFile="/var/log/07-WIFI_ACCESS.log" # The parameters that get passed to the script are: # $1 = The interface name ( eth0, wlan0 ...etc) # $2 = Interface status ( "up" or "down" ) # Check if wireless status is up # I have two wifi cards in my laptop, named "wlan0 and wlan1" # so I use regular expression "wlan[01]" to match both of them. if [[ "$1" =~ wlan[01] && $2 == "up" ]]; then # Get the network name from "iwconfig" or (can also locate the network based on IP or MAC address if needed) ESSID=$(/sbin/iwconfig $1 | grep ESSID | cut -d'"' -f2) # Record the date and time for debugging purposes only echo "[`date`] ESSID=($ESSID)" >> $LogFile # If the wireless name matches then run its python script if [[ "$ESSID" == "BCPL-PUBLIC-WIFI" ]]; then /usr/bin/python /myscripts/baltimore-county_library_wifi.py 1>> $LogFile 2>&1 elif [[ "$ESSID" == "PANERA" ]]; then /usr/bin/python /myscripts/panera.py 1>> $LogFile 2>&1 elif [[ "$ESSID" == "Nordstrom_Wi-Fi" ]]; then /usr/bin/python /myscripts/nordstrom.py 1>> $LogFile 2>&1 #elif .... (you can add more open wifi here) fi fi #if [[ "$1" =~ wlan[01] && $2 == "down" ]]; then ##If you want to do somehting when the network is down #fi 

И вот panera.py сценария Panera, panera.py :

 #------------------------------ # By Fahad Alduraibi # Last update: June 12, 2012 # Version: 1.1 #------------------------------ import mechanize import sys br = mechanize.Browser() br.set_handle_equiv(True) #br.set_handle_gzip(True) br.set_handle_redirect(True) br.set_handle_referer(True) br.set_handle_robots(False) br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0')] testURL = 'http://fadvisor.net/blog/' response = br.open(testURL) if response.geturl() == testURL: print "FAD: You are already logged in to Panera." sys.exit() try: forms = mechanize.ParseResponse(response, backwards_compat=False) except: print "FAD: Error in parsing forms, Am I already logged in to Panera?" sys.exit() response.close form = forms[0] #print form #print "----------------------------------- Login" request = form.click() response = mechanize.urlopen(request) forms = mechanize.ParseResponse(response, backwards_compat=False) response.close() form = forms[0] #print form #print "----------------------------------- Validate" #print request = form.click() response = mechanize.urlopen(request) forms = mechanize.ParseResponse(response, backwards_compat=False) response.close() form = forms[0] #print form #print "----------------------------------- ConfirmLogin New" #print request = form.click() response = mechanize.urlopen(request) forms = mechanize.ParseResponse(response, backwards_compat=False) response.close() form = forms[0] #print form #print "----------------------------------- ConfirmLogin Validate" #print request = form.click() response = mechanize.urlopen(request) forms = mechanize.ParseResponse(response, backwards_compat=False) response.close() form = forms[0] #print form #print "----------------------------------- CompleteLogin New" #print request = form.click() response = mechanize.urlopen(request) forms = mechanize.ParseResponse(response, backwards_compat=False) response.close() form = forms[0] #print form #print "----------------------------------- HttpLoginRequest" #print request = form.click() response = br.open(request) #print response.read() response.close() print "--- Panera Done ---" 

Я рекомендую вам прочитать всю статью, если вас интересуют другие методы для автоматического входа в систему. В статье было несколько других открытых сетей Wi-Fi, которые были написаны для Балтимора, MD.

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

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

В идеале у вас будет телефон, который вы можете настроить как точку доступа Wi-Fi и подключить свой Pi к этой сети, чтобы вы могли делать все, что хотите, но это не бесплатно.

TL; DR: нищие не могут быть выбраны

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

Получил этот совет от http://frankiejarrett.com/how-to-connect-apple-tv-to-a-hotel-wi-fi-network/

Если у вас есть второе сетевое устройство, вы можете настроить перенаправление NAT. Подключитесь к своей «внутренней» сети с помощью мобильного телефона или ноутбука и передайте RPi прямое соединение с сетью в целом. Затем выполните проверку подлинности с помощью браузера на вашем ноутбуке или телефоне. Сеть видит внешний MAC-адрес вашего RPi и связывает его с аутентифицированным соединением.

Я регулярно делаю это с помощью карманного маршрутизатора (старого AirPort Express) для подключения к интернет-сети, затем я могу подключить Chromecast и другие устройства к этой сети без повторной аутентификации.

Еще проще … Если ваше сетевое устройство является usb и работает с ноутбуком, подключите его к ноутбуку и войдите в сеть. Затем подключите его к RPi. Он должен работать в течение нескольких часов.