L’objectif est de géolocaliser les points d’accès Wi-Fi et les clients qui y sont connectés.
Afin de trianguler les positions des appareils, un drone permettra de relever, à différentes localisations géographiques, l’intensité des signaux Wi-Fi.
Camille Monière – Elec
Remi Fumeron – Elec
Mathieu Loubens – Elec
Julien Branlant – Info
Wandrille Serard – Info
Contenus de la page
Scénario nominal souhaité
1. Définition d’un trajet sur une carte satellite que devra suivre le drone
2. Pilotage automatique du drone et détection des appareils Wi-Fi (affichage des SSID en direct)
3. Une fois le drone posé, possibilité d’afficher la géolocalisation des appareils Wi-Fi détectés
-> Il devra être possible de donner les consignes au drone et de lire les résultats sur tout type d’appareil (pc, tablette, …)
Dépot
https://gitlab.com/oUJulienUo/makers.git
NB: Nous contacter pour avoir les droits d’accès en lecture
Description de son contenu :
– www/ => Interface web : html, css, js, php
– scanner/ => Scanner Wi-Fi (clients / points d’accès) : codé en python à l’aide le la librairie ‘Scapy’. Triangulation des signaux (idée générale -> recherche du point d’intersection commun entre 3 cercles)
– drone/ => Contrôle du drone depuis un ordinateur à l’aide de la librairie ‘libardrone’ (src : https://github.com/venthur/python-ardrone)
– tools/ => Script python qui envoi des paquets de désauthentification
– auto_wifi.sh => script qui s’exécute toutes les minutes sur la Raspberry : cherche à connecter ‘wlan0’ à un point d’accès internet, cherche à connecter ‘wlan2’ au drone, essaye de passer ‘wlan1’ en mode moniteur.
– makefile => permet de lancer le serveur web (‘$ make’).
Concept Général
Répartition du travail
- | Les Infos |
– Définition du trajet par vue satellite
– Scan des réseaux sans fil
– Géolocalisation par triangulation
– Interface / serveur Web
– Paramétrage de la Raspberry Pi / scripts (cf. crontab)
- | Les Élecs |
– Asservissement du drone
Réalisation
- Définition d’un trajet
La première étape est de définir le trajet que devra parcourir de manière autonome le drone. Il suffit de placer des marqueurs depuis une carte satellite, par lesquels le drone devra passer.
- Scan des réseaux
Le scan des réseaux consiste en l’analyse des trames Wi-Fi qui respectent le protocole 802.11. On arrive facilement à identifier les points d’accès du fait de l’émission de trames spécifiques: ‘probe response’ & ‘beacons’. Un client est identifiable via des ‘probes requests’. Les trames sont manipulées à l’aide de la bibliothèque python « Scapy ».
Une fois un client ou un point d’accès identifié, il suffit de relever les bonnes valeurs pour chacun des champs souhaités dans la trame (canal, cryptage, intensité du signal, …).
Afin de détecter plus rapidement les points d’accès, la Raspberry envoi en broadcast dans un thread des ‘probes requests’ (elle demande aux points d’accès environnant de s’annoncer). À la réception de ce type de trame, les points d’accès répondent systématiquement par un ‘probe response’.
- Pilotage du drone
Une librairie python ‘libardrone’ permet de communiquer avec le drone. L’algorithme d’asservissement n’a pas été implémenté.
- Géolocalisation
Lors du parcours du trajet, le drone relève des points géographiques associés avec l’intensité de signaux Wi-Fi appartenant à des clients ou points d’accès. Avec un nombre suffisant de relevés significatifs, nous triangulons le signal, en cherchant l’intersection commune entre tous les cercles formés par les intensités des signaux pour des géolocalisations différentes.
La conversion des dBm (intensité d’un signal) en mètres a été réalisé grâce à la détermination d’une équation obtenue par régression linéaire sur un modèle logarithmique. Le résultat est issue de valeurs expérimentales.
Résultat
Difficultés ou problèmes rencontrés
– Le GPS donne une localisation géographique +/- 5/10 mètres (parfois plus). Manque de précision => délicat de faire des tests de pilotage du drone avec des coordonnées GPS erronées.
– Le GPS met beaucoup de temps pour s’initialiser et obtenir une localisation géographique valide (entre 10-30 minutes au lieu des 2 minutes selon la doc du constructeur).
– l’asservissement du drone a aussi pose problème, notamment sur la récupération des données des différents capteur déjà présent sur le drone.
Évolution possible
– Décentraliser le serveur Web sur une plateforme externe: le drone n’aura plus alors qu’à transférer sur le serveur les données reçues.
– Proposer une carte satellite ‘offline’ / transformer la carte réseau ‘wlan0’ de la Raspberry en point d’accès
Liste des composants
– Raspberry Pi 3 : https://www.kubii.fr/raspberry-pi-3-2-et-b/1628-raspberry-pi-3-modele-b-1-gb-kubii-640522710850.html
– Carte Panda PAUO5 : https://www.amazon.com/Panda-300Mbps-Wireless-USB-Adapter/dp/B00EQT0YK2
– Carte Wi-Fi : http://www.conrad.fr/ce/fr/product/409972/Cl-WiFi-USB-20-Joy-it-Raspberry-Pi-150-Mos?ref=searchDetail
– GPS : http://fr.farnell.com/microstack/microstack-gps/carte-add-on-l80-gps-raspberry/dp/2434228?st=gps%20raspberry