Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Script par Guiroux Hugo
  5.  
  6. import sys
  7. import getpass
  8. import struct
  9.  
  10.  
  11. def usage():
  12. print "Script par Guiroux Hugo pour le Pre-Magistere d'informatique.\n"
  13.  
  14.  
  15. class CarteMagnetique:
  16.  
  17. deviceHandle = None
  18. data = None
  19. qwerty = False
  20. dictionnary = {unicode('à', 'utf-8') : '0',
  21. unicode('&', 'utf-8') : '1',
  22. unicode('é', 'utf-8') : '2',
  23. unicode('"', 'utf-8') : '3',
  24. unicode('\'', 'utf-8') : '4',
  25. unicode('(', 'utf-8') : '5',
  26. unicode('-', 'utf-8') : '6',
  27. unicode('è', 'utf-8') : '7',
  28. unicode('_', 'utf-8') : '8',
  29. unicode('ç', 'utf-8') : '9',
  30. unicode(':', 'utf-8') : ':',
  31. unicode('m', 'utf-8') : ';',
  32. unicode('§', 'utf-8') : '?'
  33. }
  34.  
  35. def __init__(self):
  36. try:
  37. self.deviceHandle = sys.stdin
  38. except IOError as (errno, strerror):
  39. raise "Impossible d'ouvrir stdin ! (%s)" % strerror
  40.  
  41. def __del__(self):
  42. if self.deviceHandle != None:
  43. self.deviceHandle.close()
  44.  
  45.  
  46. def lire(self):
  47. self.data = getpass.getpass("Veuillez passer votre carte...\n")
  48. decoded_string = ""
  49.  
  50. if self.data[0] == 'm':
  51. self.qwerty = True
  52.  
  53. for i in self.data.decode('utf-8'):
  54. if self.qwerty:
  55. decoded_string += self.qwertyToAzerty(i)
  56. else:
  57. decoded_string += i
  58.  
  59. self.data = decoded_string
  60.  
  61.  
  62. def rawDump(self):
  63. if self.data == None:
  64. raise "Impossible d'afficher le dump, toujours pas de donnee !"
  65.  
  66. print "-- Chaine : --"
  67. print self.data
  68. print "-- Fin de la chaine --\n"
  69.  
  70.  
  71. def clearDump(self):
  72. if self.data == None:
  73. raise "Impossible d'afficher le dump, toujours pas de donnee !"
  74.  
  75. print "-- Chaine interprétée : --"
  76. interpreted_string = ""
  77. for i in self.data:
  78. if i == ";":
  79. interpreted_string += "{Start}"
  80. elif i == ":" or i == "<" or i == ">":
  81. interpreted_string += "{Controle}"
  82. elif i == "=":
  83. interpreted_string += "{Sep}"
  84. elif i == "?":
  85. interpreted_string += "{End}"
  86. else:
  87. interpreted_string += i
  88.  
  89. print interpreted_string
  90. print "-- Fin de la chaine interprétée --\n"
  91.  
  92.  
  93.  
  94. def decToBin(self, number, count = 24):
  95. return "".join([str((number >> y) & 1) for y in range(count-1, -1, -1)])
  96.  
  97.  
  98. def qwertyToAzerty(self, lettre):
  99. try:
  100. return self.dictionnary[lettre]
  101. except:
  102. pass
  103.  
  104. return lettre
  105.  
  106.  
  107. usage()
  108. test = CarteMagnetique()
  109. while True:
  110. test.lire()
  111. test.rawDump()
  112. test.clearDump()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement