lucidiot's cybrecluster

Cartographier les Wi-Fi publics

Lucidiot Informatique 2021-07-25
On commence à faire quelque chose avec nos données de scans Wi-Fi.


Maintenant qu'on peut importer et exploiter nos scans de réseaux Wi-Fi, il est temps d'en faire quelque chose de concret. L'objectif principal de la mission était de pouvoir identifier des réseaux Wi-Fi ouverts et publics qui pourraient être indiqués sur OpenStreetMap, pour pouvoir aider à trouver une connexion Internet facilement.

J'avais initialement juste voulu indiquer les réseaux Wi-Fi publics offerts dans les bibliothèques municipales, vu que j'avais pu m'en servir précédemment, avant qu'on ne commence à faire cette épopée de scans de réseaux. Avec ces scans, j'ai pu en apprendre plus sur comment contribuer sur OpenStreetMap et surtout comment contribuer des réseaux Wi-Fi publics.

Comment taguer des réseaux Wi-Fi

Sachez d'abord qu'il existe 4 types d'objets sur OpenStreetMap :

Tous ces objets peuvent avoir des tags, qui sont composés d'une clé et d'une valeur, notamment le tag type qui indique ce qu'est vraiment l'objet, par exemple un arbre. Les tags sont complètement arbitraires, on peut mettre ce qu'on veut, mais il y a des conventions qu'il vaut mieux respecter. Tout le monde ne les suit pas, parce que tout le monde ne les connaît pas forcément, ce qui peut être source de pas mal de bazar.

internet_access

Pour l'accès à Internet, on utilise la clé internet_access. On peut utiliser soit yes ou no pour indiquer si un accès Internet est disponible sans en indiquer la méthode, ou une liste de valeurs séparées par des point-virgules :

wlan
Accès Wi-Fi, WiMAX, etc. fourni. On ne dit pas directement Wi-Fi, et la valeur wifi est prohibée, car c'est une marque déposée et il existe d'autres standards comme WiMAX.
terminal
Des ordinateurs sont à disposition sur place pour accéder à Internet.
service
Des personnes sont disponibles spécifiquement pour résoudre les problèmes d'accès à Internet. C'est rarement le cas, la plupart des établissements offrant du Wi-Fi gratuit indiquent souvent que le personnel n'est pas compétent pour vous aider.
wired
Des bonnes vieilles prises RJ45 sont disponibles. Je n'en ai pas encore rencontré.

Si vous définissez internet_access=wlan;terminal, cela signifie qu'un réseau sans-fil est disponible ainsi que des ordinateurs, ce qui est maintenant souvent le cas dans les médiathèques par exemple. N'utilisez internet_access=no que à des endroits où on pourrait couramment s'attendre à un accès Internet ; dans une médiathèque par exemple, où un accès Internet est courant, ça serait pertinent, mais il n'est pas utile de dire qu'un

internet_access:fee

On s'en sert pour indiquer si l'accès à Internet est payant. Cela accepte trois valeurs : yes, no, ou customers.

yes
Le réseau est payant ; n'importe qui peut demander à payer uniquement pour l'accès à Internet.
no
Le réseau est gratuit pour tout le monde.
customers
Le réseau est gratuit pour les clients, mais n'importe qui peut demander à payer uniquement pour l'accès à Internet.

Je reviendrai sur l'importance de ces règles un peu plus bas.

internet_access:fee:amount

Un tag peu courant mais qui semble recommandé pour indiquer le tarif d'un réseau payant. Le format à suivre est le même que pour le tag charge : Le nombre, avec un point si nécessaire pour les décimales, suivi par la devise en suivant ISO 4217. Par exemple 2.50 EUR. S'il y a un tarif en fonction de la durée d'utilisation, par exemple 2.50€ par heure, on ajoute un slash (/) et l'unité de temps non abrégée, donc 2.50 EUR/hour. Il est assez important de respecter ce format si on veut que les applications de carte puissent entre autres filtrer par tarif ou juste l'afficher correctement.

internet_access:ssid

Quand on a indiqué internet_access=wlan, on peut aussi spécifier l'ESSID de ce réseau. Pour un restaurant McDonald's par exemple on pourrait mettre en valeur McDonald's France.

internet_access:operator

