#!/usr/bin/env python # Dis, emacs, c'est du -*- python -*- # """ Programme fait pour encoder les chambres suivant le cryptage standard pour le bâtiment G (le F peut aussi s'en servir). Inutile au B, il y a déjà un autre mapping (les prises réseau sont numérotées différemment des chambres) Ceci ne résistera évidemment pas à une attaque cryptographique en règle. L'algorithme étant réellement trivial, il est raisonnable de laisser ce script "chmod 700" et "chown root:root" ! C.Chepelov 5 novembre 1998 (présente implémentation), mise au point de l'algorithme et première implémentation en Reverse Polish Lisp (HP48) à l'automne 1997. """ import sys if len(sys.argv) != 2: print "usage : %s " % sys.argv[0] print "exemple : %s 126 --> 9378 " % sys.argv[0] print "Ajouter G ou F selon bâtiment, W ou B selon gaine technique. " print sys.exit(1) s_arg = sys.argv[1] try: arg = int(s_arg) if arg >= 1000: raise "pas bon." except: print "L'argument doit être un nombre inférieur à 1000 !" sys.exit(2) # C'est pas du tout optimal, mais on s'en fout ! c1 = int(arg / 100) % 10 c2 = int(arg / 10) % 10 c3 = arg % 10 s = (c1 + c2 + c3) % 10 f3 = t1 = (10 - c1 + s) % 10 f2 = t2 = (10 - c2 + s) % 10 f1 = t3 = (10 - c3 + s) % 10 res = s * 1000 + f1 * 100 + f2 * 10 + f3 print "Code = %d " % res