Keylogger ==== L'idée, c'est de faire un dispositif qui se branche entre un clavier et un ordinateur (pour la vieille interface PS/2, parce qu'USB c'est beaucoup plus tordu à gérer au niveau électronique). Je l'appelle keylogger parce que c'est sans doute l'utilisation la plus naturelle de ce dispositif : enregistrer ce qui est tapé pour le récupérer plus tard. Cela dit, il peut également servir à plein d'autres choses : appliquer une nouvelle disposition de clavier (par exemple passer de l'AZERTY au QWERTY), ou bien faire tout un tas de choses bizarres pour faire des farces (frappes aléatoires, remappings inattendus...). Ou encore d'autres choses : fournir des touches pour enregistrer des macros, faire des statistiques sur le texte entré, etc. Ou bien même implémenter quelques petits jeux (on fait tourner un éditeur de texte sur la machine, le dispositif lit les frappes clavier comme des commandes et envoie des frappes supplémentaires pour générer l'affichage du jeu ; je pense qu'il doit être très facile d'implémenter quelque chose comme Colossal Cave Adventure, et peut-être Tetris avec un peu d'astuce). Pour aller plus loin, on pourrait ensuite ajouter un tout petit écran LCD (du genre 16x2 caractères) et une pile, pour que le système puisse fonctionner sans être connecté à l'ordinateur. Le clavier avec le keylogger, l'écran et la pile devient alors un système autonome permettant de saisir du texte, et on peut le connecter à l'ordinateur pour récupérer le texte tapé. L'intérêt serait d'avoir quelque chose de très bon marché (c'est plutôt facile de trouver des claviers PS/2 de récup, et le reste de l'électronique ne coûte pas cher), avec un très bon confort de frappe (c'est un vrai clavier), et avec peut-être une bonne autonomie (à voir). Pour l'instant, ce que j'ai, c'est un ATmega8 et quelques composants annexes sur une plaque d'essai, qui se programme depuis le port parallèle, et qui fait tourner un programme trouvé sur Internet. (Il n'est pas sous licence libre, si je me souviens bien, donc il faudra sans doute récrire, mais c'est juste pour tester dans un premier temps.) Le système marche presque : dans GRUB, il parvient à relayer les frappes, à les mémoriser, et à générer des frappes pour afficher un listing de tout ce qu'il a mémorisé lorsqu'on presse un bouton. Ce qui ne marche pas, c'est des touches un peu évoluées comme Verr Maj (où l'ordinateur va répondre avec des commandes pour changer l'état de la LED), et surtout la chose suivante : le clavier n'est plus reconnu une fois que Linux a booté. Il y a donc probablement un léger bug dans l'implémentation du protocole PS/2 (peut-être un truc subtil au niveau électrique) qu'il s'agirait de trouver. Pour plus d'informations sur ce projet, contacter ''a3nm'' ou ''Armavica''. ## État actuel Un PC dans la cave avec le keylogger branché dessus. Il marche plutôt bien dans le BIOS. Debian installé ainsi que tous les outils qu'il faut. Le keylogger peut s'alimenter par PS/2 ou par l'alim convertie (cf. [[projets:acheves:conversion_atx|le projet de conversion d'alim ATX]]). Le reflashing a tendance à échouer aléatoirement, mais il fonctionne plus ou moins (enfin j'ai réussi à reflasher le truc à quelques reprises et à mettre des programmes qui marchent). Maintenant, il reste à poursuivre le codage du firmware, et à tester au fur et à mesure en reflashant pour repérer les bugs suffisamment tôt. ### ATmega8 pin layout {{http://www.tuxgraphics.org/common/images2/article352/circuit.gif}} ### Branchement avec le LCD {{http://www.pocketmagic.net/wp-content/uploads/2009/10/game_schematics.jpg}} ## Liens utiles * Montage de base ATmega8 avec programmateur parallèle et avr-gcc : http://www.tuxgraphics.org/electronics/200411/article352.shtml * ATmega8 et LCD : http://www.pocketmagic.net/?tag=lcd * Branchement ATmega8-LCD : * Branchement qui utilise un composant en plus mais moins de pattes de l'ATmega : http://www.scienceprog.com/connect-lcd-to-atmega-using-3-wires/ * Branchement avec un 20x4 : http://www.avrprojects.net/index.php?option=com_content&view=article&id=68:lcd-thermometer-lm35&catid=37:avr-projects&Itemid=57 * Interfaçage LCD (encore) : http://webcache.googleusercontent.com/search?q=cache:ArQrQp-Fr9kJ:www.avrfreaks.net/index.php%3Fname%3DPNphpBB2%26file%3Dviewtopic%26p%3D233506+HD44780+lumex&cd=4&hl=en&ct=clnk&client=ubuntu * Encore : http://project.irone.org/2x16-lcd-with-atmega-8.html * Et encore : http://blog.marxy.org/2008/03/atmega8-driving-hd44780-lcd.html * Interfaçage ATmega8-EEPROM en SPI : http://www.arduino.cc/en/Tutorial/SPIEEPROM * Idem : http://www.beatrizdacosta.net/stillopen/eeprom.php * Interface I2C : http://linuxfocus.org/English/February2005/article365.shtml * Interfaçage ATmega8-SDcard : http://project.irone.org/interface-avr-with-sd-card.html * Idem, support FAT32 : http://www.dharmanitech.com/2009/01/sd-card-interfacing-with-atmega8-fat32.html * Récupérer des samples (composants gratuits) : http://www.ladyada.net/library/procure/samples.html