diff --git a/app/services/scanner.py b/app/services/scanner.py index 3c7df49..58be59a 100644 --- a/app/services/scanner.py +++ b/app/services/scanner.py @@ -49,7 +49,7 @@ def getCardService(timeout: int = 10): cardservice = cardrequest.waitforcard() except CardRequestTimeoutException: logger.error("No tag detected within the timeout.") - raise Exception + raise Exception("No tag detected within the timeout.") return cardservice def DeleteCard(): @@ -95,26 +95,14 @@ def WriteNewCard(): from app.main import scanner as scannerThread scannerThread.stop() - cardtype = AnyCardType() - cardrequest = CardRequest(timeout=10, cardType=cardtype) - print("Please present DESfire tag...") - try: - cardservice = cardrequest.waitforcard() - except CardRequestTimeoutException: - logger.error("No tag detected within the timeout.") - return None - + cardservice = getCardService(20) cardservice.connection.connect() - # Create Desfire object desfire = DESFire(PCSCDevice(cardservice.connection.component)) # Create Key objects - AES_NULL_KEY_DATA = "00" * 16 - aes_keysettings = KeySettings( - key_type=DESFireKeyType.DF_KEY_AES, - ) - aes_null_key = DESFireKey(aes_keysettings, AES_NULL_KEY_DATA) + aes_keysettings = KeySettings(key_type=DESFireKeyType.DF_KEY_AES) + aes_null_key = DESFireKey(aes_keysettings, "00" * 16) aes_master_key = DESFireKey(aes_keysettings, MIFARE_APP_MASTER_KEY) keysetting = desfire.get_key_setting() desKey = DESFireKey(keysetting, "00" * 8) @@ -151,15 +139,15 @@ def WriteNewCard(): # Select application desfire.select_application(MIFARE_APP_ID) - #Auth again as 0key - aes_null_auth_key = DESFireKey(aes_keysettings, AES_NULL_KEY_DATA) - desfire.authenticate(0x0, aes_null_auth_key) - # Authenticate with AES key, as this has been set as the default key - aes_app_mk = DESFireKey(aes_keysettings, MIFARE_APP_MASTER_KEY) - desfire.change_key(0x0, aes_null_key, aes_app_mk, 0x1) + + #recreate key object + desfire.authenticate(0x0, aes_null_key) + desfire.change_key(0x0, aes_null_key, aes_master_key, 0x1) print("new key auth") - desfire.authenticate(0x0, aes_app_mk) + desfire.authenticate(0x0, aes_master_key) + + aes_null_key = DESFireKey(aes_keysettings, "00" * 16) #generate div data diversification_data = [0x01] + uid + get_list(MIFARE_APP_ID) + get_list(MIFARE_SYS_ID)