Advertisement
Guest User

Untitled

a guest
Dec 15th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. import nfc
  2. import nfc.clf
  3. import nfc.ndef
  4. import nfc.tag
  5. import ndef
  6.  
  7. # TODO 3 trys for right nfc tag
  8.  
  9. application_uri = "http://marcelochsendorf.com"
  10. write_try =3
  11. key_to_write = "1337"
  12. last_id = ""
  13. tag_written = 0
  14. reader_con = False
  15.  
  16.  
  17. clf = nfc.ContactlessFrontend('usb')
  18.  
  19.  
  20.  
  21.  
  22. def nfc_connected(tag):
  23. print("-- CARD SCANNED --")
  24. global write_try
  25. global last_id
  26. global key_to_write
  27. global application_uri
  28.  
  29.  
  30. if(key_to_write == ""):
  31. print("-- NO KEY TO WRITE --")
  32. return
  33. if(last_id == tag.identifier.encode("hex").upper()):
  34. print("please scan an other tag")
  35. return
  36. #SAFE UUID
  37. last_id = tag.identifier.encode("hex").upper()
  38. print last_id
  39. #TODO ADD TRY
  40. version = {'Type1Tag': 0x12, 'Type2Tag': 0x12,'Type3Tag': 0x10, 'Type4Tag': 0x30}[tag.type]
  41. formatted = tag.format(version=version)
  42. if tag.ndef and formatted:
  43. print " NDEF"
  44. print(" readable = %s" % ("no","yes")[tag.ndef.is_readable])
  45. print(" writeable = %s" % ("no","yes")[tag.ndef.is_writeable])
  46. print(" capacity = %d byte" % tag.ndef.capacity)
  47. print(" message = %d byte" % tag.ndef.length)
  48.  
  49. obj = {"application":"kaps_data_exporter","key":key_to_write}
  50. tag.ndef.records = [ndef.SmartposterRecord(str(application_uri),'KAPS'),ndef.TextRecord(str(obj))]
  51. print "on card:", tag.ndef.message.pretty()
  52. if(key_to_write in tag.ndef.message.pretty()):
  53. print("-- KEY WRITTEN TO TAG --")
  54. key_to_write = ""
  55. tag_written = 1
  56. #TODO LOG TO DB
  57. else:
  58. if(write_try <= 0):
  59. key_to_write = ""
  60. print "nfc write limit exeed"
  61. tag_written = 2
  62. else:
  63. write_try = write_try - 1
  64. print "sorry, no NDEF or not formattable please try again: " + str(write_try)
  65. tag_written = 3
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76. def nfc_write_aes_key_to_nfc(_key):
  77. print("--- WRITE AES TO NFC - INSERT A NFC TAG ---")
  78. global reader_con
  79. if(reader_con is False):
  80. print("-- NO READER CONNECTED - CALL INIT")
  81. return
  82. global key_to_write
  83. global tag_written
  84. tag_written = 0
  85.  
  86. key_to_write = _key
  87. #while(tag_written == 0):
  88. tag = clf.connect(rdwr={'on-connect': nfc_connected})
  89. return tag_written
  90.  
  91.  
  92. def eject_card():
  93. print "eject_card"
  94. # SEND TO CARDDISPENSER
  95.  
  96.  
  97. def nfc_init():
  98. global reader_con
  99.  
  100. #clf = nfc.ContactlessFrontend('usb')
  101. if(clf.open('usb') is True):
  102. reader_con = True
  103. else:
  104. reader_con = false
  105.  
  106. nfc_init()
  107. nfc_write_aes_key_to_nfc("12354334535")
  108.  
  109. #init()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement