Rasp­ber­ry Pi als wi­firou­ter met Cap­ti­ve­por­tal

Rasp­ber­ry Pi als open wi­firou­ter met cap­ti­ve-por­tal

C’t Magazine - - Inhoud - Mir­ko Dö­l­le

Als goe­de gast­heer of -vrouw geef je je be­zoek niet al­leen een kop­je kof­fie, maar vaak ook het wacht­woord van je wi­fi. Dat wacht­woord is van­uit vei­lig­hei­dover­we­gin­gen na­tuur­lijk wel lek­ker lang met al­ler­lei ver­schil­len­de te­kens. Een open wi­fi met een cap­ti­ve-por­tal en in­di­vi­du­e­le pin­co­de is dan een han­dig en toch goed­koop al­ter­na­tief.

Veel men­sen heb­ben lie­ver dorst of hon­ger dan dat ze geen in­ter­net heb­ben. Veel men­sen vra­gen na het eer­ste kop­je kof­fie meest­al naar je wi­fi­wacht­woord om­dat ze je wat on­li­ne foto's of zo wil­len la­ten zien en bang zijn dat ze dan te snel door hun he­le da­ta­bun­del heen zijn. Om niet voor ie­de­re be­zoe­ker de deu­ren van je lo­ka­le net­werk met­een wa­gen­wijd open te zet­ten, heb­ben veel mo­der­ne rou­ters de mo­ge­lijk­heid een apart gast­wi­fi in te stel­len. Zo kan be­zoek met een ei­gen wacht­woord in­ter­net op, maar niet bij de rest van je net­werk ko­men.

Om er­voor te zor­gen dat gas­ten geen com­plexe wi­fi­wacht­woor­den met de hand in hoe­ven te ty­pen (waar al­tijd wel weer een fout bij ge­maakt wordt), wordt bij An­droid-ap­pa­ra­ten veel ge­bruik ge­maakt van een QR-co­de om je snel aan te mel­den. Bij iOS werkt dat dui­de­lijk moei­za­mer, daar kom je al­leen via al­ler­lei om­we­gen met een QR-co­de op het wi­fi.

Dan is een open wi­fi een stuk mak­ke­lij­ker. Een cap­ti­ve-por­tal met een pin­co­de be­schermt je dan te­gen on­be­voeg­de be­zoe­kers. Als ba­sis heb je al­leen een Rasp­ber­ry Pi 3 en een mi­ni­a­tuur-TFT-dis­play van zo'n 15 eu­ro no­dig. De clou is dat je cap­ti­ve­por­tal werkt met al­leen de stan­daard­mid­de­len, zon­der ge­doe met su­do en zon­der spe­ci­a­le dae­mons voor het toe­gangs­be­heer.

Ju­ri­disch heeft een cap­ti­ve-por­tal voor­de­len ten op­zich­te van het sim­pel­weg ge­ven van het wi­fi­wacht­woord. Gas­ten krij­gen pas toe­gang tot in­ter­net als ze de bij de por­tal ge­toon­de ge­bruiks­voor­waar­den voor de wi­fi ge­ac­cep­teerd heb­ben. Bo­ven­dien wordt het aan­mel­den mak­ke­lij­ker als je ie­de­re gast een ei­gen, tij­de­lijk gel­di­ge pin­co­de geeft in plaats van een al­tijd gel­dig com­plex wi­fi­wacht­woord.

Mar­ke­ren en sor­te­ren

De ma­nier van wer­ken lijkt veel op hoe je een Rasp­ber­ry Pi nor­maal als wi­fi­hot­s­pot of wi­firou­ter zou ge­brui­ken. De Rasp­ber­ry Pi maakt met Hos­tAP een ei­gen, on­ver­sleu­teld wi­fi aan en dient te­ge­lij­ker­tijd als DHCP-ser­ver. De Rasp­ber­ry Pi krijgt zijn in­ter­net­ver­bin­ding via de net­werk­poort en leidt de da­ta van de (aan­ge­mel­de) wi­fi­gas­ten daar als NAT-rou­ter ook naar­toe door. Tot zo­ver niets nieuws on­der de zon.

De da­ta van on­be­ken­de en aan­ge­mel­de gas­ten wor­den door de Pi on­der­schei­den door de mar­ke­ring van de pak­ket­ten: eerst wor­den al­le wi­fi­pak­ket­ten met be­hulp van fire­wall­re­gels voor­zien van de mar­ke­ring 1. Een twee­de fire­wall­re­gel gooit bij het door­stu­ren al die pak­ket­ten weg, zo­dat ze niet naar de ether­ne­tin­ter­fa­ce wor­den door­ge­stuurd – de wi­fi­gas­ten zit­ten dan ge­van­gen op de Rasp­ber­ry Pi en kun­nen al­leen bij daar­op draai­en­de dien­sten, zo­als de web­ser­ver met de cap­ti­ve-por­tal.

Als een gast zich aan­meldt bij die por­tal en de voor­waar­den ac­cep­teert, maakt sy­s­temd voor hem een in­di­vi­du­e­le fire­wall­re­gel aan die de wi­fi­pak­ket­ten van zijn MAC-adres van de mar­ke­ring 2 voor­ziet. Die wor­den door de fire­wall naar in­ter­net door­ge­stuurd, waar­door de gast dan vrij­e­lijk kan sur­fen. Maar niet voor al­tijd: een cron-job ver­wij­dert re­gel­ma­tig vrij­ge­ge­ven gas­ten die lan­ger dan vier uur ac­tief zijn. Dat voor­komt dat je bu­ren het gast­wi­fi met be­hulp van ARP-spoo­fing con­ti­nu kun­nen mis­brui­ken.

An­de­re cap­ti­ve-por­tals moe­ten vaak wach­ten tot een gast een web­pa­gi­na op­vraagt om hem dan naar de por­tal­pa­gi­na te lei­den. Wij ge­brui­ken de cap­ti­ve-her­ken­ning van An­droid, iOS en Win­dows Pho­ne om gas­ten met­een en au­to­ma­tisch door te stu­ren naar de aan­meld­pa­gi­na. En ook dat weer met al­leen de stan­daard­mid­de­len.

In­stal­le­ren

Bij de hard­wa­re heb­ben we ge­ko­zen voor een Rasp­ber­ry Pi 3 om­dat die een ether­net­poort en wi­fi heeft. Je kunt ech­ter net zo goed een Rasp­ber­ry Pi 1 of 2 met een wi­fi­adap­ter of een Rasp­ber­ry Pi Ze­ro W met een usb-ether­net­adap­ter ge­brui­ken. Als be­stu­rings­sys­teem ad­vi­se­ren we Rasp­bi­an Li­te om­dat de wi­firou­ter geen gra­fi­sche in­ter­fa­ce no­dig heeft.

De con­fi­gu­ra­tie­be­stan­den voor het ge­bruik als wi­firou­ter staan bij de link on­der­aan dit ar­ti­kel. Pak het zi­par­chief uit in de lo­ka­le map van de ge­brui­ker pi. Als je het met Win­dows down­lo­adt, zet je de uit­ge­pak­te be­stan­den op de eer­ste par­ti­tie van de sd-kaart waar je van te­vo­ren Rasp­bi­an op ge­ïn­stal­leerd hebt. On­der Rasp­bi­an ga je dan eerst met cd /boot naar de map met het uit­ge­pak­te zi­par­chief voor­dat je de vol­gen­de stap­pen uit­voert.

Om er­voor te zor­gen dat de Rasp­ber­ry Pi als hot­s­pot werkt, moet je eerst de Hos­tAP- en de DHCP-dae­mon in­stal­le­ren:

su­do

apt-get in­stall hostapd dns­masq

De con­fi­gu­ra­tie­be­stan­den van bei­de pro­gram­ma's zit­ten in het zi­par­chief. Ko­pi­eer die sim­pel­weg naar /etc:

