Initial revision
darcs-hash:20000521125243-92525-6092ab1d3efe6df9898549afb0aa3c7d43983e8b.gz
This commit is contained in:
commit
f1d3de9de7
26 changed files with 621 additions and 0 deletions
52
cdecode
Executable file
52
cdecode
Executable file
|
@ -0,0 +1,52 @@
|
|||
#!/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.
|
||||
|
||||
Note : l'implémentation de référence est "cencode". L'algo est symétriqe...
|
||||
"""
|
||||
|
||||
import sys
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
print "usage : %s <numéro de code>" % sys.argv[0]
|
||||
print "exemple : %s 9378 --> 126 " % sys.argv[0]
|
||||
print
|
||||
sys.exit(1)
|
||||
|
||||
s_arg = sys.argv[1]
|
||||
try:
|
||||
arg = int(s_arg)
|
||||
if arg >= 10000: raise "pas bon."
|
||||
except:
|
||||
print "L'argument doit être un nombre inférieur à 10000 !"
|
||||
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 = int(arg / 1000) % 10
|
||||
|
||||
f3 = t1 = (10 - c1 + s) % 10
|
||||
f2 = t2 = (10 - c2 + s) % 10
|
||||
f1 = t3 = (10 - c3 + s) % 10
|
||||
|
||||
res = f1 * 100 + f2 * 10 + f3
|
||||
print "Chambre = %d " % res
|
||||
|
||||
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue