Etude des panneaux d'affichage de places de parking : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Conclusion)
Ligne 1 : Ligne 1 :
 +
[[Catégorie:Projets]]
 +
[[Catégorie:Projets Réseaux Mobiles et Avancés]]
 +
 
{{
 
{{
 
Projet Étudiant
 
Projet Étudiant

Version du 9 avril 2018 à 09:48


Project schedule.png
Titre du projet Etude des panneaux d'affichage de places de parking
Cadre Ensimag

Équipe Pierre Le Pailleur, Marie-Alix Juffard
Encadrants Franck Rousseau


Introduction

Panneau à jalonnement dynamique

Dans le cadre du projet Réseaux mobiles et avancés, nous avons décidé de nous intéresser aux panneaux de parkings, aussi appelés panneaux à jalonnement dynamique.

Nous sommes partis d'un projet de l'année dernière [1] portant sur la rétro-ingénierie de signaux radio.

Le but de notre projet était d'écouter les signaux envoyés aux panneaux à jalonnement dynamique, de les comprendre et pourquoi pas d'en forger de nouveaux pour modifier les affichages des panneaux, à l'image d'un hack déjà réalisé en 2015 [2]

Matériels et outils

Nous avons utilisé le même matériel que le projet dont nous nous sommes inspirés, vous trouverez une description complète et détaillée ici : [3]

Matériels

Nous avons utilisé une radio logicielle (ou SDR pour Software Defined Radio en anglais). Le principe d'une telle radio est de déléguer le traitement du signal à un logiciel au lieu de le réaliser de manière électronique. Ici, nous avons utilisé la RTL qui est un tuner DVB-T TV branchable par clef USB.

  • RTL-SDR
  • Antenne

Outils logiciels

Nous avons utilisé principalement un logiciel libre : Gqrx. Ce logiciel implémente de manière logicielle les composants électroniques nécessaires au traitement du signal. Gqrx est basé sur GNU Radio mais il est plus facile d'utilisation que ce dernier. L'utilisation de ces deux logiciels est détaillée ici : [4].

De plus, nous avons utilisé Audacity pour la visualisation des fichiers .wav obtenus grâce au logiciel précédemment cité.

  • gqrx
  • audacity
  • Scripts réalisés en Python

Protocole de réalisation des mesures

Enregistrement des signaux

Les mesures ont été réalisée Porte de France à Grenoble, en combinant écoute des signaux radio avec le logiciel gqrx, la clé usb RTL-SDR et l'antenne, et observation des 5 panneaux à jalonnement dynamique.


Détermination de la fréquence d'émission des signaux :

  • Observation du type de modification des valeurs des tableaux (modification périodique) puis de la période de modification (1 min 25)
  • Écoute sur les différentes bandes de fréquences typiques de ce genre d'émission, recherche d'un signal envoyé périodiquement, avec une période inférieure à celle de modification des panneaux


Enregistrement des mesures :

  • Utilisation du logiciel gqrx pour enregistrer les signaux, ainsi que d'un logiciel de traitement de texte pour noter les changements de valeur des tableaux
  • Protocole pour un ensemble de mesures : enregistrement de tous les signaux entre deux changements de valeur des tableaux puis notation des anciennes et nouvelles valeurs

Observations

  • Fréquence d’affichage régulière sur les panneaux toutes les 1min25
  • Fréquence émission: 867,9 MHz
  • Signaux reçu aussi de manière régulière
Exemple de régularité dans les signaux reçus

Hypothèses:

  • Changement de l’affichage à la réception d’une trame --> hypothèse invalidée, le changement de l'affichage est périodique
  • Une trame par panneau dont la valeur change --> hypothèse invalidée, on peut recevoir plusieurs trames avant modification des valeurs
  • Émission dans toute la ville --> hypothèse validée, on capte le même signal depuis l'Ensimag et d'autres points du centre-ville
  • Les valeurs des 5 panneaux se trouvent dans chaque trame --> les trames sont courtes pour tout contenir...
  • Signal émis en Manchester --> étude du signal en Manchester differential
  • Données transmises en clair / chiffrement XOR
  • Valeurs des panneaux en binaire ou en ascii

Décisions prises pour l'exploitation des trames :

  • Différents essais Manchester/Manchester differential
  • Tests en bruteforce pour savoir si les données son transmises en clair ou en XOR
  • Tests pour savoir si les valeurs des panneaux sont transmises en binaire ou en ascii
  • Renvoi des trames reçues pour voir si les valeurs des panneaux changent (finalement non testé, pas de matériel pour émettre)

Traitement et analyse des signaux, mode d'emploi

Pré-traitement

Une fois les signaux originaux obtenus, à l'aide d'audacity, nous commençons par isoler une trame dans le signal et nous suggérons de la renommer à l'aide de la fonction export audio avec une norme qui permet de garder l'ordre chronologique telle que [numTrame]P[numPanneau].wav.

Voici à quoi ressemble alors les signaux :

Exemple de signal récupéré

Afin d’écrêter ce signal, nous executons le script python wav_to_rec_signal sur la trame isolée :

 $python wav_to_rec_signal.py [numTrame]P[numPanneau].wav -o [numTrame]P[numPanneau]_a.wav

Voilà à quoi ressemble alors les signaux :

Exemple de signal traité

Il est souvent nécessaire d'effectuer un traitement manuel pour le début et la fin du signal afin de pouvoir ajuster la propreté du signal pour la suite.

Manchester / Manchester differential

Nous pouvons générer les fichiers textes contenant les octets décodés. Pour cela nous utilisons decode_wav.py pour décoder les trames façon Manchester ou decoder_differential_manchester.py pour du Manchester differential :

 $python decode_wav.py [numTrame]P[numPanneau]_a.wav > P[numPanneau]res[numTrame].txt

Le fonctionnement du Manchester est détaillé dans le projet dont celui ci prend la suite, mais pour le résumer, il s'agit d'assimiler les transitions à un bit : 0 -> 1 = 1 et 1 -> 0 = 0

Tandis que dans Manchester, nous considérons la présence (pour 1)/ absence (pour 0) de transition, comme suivant :

Récupération des bits

Décryptage des octets obtenus

Comme nous faisions toujours face à beaucoup de transitions même après avoir récupéré les octets à travers l’hypothèse Manchester differential, nous avons essayer de chercher brutalement si nous pouvions trouver à l'aide d'un XOR si nous pouvions trouver le code ascii ou les valeurs des panneaux avec des entiers, dans les fichiers textes contenant les octets (voir la section Scripts).

Résultats et comparaisons des trames obtenues

En analysant les différentes trames obtenues et en les comparant avec les valeurs des panneaux au moment des mesures, on obtient ce genre de résultats, en hexadécimal :

Comparaison de trames et données attendues

Scripts et données récupérées

Selon les cas d'utilisation, il faudra mettre à jour / adapter les scripts suivants :

- wav_to_rec_signal.py : script récupéré d'un groupe de l'année précédente pour traiter les signaux et les rendre facilement exploitable.

- decode_wav.py : pour décoder des signaux exploitables façon Manchester

- decode_differential_manchester.py : idem mais en Manchester Differential, la partie qui change est la suivante, dans la boucle de décodage :

- auto_generate_octets.py : pour simplifier la création des fichiers txt contenant les octets seulement, en automatisant l'exécution du script pour décoder les signaux exploitables.

- move_octets.py : pour simplifier un décalage de bit pour essayer différentes combinaisons d'octets lors de la phase de compréhension des messages.

- bruteforce.py : Une des versions pour essayer de retrouver des nombres / digit en ascii ou pas, à base de xor.

- analyse_octets.py : Une des versions utilisées pour analyser et comparer les octets récupérés après la chaine de traitement.

Les archives des trois différents jeux de mesures réalisés, contenant les originaux, les signaux pré-traités, traités et les résultats d'analyse étant volumineux, vous pouvez nous contacter afin de les récupérer ou nous poser des questions si vous désirez poursuivre ce travail :

pierre.le-pailleur@grenoble-inp.fr

marie-alix.juffard@grenoble-inp.fr

Conclusion

Nous n'avons pas réussi à déchiffrer les signaux enregistrés dans le temps imparti. Cependant, nous avons exploité de nombreuses pistes et le travail est bien avancé. Les étudiants qui souhaiteraient reprendre ce projet pour le mener à terme peuvent nous contacter par mail, nous répondrons avec plaisir à leurs questions.