IMA3/IMA4 2018/2020 P12
Sommaire
- 1 I. Présentation générale
- 2 II. Analyse du projet
- 3 III. Préparation du projet
- 4 IV. Réalisation du Projet
I. Présentation générale
Description
Trois périphériques sont envisagés :
- un clavier
- une souris
- et une clef USB
Chacun des périphériques sera construit autour d'un ATMEGA16u2 gérant le protocole USB.
Le clavier aura pour fonction de gérer les entrées et quelques LED.
La fonctionnalité supplémentaire consiste à enregistrer des touches tapées par l'utilisateur. Le contenu de cet historique sera stocké dans la mémoire interne du clavier, et pourra être vidé ou supprimé via une combinaison de touches.
La souris contrôlera le déplacement du curseur et possédera des boutons.
Elle contiendra également un mode "Berserk" qui cliquera aléatoirement sur l'écran. Ce mode sera déclenchable à distance.
Enfin, la clef USB sera utilisée comme lecteur de carte SD.
En cas d'inactivité prolongée, elle émulera un clavier qui injectera une séquence d’actions préalablement enregistrée afin de télécharger un logiciel de surveillance sur le PC auquel elle est connectée.
Objectifs
Notre objectif est de réaliser ces périphériques USB artisanaux avec les fonctionnalités supplémentaires décrites.
II. Analyse du projet
Analyse du premier concurrent
Le premier concurrent, celui du clavier, est représenté par les produits de type Keylogger.
Voici un des principaux concurrents de ce marché :
Nom du produit : KeyGrabber USB
Société : Keelog
Description générale:
Ce périphérique USB se connecte entre le port USB de l’ordinateur et celui du clavier. Il enregistre l’activité du clavier dans une mémoire interne. Les données peuvent être récupérées ou effacées avec la bonne combinaison de touches.
Caractéristiques :
Sa longueur est de 38mm. Elle a une capacité de stockage de 16Mo ou 8Go.
Les données présentes sont encryptées par un cryptage 128 bits, unique à chaque produit.
Son prix est 43.99$ pour la version 16Mo ou 83,99$ pour la version 8Go.
Analyse du second concurrent
Le second concurrent est celui de la clé USB.
Nom : USB RUBBER DUCKY
Société :hak5
Description général:
Il s'agit d'un périphérique USB reconnu en tant que clavier. Il injecte des instructions présentes sur la carte micro SD.
Il est facile d'utilisation car il suffit d'écrire les instructions dans un fichier texte, dans un langage spécifique.
Son prix est de 44,99$.
Positionnement par rapport à l'existant
En ce qui concerne le clavier, il aura à peu près les mêmes caractéristiques techniques que le KeyGrabber. La différence majeure réside dans la discrétion de celui-ci. En effet, le keygrabber est une clef USB et il est facilement repérable. Cela implique de le cacher à l'arrière de la tour.
Or, notre dispositif Keylogger sera directement implémentée dans le clavier. Ainsi il restera inaperçu depuis l'extérieur, sur n'importe quelle machine.
Ensuite, notre clé USB diffère de l'USB RUBBER DUCKY car elle sera en premier lieu utilisée comme lecteur de carte SD. On pourra donc s'en servir de stockage alors que chez le concurrent la carte micro SD sert de stockage pour les instructions à envoyer au PC.
Ce stockage rend donc moins suspect notre clé, qui pourra lancer le téléchargement du logiciel de surveillance en cas d'inactivité.
Scénario d'usage du produit ou du concept envisagé
Prenons des parents qui laissent leurs enfants utilisés l'ordinateur familial pour leur devoir maison. Mais il aimeraient vérifier qu'ils ne fassent pas n'importe quoi et qu'ils ne jouent pas sans rester en permanence derrière eux. Dans ce cadre, ils pourraient utilisés nos périphériques. Le clavier, leur permettrait de récupérer les données tapées et de vérifier que celles-ci correspondent bien au travail qu'ils avaient à réaliser. Afin de récupéré les données même si ils ne sont pas chez eux, ils peuvent utilisés la clé pour qu'elle télécharge un logiciel, qui tous les certains temps enregistre ce qu'il a été fait et l'envoie sur leur adresse mail. Quand à la souris, elle pourrait si en passant dans le bureau ils s’aperçoivent que les enfants sont en train de jouer, de les en dissuader en activant le mode berserk qui rendrait la souris momentanément inutilisable.
Réponse à la question difficile
Comment activer les fonctionnalités cachées des différents périphériques ?
Pour le clavier, les fonctionnalités seront activées et désactivées à l'aide d'une combinaison de touches prédéfinies :
combinaison 1 : activation de l’enregistrement des touches
combinaison 2 : désactivation de l'enregistrement des touches
combinaison 3 : renvoie l'historique des touches pressées
combinaison 4 : suppression de la mémoire
Au sujet de la clé, le périphérique va changer son mode de fonctionnement pour devenir un HID (clavier) après une certaine durée d'inactivité de celui-ci. Voir si nous pouvons détecter une mise en veille de Windows.
L'activation de la fonctionnalité de la souris sera faite par le biais d'une télécommande infrarouge. La coque de la souris possèdera une partie laissant passer les infrarouges.
Bibliographie et webographie
- clavier
Concurrent :
Nom du produit :KeyGrabber USB
Société : keelog
URL : http://www.keelog.com/fr/usb-keylogger/
- la clé
Concurrent :
Nom : USB RUBBER DUCKY
Société :hak5
URL : https://shop.hak5.org/products/usb-rubber-ducky-deluxe
III. Préparation du projet
3.1 Cahier des charges du groupe
Pour chacun des périphériques nous allons utiliser un ATMega16 (u2 ou u4) combiné à la bibliothèque LUFA.
3.2 Cahier des charges des équipes
Clavier
Création d'un clavier physique avec sa mémoire interne, son microcontrôleur, et son driver.
Ce clavier doit permettre :
- d'utiliser le clavier normalement.
- d'enregistrer les entrées au clavier.
- de disposer de différentes fonctions autour de l'enregistrement des entrées clavier, qui seront activées via une combinaison de touches :
- de récupérer les entrées clavier dans un document texte .
- de vider le stockage des entrées clavier.
- activer et désactiver le stockage des entrées clavier.
Clé USB
Création d'un périphérique du stockage USB doté d'un microcontrôleur.
Cette clé USB doit :
- pouvoir servir de stockage de masse
- en cas d'inactivité prolongée, changer son statut auprès de l'ordinateur en clavier afin de lancer l'installation d'un logiciel (espion)
3.3 Choix techniques : matériel et logiciel
ATMega16 + bibliothèque LUFA
Clavier
Nous allons partir d'un clavier physique déjà existant. Mais nous n'excluons pas l'idée de créer notre propre clavier en cas de bonne avancée du projet.
Clé USB
Nous allons devoir créer cette clé de taille raisonnable, pour éviter d'éveiller des soupçons.
3.4 Liste des tâches à effectuer
- coté documentation
- maitriser le protocole USB
- maitriser l'utilisation de l'ATMega 16 U2
afin d'être en mesure de créer nos composants
Clavier
Clé USB
3.5 Calendrier prévisionnel
Le calendrier prévisionnel peut se concrétiser sous la forme d'un diagramme de GANTT.
Clavier
Clé USB
IV. Réalisation du Projet
Projet S6
Eventuellement créer des sous-pages par équipe avec le compte-rendu des réunions de groupe sur cette page principale.
Semaine 4
- Nous remarquons que nos deux projets (clé, clavier) sont en fait assez semblables car tous deux devront se comporter comme un clavier, et tous deux disposerons d'un dispositif de stockage.
- Recherche des commandes de téléchargement et ouverture d'un fichier sous Windows.
- Recherche/récupération du logiciel espion Iwantsoft Free Keylogger. Il récupère entre autres les recherches faites sur un navigateur, prend des captures d'écran et des photos de l'utilisateur via la webcam (si accessible).
- Téléchargement de la librairie Keyboard.h et essais d'implantations. Cette librairie permet à la carte arduino de se faire passer pour un clavier et d'envoyer des informations à l'ordinateur comme un clavier). Pour effectuer nos premiers essai avec les cartes arduino, elle est donc d'un importance capitale.
Semaine 5
- Pour implanter la librairie Keyboard.h, il suffit que arduino IDE soit à jour.
- Premiers test avec la-dite librairie.
- Recherches sur l'utilisation de la bibliothèque LUFA
Semaine 6
- Premier Accomplissement avec l'Arduino : on a réussit un KeyboardLogOut sur Windows 8.1.
- Nous poursuivons nos essais dans le but de faire télécharger et exécuter un fichier mp3.
- Suite des recherches sur LUFA, en parallèle recherches sur le protocole USB
Semaine 7
- création d'une fonction permettant une lecture plus aisée du code (void keyboardprint(string);). Après quelques tests nous remarquons des erreur notamment sur les '@', '#', '-', '"'. Ces erreurs étaient de 2 types :
- '"' et '-': le document wordpad sur lequel on avait enregistré les commandes à utilisé dans le shell n'avait pas enregistré ces caractères comme des ascii 7bits mais comme des utf8 stockés sur 2 octets (ou plus).
- '@' et '#': une incohérence entre les les macros de la librairie keyboard.h et celles de l'interface clavier de l'ordinateur.
Semaine 8
Nous n'avons pas réussi grand chose cette semaine. Nous avons seulement appris que le caractère '\\' était introuvable. Nous ne savons pas encore si cela vient de l'ordinateur ou de la librairie Arduino Keyboard.
Semaine 9
- le problème du backslash est résolu, via alt+92.
- Un code Arduino a était crée il utilise le Powershell de Windows afin de télécharger et d'ouvrir une musique.Le code à était par la suite testé sur un pc Windows 8.1 .Le code marche mais ne prend pas en compte la configuration du clavier (obligation de passé le clavier en mode anglais).
Nous n’avons pas trouvé de solution afin de connaitre l'activité du pc , (même la communication série avec le pc ne nous donne pas les informations voulues ).
Semaine 10
Pour l’équipe du clavier: utilisation de l’Arduino UNO , modification du pilote (utilisation du mode DFU) afin que l'OS reconnaisse l’Arduino en tant que Atmega16u2, et par la suite utilisation de la bibliothèque LUFA. Pour l'équipe clé USB : Après réflexion afin de pouvoir utiliser la clé en tant que HID (clavier) ou périphérique de stokage. La seul solution que nous avons trouvé tout en continuant à utiliser l’Arduino Leonardo nous devons faire un Switch physique, car l'interface que propose l’Arduino ne correspond pas à nos besoins (nous souhaitons une ouverture "normal" d'un périphérique , et non l’utilisation de code Arduino pour la gestion de stockage) .