scripts/cencode
krempp f1d3de9de7 Initial revision
darcs-hash:20000521125243-92525-6092ab1d3efe6df9898549afb0aa3c7d43983e8b.gz
2000-05-21 14:52:43 +02:00

53 lines
1.3 KiB
Python
Executable file

#!/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 <numéro de chambre>" % 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