su­do cp 1726-154/de­fault/*

/etc/de­fault su­do cp -a 1726-154/hostapd /etc su­do cp 1726-154/dns­masq.conf /etc

Bo­ven­dien heb je een wi­fi-adap­ter met een sta­tisch ge­con­fi­gu­reerd ip-adres no­dig. Daar­voor moet je met su­do pi­co /etc/net­work/in­ter­fa­ces het cen­tra­le net­werk­con­fi­gu­ra­tie­be­stand ope­nen en daar het vol­gen­de in­zet­ten:

au­to wlan0 ifa­ce wlan0 in­et sta­tic ad­dress 192.168.255.1 net­mask 255.255.255.1 wi­re­less-mo­de Mas­ter wi­re­less-po­wer off

Daar­mee heb je het ip-adres 192.168.255.1 als be­gi­nadres voor al­le wi­fi­gas­ten in­ge­steld en de ener­gie­be­spa­rings­func­tie van de wi­fi-adap­ter ge­de­ac­ti­veerd.

Ver­plich­te om­lei­ding

De vol­gen­de stap­pen be­staan uit het con­fi­gu­re­ren van de NAT-rou­ting en de fire­wall. Om de Pi da­tapak­ket­ten über­haupt te la­ten door­stu­ren, moet je de rou­ting in het be­stand /etc/sy­s­ctl.conf ac­ti­ve­ren:

net.ipv4.ip_­for­ward=1

Dat werkt ech­ter pas na een her­start, maar die kun je het bes­te pas doen na­dat je al­les ge­ïn­stal­leerd en ge­con­fi­gu­reerd hebt. De fire­wall­re­gel voor het mar­ke­ren van het gast­ver­keer met 1 ziet er als volgt uit:

su­do ip­ta­bles -A PREROUTING -t man­g­le -i wlan0 -m mark --mark 0 -j MARK --set-mark 1

De met 1 ge­mar­keer­de pak­ket­ten van niet-aan­ge­mel­de gas­ten moe­ten niet op in­ter­net te­recht­ko­men. Die moe­ten in de FOR­WARD-chain ver­wor­pen wor­den:

su­do ip­ta­bles -A FOR­WARD -m mark --mark 1 -j DROP

De NAT-rou­ting moet al­leen voor de da­ta

van de aan­ge­mel­de wi­fi­gas­ten gel­den, waar­van de pak­ket­ten la­ter met een 2 ge­mar­keerd wor­den:

su­do ip­ta­bles -A POSTROUTING -t nat -o eth0 -m mark

--mark 2 -j MASQUERADE

Wie nog niet aan­ge­meld is, moet om te kun­nen aan­mel­den om­ge­leid wor­den naar de cap­ti­ve-por­tal. Daar heb­ben we een Fa­keDNS-dae­mon voor ge­bruikt die voor al­le na­men het ip-adres 192.168.255.1 te­rug­le­vert. Om­dat clients de DNS-re­quests ca­chen, kun je geen DNS-ser­ver ge­brui­ken die val­se ant­woor­den le­vert. An­ders zou je bij de eer­ste po­ging http://ct.nl op te roe­pen wel op de cap­ti­ve-por­tal uit­ko­men en je kun­nen aan­mel­den, maar als je dan op­nieuw pro­beert om naar http://ct.nl te gaan, kom je weer bij de cap­ti­ve-por­tal uit om­dat de DNS-re­quest nog ge­ca­chet is.

De Rasp­ber­ry Pi moet dus ook voor niet-aan­ge­mel­de gas­ten de juis­te re­sul­ta­ten voor DNS-re­quests le­ve­ren. Dat doet DNS­Masq stan­daard ook. Dan zorgt de vol­gen­de fire­wall­re­gel er­voor dat je bij een po­ging om naar ct.nl te gaan bij de cap­ti­ve-por­tal uit­komt:

su­do ip­ta­bles -A PREROUTING -t nat -i wlan0 -p tcp -m mark --mark 1 -m tcp --dport 80 -j DNAT --to-des­ti­na­ti­on 192.168.255.1

Daar­mee wor­den al­le pak­ket­ten uit de wi­fi (-i wlan0) die met 1 ge­mar­keerd zijn (-m mark –-mark 1) en voor poort 80 (-dport 80) van een be­paald doel be­stemd zijn, ge­leid naar het ip-adres 192.168.255.1 (--to-des­ti­na­ti­on 192.168.255.1). De gas­ten ko­men dan bij de por­tal­pa­gi­na van de Rasp­ber­ry Pi en niet bij ct.nl.

Dat werkt ech­ter al­leen voor HTTPre­quests, de cap­ti­ve-por­tal kan HTTPSre­quests niet be­ant­woor­den door het ont­bre­ken van SSL-cer­ti­fi­ca­ten. Maar dat hoeft bij mo­bie­le ap­pa­ra­ten ook niet om­dat die door een truc in de web­site­con­fi­gu­ra­tie la­ter au­to­ma­tisch via HTTP naar de por­tal ge­leid wor­den.

Om er­voor te zor­gen dat je de fire­wall­re­gels niet na el­ke her­start op­nieuw in moet voe­ren, in­stal­leer je nog het pak­ket ip­ta­bles-per­sis­tent:

su­do apt-get in­stall

ip­ta­bles-per­sis­tent

Bij het in­stal­le­ren van dat pak­ket wordt je ge­vraagd of je de re­gels la­ter wilt op­slaan – dat moet je be­ves­ti­gen.

Apa­che als por­tal­ser­ver

Voor de cap­ti­ve-por­tal heb je een web­ser­ver op de Rasp­ber­ry Pi no­dig. Die moet je ook nog in­stal­le­ren. Je kunt daar­bij kie­zen of je Nginx of Apa­che wilt in­stal­le­ren, in dit voor­beeld gaan we uit van Apa­che met PHP:

su­do

apt-get in­stall apa­che2 php

De cap­ti­ve-test van An­droid, iOS en Win­dows Pho­ne ver­loopt vol­gens het­zelf­de prin­ci­pe: zo­dra een mo­biel ap­pa­raat ver­bin­ding heeft met een wi­fi, roept elk sys­teem stan­daard een be­paald url op bij de be­tref­fen­de fa­bri­kant en ver­wacht dan een suc­ces­vol­le pa­gi­na-oproep (200) of de fout­mel­ding dat de pa­gi­na niet be­staat (404).

Cap­ti­ve-por­tals moe­ten in plaats daar­van een tij­de­lijk om­lei­ding met co­de 302 te­rug­le­ve­ren en de por­tal­si­te als doel­adres aan­ge­ven – dan opent het mo­bie­le ap­pa­raat de pa­gi­na met­een of krijgt de be­zoe­ker het be­richt dat hij zich eerst moet aan­mel­den.

Om het sim­pel te hou­den, stel je bij Apa­che niet al­leen een om­lei­ding in voor de drie url's van An­droid, iOS en Win­dows Pho­ne, maar zorg je er­voor dat al­tijd co­de 302 te­rug ge­le­verd wordt als een be­stand niet ge­von­den wordt – en stuur je de be­zoe­ker door naar de start­pa­gi­na van de por­tal. Om dat te doen, voeg je bij het Vir­tu­alHost-deel van het be­stand /etc/ apa­che2/si­tes-avai­la­ble/000-de­fault.conf de vol­gend re­gel toe:

Er­rorDo­cu­ment 404

/

Dan ko­men al­le wi­fi­gas­ten bij hun eer­ste toe­gang tot je draad­lo­ze net­werk op de start­pa­gi­na van de Apa­che-web­ser­ver te­recht.

Vrij­heid voor ie­der­een

Om er­voor te zor­gen dat een gast op in­ter­net kan rond­strui­nen, moet je zijn da­tapak­ket­ten door de fire­wall met een 2 la­ten mar­ke­ren. Als on­der­schei­dings­cri­te­ri­um ge­bruik je daar het MAC-adres van de wi­fi­adap­ter voor. Hier een voor­beeld:

ip­ta­bles -A PREROUTING -m mac --mac-sour­ce 99:98:97:ab:cd:ef -j MARK --set-mark

2

-t man­g­le

Om die re­gel toe te voe­gen, moet ip­ta­bles met root­rech­ten aan­ge­roe­pen wor­den. Veel cap­ti­ve-por­tals ge­brui­ken daar een su­do-aan­roep van­uit PHP voor, maar daar kan een even­tu­e­le aan­val­ler veel on­heil mee ver­rich­ten – voor ons een no-go.

On­ze cap­ti­ve-por­tal ge­bruikt in plaats daar­van sy­s­temd om de ip­ta­bles­re­gels te be­he­ren, en een on­af­han­ke­lijk PHP-front-end dat bij het aan­mel­den van een gast een be­stand aan­maakt met zijn MAC-adres als naam, in de di­rec­to­ry /var/ www/wlan­guests. Het PHP-script ach­ter­haalt het MAC-adres door de ARP-ta­bel uit te le­zen:

$ARP_TB = fi­le("/proc/net/arp"); $MAC_ADDR = ""; if($ARP_TB !== fal­se) { fo­reach ($ARP_TB as $ARP_E){ if(0 === strpos($ARP_E, $_SERVER["REMOTE_ADDR"]."")) { $MAC_ADDR=str_re­pla­ce(':','', sub­str($ARP_E,41,17)); break;

}

}

}

... fi­le_­put_­con­tents($WLANGUEST_DIR .$MAC_ADDR,$_SERVER["REMOTE_ADDR"] ."\n");

De gast­di­rec­to­ry, die bij de Apa­che­ge­brui­ker www-da­ta be­hoort en voor hem be­schrijf­baar moet zijn, la­ten we door de sy­s­temd-job wlan­guests.path be­wa­ken op ver­an­de­rin­gen:

[Unit]

De­scrip­ti­on=Watch di­rec­to­ry [Path] Pa­thMo­di­fied=/var/www/wlan­guests/ [In­stall] Wan­te­dBy=mul­ti-user.tar­get

Sy­s­temd ge­bruikt dan de kernel­func­tie in­o­ti­fy() om in­for­ma­tie te krij­gen over ver­an­de­rin­gen aan de di­rec­to­ry en start dan de job wlan­guests.ser­vi­ce die bij

wlan­guests.path hoort:

[Unit]

De­scrip­ti­on=Up­da­te ip­ta­bles ru­les [Ser­vi­ce]

Ty­pe=on­eshot ExecStart=/usr/lo­cal/bin/ .wlan­guestsctl

Het shellscript /usr/lo­cal/bin/wlan­guestsctl stelt de ip­ta­bles-re­gels in en ver­wij­dert ze. Het script ver­ge­lijk daar­voor de MACadres­sen in de be­staan­de ip­ta­bles-re­gels met de be­stands­na­men in de gast­di­rec­to­ry – als er een be­stand be­staat waar­voor nog geen re­gel is, wordt een nieu­we re­gel aan­ge­maakt. Een re­gel waar­voor er geen bij­pas­send be­stand meer is, wordt ver­wij­derd.

De sy­s­temd-jobs en het script wlan­guests staan ook in het zi­par­chief. Om ze te in­stal­le­ren, ko­pi­eer je de be­stan­den naar de juis­te di­rec­to­ry's en ac­ti­veer je de sy­s­temd-job:

su­do cp 1726-154/wlan­guests/ .wlan­guests.* /etc/sy­s­temd/sy­s­tem su­do cp 1726-154/wlan­guests/ .wlan­guestsctl /usr/lo­cal/bin su­do sys­temctl ena­ble wlan­guests.path

Als je de PHP-co­de hier­bo­ven in een be­groe­tings­pa­gi­na in­te­greert, heb je daar­mee al een een­vou­di­ge cap­ti­ve-por­tal die de ge­bruiks­voor­waar­den laat zien zo­dra ie­mand ver­bin­ding met de wi­fi maakt. Maar daar­mee is de kans groot dat ook je bu­ren en voor­bij­gan­gers je open wi­fi zul­len gaan ge­brui­ken.

Mi­ni-TFT als pin­co­de-dis­play

We heb­ben voor de Rasp­ber­ry Pi daar­om een goed­koop TFT-dis­play ge­kocht van zo'n 15 eu­ro dat voor ie­de­re gast een in­di­vi­du­e­le pin­co­de laat zien zo­dra hij zich op het wi­fi aan­meldt. Het 1,8 inch gro­te dis­play met 128 x 160 pixels heeft een ST7735-con­trol­ler en een SPI-in­ter­fa­ce. Als je op in­ter­net zoekt op '1.8 128x160 SPI TFT' kom je er vast wel een paar te­gen, an­ders kun je hem ook bij Con­rad of SOS So­lu­ti­ons krij­gen. Let er­op dat er een groe­ne lip aan de dis­play­be­scher­mings­fo­lie zit – dat is een in­di­ca­tie van de ge­bruik­te dis­play-con­trol­ler.

Hoe je het dis­play met de Rasp­ber­ry Pi ver­bindt, staat in de ta­bel hier­naast. Om het dis­play in ge­bruik te ne­men, voeg je in het be­stand /boot/cmd­line.txt de vol­gen­de re­gel toe aan het eind van de eer­ste re­gel: fb­con=map:0000001 fb­con=font:10x18 :

. FRAMEBUFFER=/dev/fb1

Daar­mee wordt het dis­play aan ter­mi­nal 7 toe­ge­kend (/dev/tty7) en wordt een 10x18pixelfont ge­se­lec­teerd, zo­dat de pin­co­de la­ter be­ter te le­zen is. Bo­ven­dien laad je bij het star­ten steeds au­to­ma­tisch de SPI­mo­du­le en de ker­nel­mo­du­le voor het dis­play door aan het be­stand /etc/mo­du­les het vol­gen­de toe te voe­gen:

spi_b­cm2835 fbtft_­de­vi­ce

Om er­voor te zor­gen dat de ker­nel weet hoe het dis­play met de Pi ver­bon­den is, maak je het be­stand /etc/mod­pro­be.d/ ras­pi.conf aan en voeg je daar de mo­du­le­op­ties aan toe:

op­ti­ons fbtft_­de­vi­ce cus­tom : . na­me=fb_st7735r speed=32000000 : . gpi­os=re­set:23,cs:8,dc:24,led:25 : . ro­ta­te=90

Daar­na voer je su­do ras­pi-con­fig uit en ac­ti­veer je bij 'In­ter­fa­cing Op­ti­ons' de SPI-in­ter­fa­ce voor­dat je de Rasp­ber­ry Pi her­start.

Als hij weer op­ge­start is, moet je er­voor zor­gen dat de pin­co­de op het dis­play ge­toond gaat wor­den. Daar is het script wlanpin­dis­play uit het zi­par­chief ver­ant­woor­de­lijk voor. Dat wordt op de­zelf­de ma­nier aan­ge­roe­pen als het re­gel­be­heer van sy­s­temd – de sy­s­temd-job­be­stan­den he­ten wlanpin­dis­play.path en wlanpin­dis­play.ser­vi­ce en zit­ten even­eens in het zi­par­chief. Het in­stal­le­ren gaat ver­ge­lijk­baar met het re­gel­be­heer:

su­do cp 1726-154/wlanpin­dis­play/ .wlanpin­dis­play.* /etc/sy­s­temd/sy­s­tem su­do cp 1726-154/wlanpin­dis­play/ .wlanpin­dis­play /usr/lo­cal/bin su­do sys­temctl ena­ble

wlanpin­dis­play.path

Het PHP-front-end maakt ook de pin­co­de aan en slaat die op in het be­stand /var/ www/wlan­guests/wlan­pin:

if(!fi­le_exists($WLAN_PIN_FILE)) fi­le_­put_­con­tents($WLAN_PIN_FILE, random_int(100000,999999)."\n");

Het com­ple­te PHP-front-end zit ook in het zi­par­chief, in de di­rec­to­ry php. Ko­pi­eer het een­vou­dig­weg naar de do­cu­men­troot van Apa­che, ver­wij­der het daar aan­we­zi­ge be­stand in­dex.html en maak de gas­ten­di­rec­to­ry aan:

su­do cp 1726-154/php/* /var/www/html su­do rm /var/www/html/in­dex.html su­do mk­dir /var/www/wlan­guests su­do chown www-da­ta:www-da­ta

/var/www/wlan­guests

Als laat­ste moet je dan nog twee cron-jobs in­stel­len. De eer­ste werpt de gast er na on­ge­veer vier uur uit, de twee­de ver­wij­dert een aan­ge­vraag­de maar niet ge­bruik­te pin­co­de na on­ge­veer twee mi­nu­ten. Bei­de die­nen er­voor om op­drin­ge­ri­ge bu­ren af te wij­zen die je gast­wi­fi voor hun doel­ein­den wil­len ge­brui­ken. Bei­de cron-jobs wer­ken met de rech­ten van de web­ser­ver. Voer su­do cron­tab -u www-da­ta -e uit en voer het vol­gen­de in:

0,30 * * * * /usr/lo­cal/bin/ .wlan­guestsctl --pur­ge

*/2 * * * * /usr/lo­cal/bin/ .wlanpin­dis­play --pur­ge

Dan blijft het wi­fi voor­be­hou­den aan je gas­ten, die hun pin­co­de kun­nen le­zen op het dis­play van de Rasp­ber­ry Pi. (nkr)

www.ct.nl/soft­link/1804098

Een klein TFT-dis­play van 15 eu­ro laat voor ie­de­re gast een in­di­vi­du­e­le pin­co­de zien. Dat maakt het voor bu­ren en voor­bij­gan­gers een stuk las­ti­ger om het gast­wi­fi te mis­brui­ken.

De por­tal­pa­gi­na opent op veel mo­bie­le ap­pa­ra­ten au­to­ma­tisch zo­dra ie­mand met het gast­wi­fi ver­bin­ding maakt. Je kunt daar­mee al­leen op in­ter­net als je de ge­bruiks­voor­waar­den ac­cep­teert en de op het TFT-dis­play ge­toon­de pin­co­de in­typt.

Newspapers in Dutch

Newspapers from Netherlands

© PressReader. All rights reserved.