zveriu / hackaton_ondes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Energy data hack

Challenge 1 : Interception des ondes radios sur les capteurs d’énergies

Hacker le login et le mdp sur une interception d'ondes radios.

Equipes

  • Maxence Brugères (Telecom Paris & Sciences Po) : Classification random forest, outil de séparation de trames en touche, outil de production de mots
  • Clément Bernard (Telecom Paris & Polytechnique Montréal) : Classification GRU, MLP, outil de séparation des touches du login et du mot de passe, mco du répo Github
  • Inès Benito (ENSTA Bretagne) : Classification via d’autre modèle (Logistic regression, KNN), recherches théoriques et appliquées pour entrainer des modèles avec des loss custom, synthèse des travaux pour le rapport, data visualisation
  • Corentin Lestrat (ENSTA Bretagne) : État de l’art des exploitations de SPC avec du machine learning, recherche biblio sur des sujets divers en support sachant qu’il n’avait aucune formation technique en machine learning, social engineering

Vidéo

Voici le lien vers un résumé de 3 minutes de notre projet :

https://www.youtube.com/watch?v=0zF37YekAM4

Installation

Utiliser un 'venv' ou un environnement 'conda', puis récupérer les versions :

pip install -r requirements.txt

Etudes des données

  • Plot de la distribution de chaque pic pour chacun des caractères
Box plot

La distribution de certains pics pourraient permettre d'identifier un caractère

Entrainement des modèles

  • Utilisation de MLP, GRU et Random Forest pour la classification multi-classe (42 classes)
Accuracy F1 score

Les modèles MLP et GRU sont plus précis que Random Forest sur les données d'entrainement et de validation.

  • Utilisation de MLP et GRU pour données regroupées en groupe de trames : 1, 5, 10, 25, 100 et 200
MLP GRU

Plus on regroupe par trame, et meilleure est l'accuracy.

  • Utilisation de MLP et GRU pour données regroupées en groupe de trames avec ajout de bruit sur les données d'entrainement
MLP GRU

Les regroupements par trame avec bruit est efficace pour un regroupement faible, et pas pour un groupe de trames élevé

Prédictions sur l'ensemble de test : les données d'un utilisateur

  • Prédictions trame par trame, avec les probabilités d'être dans un label :
MLP GRU Random Forest

Les modèles MLP et GRU sont plus précis et donc ont du mal à reconnaitre les différences lorsque plusieurs touches sont appuyés en même temps. Random Forest est moins bon et donc est plus ambigue : il peut donc voit lorsque deux touches sont appuyées en même temps

  • Prédictions par groupe de trames sans bruit, avec GRU par exemple :
GRU

Plus on regroupe par trame, et plus on réduit le bruit, mais on perd de la précision et n'arrivons pas à distinguer entre plusieurs touches pressées en même temps.

  • Prédictions par groupe de trames avec bruit, avec GRU par exemple :
GRU avec bruit
  • On retient finalement que la prédiction avec Random Forest trame par trame car le modèle classifie moins bien mais donne plus de données sur les probabilités de chaque caractère.

Décodage du login et mot de passe

  • On utilise la matrice de confusion sur l'ensemble de validation de Random forest pour prédire les caractères sur plusieurs trames (minimisation de la distance entre les lignes de la matrice de confusion et les probabilités de prédiction de Random Forest).
Matrice de confusion Prédictions de Random Forest
  • Identification des trames appartenant à une même touche pressée. Utilisation d'une fenêtre glissante sur 30 trames pour lisser les probabilités, puis on moyenne la distance euclidienne entre chacun des vecteurs de probabilités.
Identification des trames d'une même touche
  • Utilisation d'un algorithme de clustering pour différencier 3 groupes : 1) déverouillage 2) login et 3) mot de passe.
Clustering en 3 groupes 3 groupes obtenus
  • Distance par rapport aux touches connues (avec la matrice de confusion) pour chaque touche pressée
Clustering en 3 groupes
  • Identification des caractères : on considère pour chaque groupe de trames les caractères les plus probables.
Prédictions des caractères

Résultats

  • La prédiction des logins et de mot de passe possible se trouve dans :
  • predictions Il y a un fichier login.csv et mdp.csv avec les prédictions des logins et des mdp les plus probables.
  • Nous pensons que le login est le suivant : DGAMI et le mot de passe : hackaton2021

Dépo

  • Hackaton : Fichiers avec les données du challenge
  • images : Images utilisées dans le README
  • models_simple : Les modèles enregistrés lors de training
  • models_noise : Les modèles entrainés avec du bruit
  • models_stack : Les modèles entrainés sans bruit et par groupement de trames
  • notebook : Dossier avec les notebooks utilisés
  • prédictions : Les prédictions du login et mot de passe
  • python : Fichiers python utilisés
  • Hackaton.zip : Fichier zip de Hackaton
  • models.zip: Fichier zip de models_simple
  • models_noise.zip: Fichier zip de models_noise
  • models_stack.zip: Fichier zip de models_stack
  • python.zip: Fichier zip de python
  • rapport : Dossier avec le rapport final
  • requirements.txt : Fichier avec les requirements sous format txt

About


Languages

Language:Jupyter Notebook 99.6%Language:Python 0.4%