Prototypage d’interfaces par langage de script Le Python, c’est bon Cours 6 : Messages et Ivy Le but de ce (dernier) TD est triple. Il doit vous montrer : • une application professionnelle écrite en python, • un moyen simple et efficace de communication entre programmes, • comment comprendre et utiliser le code d’une autre personne. Nous allons ici vous donner uniquement quelques informations parcellaires et une liste de choses à faire. Vous devriez vous en sortir très bien. 1 Ivy Commencez par télécharger la dernière version de Ivy pour python (la 2.1) là : http://www.tls.cena.fr/products/ivy/. Attention à bien télécharger la version (dans download/sources). Lisez le document ci : http://www.tls.cena.fr/products/ivy/documentation/ ivy-ihm2002-02.pdf. Vous savez maintenant à quoi sert Ivy. 1.1 Fonctionnement Nous allons utiliser Ivy via le programme ivyprobe.py que vous trouverez dans le répertoire examples. Copiez le dans son répertoire père et exécutez la commande python ivyprobe.py -h. Exécutez maintenant la commande python ivyprobe.py -b 172.16:2010 -n votreNom. À quoi servent ces paramètres ? Assurez-vous que tout le monde ai un nom différent. Tapez ensuite la commande .bind (.*) Vous devriez recevoir maintenant tous les messages qui vont transiter par le bus Ivy. 1 2 Expression régulière Dans Ivy on s’abonne à des messages par expression régulière. Pour plus de renseignements sur les expressions régulières et leurs utilisations dans python, vous pouvez lire : • http://www.amk.ca/python/howto/regex/ • http://docs.python.org/lib/module-re.html • http://diveintopython.adrahon.org/regular_expressions/index.html On s’abonne en “bindant” une expression régulière, les paramètres reçu étant ceux entre parenthèses. Ainsi : • .bind ˆtoto : (.*) vous abonnera à recevoir tous les textes placés après “toto : ” plécé en début de ligne, • (.*) et (.*) vous abonnera aux deux parties entre parenthèses placées entre “ et ”. Faites quelques essais. 3 Communication On vous demande de modifier le code de l’application ivyprobe.py pour y inclure les fonctions que vous avez créées lors du TD de cryptographie. Vous devez être capable de décoder un message codé à la volée si vous connaissez la clé, et de décrypter un message dont vous ne connaissez pas la clé. Pour communiquer vos messages, on utilsera 3 expressions régulières : • “ˆcesar : (.*)” pour envoyer sur le bus des messages encodés selon le code de césar, • “ˆvigenere : (.*)” pour envoyer sur le bus des messages encodés selon le code de Vigenère, • “ˆrsa : (.*)” pour envoyer sur le bus des messages encodés selon le code RSA. Pour vous envoyer les différentes clés, procédez avec vos propres canaux. Attention cependant aux espions ! Vous pouvez bien-sur proposer d’autres canaux, il suffit de les écrire au tableau pour que d’autres puissent vous entendre. 2