Le tag général operator permet d'indiquer qui fait fonctionner un établissement. Quand on le met sous internet_access, il signifie celui qui gère l'accès à Internet spécifiquement. Par exemple, certains lieux publics ont recours à des entreprises externes pour gérer l'accès, comme Wifirst ou Wifiz.

On ne doit utiliser ce tag que lorsque l'opérateur du bâtiment est différent de l'opérateur du réseau ; si ce sont les mêmes on utilise juste operator tout court.

internet_access:description

Un tag plus générique pour des notes concernant l'accès à Internet. Ce tag ne semble pas officiellement approuvé, mais il est quand même recommandé quand il y a absolument besoin d'ajouter des détails sur l'accès Internet.

Règles de cartographie

Il est assez important de savoir quels réseaux exactement indiquer et lesquels ignorer. Cartographier tous les réseaux Wi-Fi peut causer quelques problèmes éthiques ; ça pourrait par exemple aider quelqu'un à faire du doxxing. C'est pour ça que des grandes bases de données de réseaux utilisées pour faciliter la localisation des téléphones sans GPS, comme le Mozilla Location Service, ne sont pas ouvertes au public, et que nous ne publierons pas non plus directement les données résultant de nos scans.

Absolument n'importe qui doit pouvoir accéder d'une quelconque manière au réseau (même en payant) ; sinon, c'est considéré comme un réseau privé.

Payer pour autre chose que l'accès à Internet ne compte pas comme payer pour accéder à Internet ; si on doit par exemple acheter à manger pour avoir le mot de passe du réseau Wi-Fi sur un ticket de caisse, ça ne compte pas comme un réseau Wi-Fi payant et ne devrait pas être cartographié.

L'un des réseaux les plus couramment erronément cartographiés est Eduroam, un réseau destiné aux étudiants dans les universités, avec plus de 360 objets tagués. Il n'est cependant pas considéré comme un réseau public, puisqu'il n'est pas possible d'y accéder si on n'est pas étudiant ou membre du personnel de l'université, ni de payer pour y accéder.

Un autre aspect important quand on travaille avec des scans de réseaux Wi-Fi comme je le fais, c'est que le simple fait de savoir qu'un réseau est ouvert ne signifie pas qu'il est public : cela indique seulement qu'il n'y a pas besoin de mot de passe pour joindre le réseau, mais peut-être qu'il en faut un pour accéder à Internet. Il n'y a aura seulement aucun chiffrement sur les ondes Wi-Fi. Je pense notamment aux réseaux des hôtels ; certains demandent un numéro de chambre et sont donc privés, d'autres demandent juste d'accepter les conditions d'utilisation et sont donc publics.

Transférer les réseaux vers OsmAnd

Pour pouvoir tester correctement les réseaux donc, je dois ressortir et repasser devant des réseaux que je connais déjà. Pour ce faire, je vais utiliser open_map, une vue SQL qu'on a créé précédemment et qui m'affiche tous les réseaux ouverts qu'on a pu trouver. Je vais passer sur chaque réseau que je trouve, parfois en filtrant par exemple pour n'avoir que ceux qui ont été scannés très récemment pour ne pas repasser toujours sur les mêmes, et pour ceux qui m'intéressent, je vais les mettre sur OsmAnd sur mon téléphone.

Je pourrais probablement faire des exports GPX, KML ou GeoJSON depuis PostGIS ou autre, mais je fais déjà pas mal de travail de vérification en amont et il est finalement plus simple de saisir manuellement les points. Par exemple, avec le nom de certains réseaux Wi-Fi, j'arrive à deviner quel est le bon bâtiment. Vu que j'ai activé le plugin de contribution OSM sur OsmAnd, si je peux enregistrer en avance dans mes favoris le bâtiment que je devrai taguer au lieu d'avoir un point arbitraire, je pourrai faire mes modifications sur la carte depuis mon téléphone, ce qui me fera gagner du temps.

Comme utiliser un téléphone et un ordinateur en même temps peut être fastidieux, j'utilise comme intermédiaire scrcpy, un outil qui permet d'afficher l'écran de son téléphone Android sur son ordinateur et le contrôler à distance. Ça marche plutôt bien, et ça m'évite de bouger beaucoup mes mains pour pas grand chose, garder la tête baissée sur l'écran du téléphone et donc me faire mal à la nuque, devoir réajuster mes yeux à chaque écran quand je change, etc.

L'écran de mon téléphone via scrcpy et la visualisation de pgAdmin côte à côte

Enquête sur place

