Ustawienia WiFi jako kod QR

Andrzej Galiński · 2022-01-22

Cel: jak zrobić kod QR do łatwego udostępniania WiFi?

Motywacja

Na obudowach ruterów często można znaleźć nalepki z kodami 2D, które po zeskanowaniu pozwalają podłączyć się do WiFi bez wpisywania haseł. To całkiem wygodne, zwłaszcza jeśli ma się skomplikowane hasło oraz dużo gości, co w styczniu 2022 jest nierozsądne - dużo gości, nie skomplkowane hasło - ale bądźmy dobrej myśli, jeszcze kiedyś będzie bezpiecznie robić zgromadzenia w domu.

Inżynieria wsteczna

Mam do dyspozycji ruter z kodem 2D. Po zeskanowaniu kodu moim telefonem nie widzę zdekodowanego tekstu: urządzenie od razu “ułatwia mi życie”, oferując podłączenie do sieci (o co zresztą chodzi, nie ma co narzekać). Zamiast instalować specjalną  apkę do podglądania kodów użyję komputera, a konkretnie zbarimg z pakietu zbar-tools.

$ zbarimg nieznany-qr.png
QR-Code:WIFI:T:WPA2;S:domyslna-nazwa-sieci;P:domyslne-haslo;;

Aha! W zasadzie wiem już wszystko czego potrzebuję, ale poszukam jeszcze standardu. qr code wifi standard?

Znalazłem ładne podsumowanie na wiki projektu zxing (Zebra). Wygląda na to, że to oni są autorami standardu, który przyjął się powszechnie. Za ich stroną:

  • Składnia jest taka jak w standardzie MeCard - to prefiks WIFI: i lista par klucz:wartość rozdzielanych średnikami, znaki specjalne można wpisywać z \, np. \:.
  • Typ zabezpieczeń: T:[WEP|WPA|WPA2-EAP|nopass]. Jeśli sieć jest niezabezpieczona, można ustawić T:nopass lub w ogóle pominąć to pole.
  • SSID: S:nazwa-sieci.
  • Hasło: P:haslo.
  • Jest też opcjonalne ustawienie do podłączania się do sieci ukrytej (H:true) oraz zestaw zaawansowanych opcji WPA2-EAP.

Uwaga: Jeśli SSID lub hasło jest tekstowe, ale może zostać zinterpretowane jako liczba w systemie szesnastkowym, należy użyć cudzysłowów (S:"BACA", a nie S:BACA).

Rozwiązanie

QR-Code: to prefiks doklejany przez zbarimg - typ rozpoznanego kodu. Nowy kod będzie wyglądał tak (koduję go pythonowym qr z pakietu qrcode):

$ qr 'WIFI:T:WPA2;S:inna-nazwa;P:lepsze-haslo;;' > wifi_qr.png

kod QR z ustawieniami WiFi

Co jeszcze można umieścić w kodzie QR?

  • numer telefonu/sms: tel:+48..., sms:+48...,
  • mail: mailto:...@...,
  • współrzędne geograficzne: geo:0:0,
  • dane kontaktowe (MeCard, vCard, …)

…i wiele innych, w tym przede wszystkim dowolny link. Aplikacje mogą rejestrować rozmaite typy rozpoznawanych URI i związanych z nimi akcji, więc właściwie lista zastosowań nie ma końca.

Rozmaitości

  • Rozwinięcie skrótu SSID to Service Set IDentifier.
  • Pokazywanie haseł w miejscu publicznym oczywiście nie jest bezpieczne - ale ostatecznie jeśli chodzi nam o udostępnienie komuś wifi, to nie ma wielkiej różnicy, czy powiemy mu jakie jest hasło, czy wyciągniemy kartkę z kodem :)
  • zbarcam uruchamia wykrywnie kodów kreskowych w obrazie przechwytywanym z kamery - fajna zabawka, potencjalnie bardzo przydatna.
  • Narzędzia z zbar-tools potrafią skanować także inne kody kreskowe (np. EAN13).

Linki