Une fois tout ça prêt, je n'ai plus qu'à ressortir, activer mon ESP et l'enregistreur série pour en profiter et collecter toujours plus de données, et utiliser OsmAnd pour rejoindre chaque point d'accès ouvert qui m'intéresse. Je peux ensuite essayer de m'y connecter comme un humain normal, et de voir s'il y a un portail me demandant d'accepter des conditions d'utilisation ou de taper un mot de passe.

Un ThinkPad X201 Tablet en mode tablette connecté à une base de données via pgAdmin
Si je n'ai pas envie d'utiliser OsmAnd, je peux toujours juste accéder directement à notre base de données…

Si un portail me demande seulement d'accepter des conditions et rien d'autre, alors c'est public. S'il n'y a pas de portail du tout, je considérerai que le réseau est public seulement si je ne vois pas d'autre réseau privé. S'il faut s'inscrire, mais que l'inscription ne nécessite pas de code particulier comme un numéro de chambre d'hôtel, c'est public, même quand c'est payant.

Je vais aussi essayer de mener l'enquête. Pour certains points d'accès qui ont des noms très originaux comme wifi gratuit, je vais devoir essayer de deviner quel est l'exact bâtiment concerné. Ça peut passer par continuellement surveiller le RSSI sur mon téléphone ou mon ordinateur pour essayer de me rapprocher le plus possible du routeur, ou plus souvent juste en regardant les conditions d'utilisation avant d'accepter. Quand le réseau est géré par une entreprise externe comme Wifiz ou Wifirst, je peux parfois aller sur leur propre site et consulter leur carte des réseaux Wi-Fi qu'ils proposent pour mieux comprendre. Mais parfois, je ne sais juste pas à qui appartient le réseau, et je prends note de ça dans notre base de données pour peut-être pouvoir revenir avec plus de détails, ou faire d'autres scans pour avoir une position plus précise.

Il n'est actuellement pas précisé sur OpenStreetMap le comportement qu'il faut adopter dans une situation qu'on voit occasionnellement dans certains restaurants : un réseau Wi-Fi protégé en WEP ou WPA et dont le mot de passe est affiché à l'intérieur du restaurant. Est-ce considéré comme un réseau public ? Ou seulement quand ledit mot de passe est visible par la vitrine du restaurant peut-être ? Je veux dire, n'importe qui peut accéder au réseau sans payer juste en lisant la pancarte. Pour le moment, j'ai décidé de rester prudent et de ne rien mettre. Je ne m'attends pas vraiment à avoir de réponse intéressante même si je pose la question, car beaucoup de contributeurs expérimentés d'OSM ne se concentrent plus sur des futilités telles que des petits tags, alors que ce sont ces détails qui font d'OSM une carte bien plus intéressante que Google Maps par exemple.

Résultats

J'en suis actuellement à 65 points d'accès Wi-Fi ouverts identifiés sur Grenoble. Ce n'est pas énorme, surtout en comparaison avec les 30 000 points d'accès qu'on a pu scanner, et ce pour moult raisons : nous en sommes encore à une étape où on préfère se concentrer sur l'acquisition de données, et aller tester un à un chaque point d'accès est encore une tâche assez laborieuse. Automatiser l'accès aux réseaux ouverts pour détecter s'ils demandent une inscription serait complexe en raison du temps nécessaire pour cette connexion (les réseaux pouvant être plutôt lents), et de l'inconsistence totale des processus d'inscription ; pour certains, il faut cliquer sur plusieurs pages, pour d'autres il faut attendre des redirections pendant plusieurs dizaines de secondes, etc.

J'ai notamment ajouté des points d'accès sur :

Au cours de mes sorties pour ces réseaux publics, j'ai aussi pu mettre à jour d'autres parties de la carte, comme des bancs ou des fontaines d'eau potable, nettoyer des objets dupliqués qui ont été ajoutés automatiquement, ajouter des horaires d'ouverture, et surtout j'ai pu sortir et aller me promener à des endroits où je ne serai pas forcément allé. J'ai tendance à être anxieux en sortant seul pour me promener sans avoir de vrai but, donc avoir des dizaines de points sur une carte à visiter, ça m'aide à me focaliser et à aller mieux. Comme quoi, les ondes électromagnétiques, ça a des effets thérapeutiques en fait !


Commentaires

Il n'y a pour l'instant aucun commentaire. Soyez le premier !