From 479c52b42f0600c7a664d7ff74f1fab856aeb041 Mon Sep 17 00:00:00 2001 From: developer33 Date: Mon, 20 May 2019 11:01:52 +0200 Subject: [PATCH] example updated with function for getting application ids currently present on the card --- ErrorCodes.py | 4 +- Functions.py | 42 +++++++++++++++++++- __pycache__/ErrorCodes.cpython-37.pyc | Bin 2962 -> 2958 bytes __pycache__/Functions.cpython-37.pyc | Bin 27889 -> 29005 bytes __pycache__/desfire_example.cpython-37.pyc | Bin 9899 -> 10031 bytes __pycache__/globals.cpython-37.pyc | Bin 329 -> 325 bytes desfire_example.py | 44 +++++++++++---------- 7 files changed, 67 insertions(+), 23 deletions(-) diff --git a/ErrorCodes.py b/ErrorCodes.py index 97565f8..a1c1e67 100644 --- a/ErrorCodes.py +++ b/ErrorCodes.py @@ -75,13 +75,13 @@ DESFIRE_ERROR_CODES = { 0xBBF : 'COMMIT_TRANSACTION_NO_REPLY', #// 3007 [dec] 0x0BC0 : 'COMMIT_TRANSACTION_ERROR', #// 3008 [dec] 0x0C0C : 'DESFIRE_CARD_NO_CHANGES', - 0x0C03 : 'DESFIRE_CARD_OUT_OF_EEPROM_ERROR', + 0x0C0E : 'DESFIRE_CARD_OUT_OF_EEPROM_ERROR', 0x0C1C : 'DESFIRE_CARD_ILLEGAL_COMMAND_CODE', 0x0C1E : 'DESFIRE_CARD_INTEGRITY_ERROR', 0x0C40 : 'DESFIRE_CARD_NO_SUCH_KEY', 0x0C7E : 'DESFIRE_CARD_LENGTH_ERROR', 0x0C9D : 'DESFIRE_CARD_PERMISSION_DENIED', - 0x0C93 : 'DESFIRE_CARD_PARAMETER_ERROR', + 0x0C9E : 'DESFIRE_CARD_PARAMETER_ERROR', 0x0CA0 : 'DESFIRE_CARD_APPLICATION_NOT_FOUND', 0x0CA1 : 'DESFIRE_CARD_APPL_INTEGRITY_ERROR', 0x0CAE : 'DESFIRE_CARD_AUTHENTICATION_ERROR', diff --git a/Functions.py b/Functions.py index 52f3549..b6404f2 100644 --- a/Functions.py +++ b/Functions.py @@ -1318,4 +1318,44 @@ def ReadStdFile(): for x in range(file_length): hex_str = ('%x' % data[x]).upper() #f.write(('0x%02x' % data[x]).upper()) - f.write(hex_str) \ No newline at end of file + f.write(hex_str) + +################################################################################ + +def getDesfireApplicationIDs(): + application_ids = (c_uint32*128)() + number_of_application_ids = c_ubyte(0) + card_status = c_uint32() + exec_time = c_uint32() + print_ids = "Application IDs: " # string used to print out IDs stored in array + + if globals.internal_key == False: + pk_key = (c_ubyte*16)() + pk_key = PrepareKey(pk_key) + else: + aes_key_nr = int(globals.settings[4]) + + if globals.master_authent_req == True: + if globals.internal_key == True: + getIDsFunc = uFR.uFR_int_DesfireGetApplicationIds + getIDsFunc.argtypes = [c_ubyte, (c_uint32*128), POINTER(c_ubyte), POINTER(c_uint32), POINTER(c_uint32)] + status = getIDsFunc(aes_key_nr, application_ids, byref(number_of_application_ids), byref(card_status), byref(exec_time)) + else: + getIDsFunc = uFR.uFR_int_DesfireGetApplicationIds_PK + getIDsFunc.argtypes = [(c_ubyte*16), (c_uint32*128), POINTER(c_ubyte), POINTER(c_uint32), POINTER(c_uint32)] + status = getIDsFunc(pk_key, application_ids, byref(number_of_application_ids), byref(card_status), byref(exec_time)) + else: + getIDsFunc = uFR.uFR_int_DesfireGetApplicationIds_no_auth + getIDsFunc.argtypes = [(c_uint32*128), POINTER(c_ubyte), POINTER(c_uint32), POINTER(c_uint32)] + status = getIDsFunc(application_ids, byref(number_of_application_ids), byref(card_status), byref(exec_time)) + + if card_status.value == 3001: + print("Getting application IDs successfull") + print("Number of IDs: " + str(number_of_application_ids.value)) + print(" Application IDs: ") + for x in range(number_of_application_ids.value): + print_ids += str(application_ids[x]) + "," + print(print_ids[:-1]) + print("Function status: " + ErrorCodes.UFCODER_ERROR_CODES[status]) + print("Card status: " + DESFIRE_ERROR_CODES[card_status.value]) + print("Execution time: " + str(exec_time.value) + " ms.") \ No newline at end of file diff --git a/__pycache__/ErrorCodes.cpython-37.pyc b/__pycache__/ErrorCodes.cpython-37.pyc index f160b9f5e020448b781b6ae210937639a6892889..6b91a8ef8144b002e1a41d7883ca974c64607f8e 100644 GIT binary patch delta 44 zcmbOv-Y3rM#LLUY00e32k79T>^1kF`$UONwr!3>-$)a5Cj82p1a!E0#WmZhy#&rV# DDZmZ; diff --git a/__pycache__/Functions.cpython-37.pyc b/__pycache__/Functions.cpython-37.pyc index 72fcb9d76633d628b44deddaa7cacbaa9ab48f8d..94eb44266f57e00bfae8111e364a72ae28a8c5f2 100644 GIT binary patch delta 1110 zcmaiz&rcIU6vyXncemTpAG9Kc8gT^#il7GLuZl#a!Eiy1KS-LIQafARwzhS5ni$-s zB-H~qO#KTycrfu`IQd8D!Nh|`FWkJCc=hCaTSE$B+|7Ju_RV*`@6GJ)&(H9F8$wru zK|jOmcyT*Z|N1;M05fmLCn1>R7oW29IG1j*#O&5x_@>4$%_lQ=Y{RlMH>_&WDCI;Z zW!NQAt!>@Zmh;U#`Orm%UTpK&?2o{hU>y2bi#3=4F14Tmf}SLo9`0$#LMnQ=T#~HI zs8C$3B4kHFtx^dI1?N?+4l;aJaqQ(@)c$Z+(dd=XicMd`E6|uy3BQ0AAaOy5tBT{z z_BdWgb(jb^G#hZR6r`sGEv2DV7SJR}9#p`8eU!aE%^jmTGzy{7zeg{7SW~e>-dH( ze8Frja-~_TmCbxknAM8Dn6i`lf_0dt4D$e9;~=~%vKB8JyX^UtviiK`)Zb15u|TgXDE7-qW)Dw;PKMFt+NzeC!F8G1sr`D zKoS0%1=BLR_n5M$75pVb8*uZ@!M&rsvJ_$yxjp|yAtW3cSnpT_R81J$%I!?CXkYY~D jtk@jN5uVJXsXqCC{#8bc$qy5RC%-M=WAvH)r@$WotpXXI diff --git a/__pycache__/desfire_example.cpython-37.pyc b/__pycache__/desfire_example.cpython-37.pyc index cee6e4f3e4dbc5a873b19f26634ddc77b4606a65..c4ac79ca8b0b1008c425793d357746dee73b8159 100644 GIT binary patch delta 1820 zcmZ{kOKclO7{_f+(^{Tj+@x-+F5TR z5ONUW07y_7K~D%S2vvY0)Ki2Isv-_mgv0@;I3T|HvP}a5OEWwB z`~CMD@7mvfaQdTh=W(agF2Lv8#Dkf8Yfc}TS!)@{i3w>+Py~e}tYIr2ZDAWFF|kmh znAV9_KxPlysaPmohonzX%yCg$p+d}2a4ME{5_YLId#nWZZNpm8UN!33*2yZ-9Mn`O zgGwb(iL7mxPJd6!p^yWk{d)@WZGJ)L{I5-*R0ypLt=HJ33^xg}=SiHr%N`|cdg9`$sJ+S#h+`EKN?*81_0lHg5YqGPhB!*TV)w;-$HbEdv1-x= zsJ+m!E`-}viPl4{cIu(+c|wF$(?U&g#q^2jA0B>YW;#u^^vr~ojL~>RpBbU)xSmY0 zDd`AlEUrpXLi&n-SZ4`2Sv*(LMaa40b^CygMA_GspNVF|uDE}5*YUEtpqThk5zYv0 z^~Eby!(y&cmRm2j$zAd&)#XSkm6)H6=<`Wc9vex^aF~r~O2!MJIUYJ4iPOEQj2}#l zn-Q9z`afL-xcKf>(fI_;xB(^h#G?(IRs+4n=~-fYzM|Trk0A0D^66{B)F~R=y1#-QRlQH)*dun$ths)Qyw5Jz$JtNy!@0}QZL?Jz^DAcE0<)x>vZP>D$U4cBWec2{cF&}&IV)r>Surc+ z&G3p6$1|2iJ=)dZX4^C^o|xQp@LQ$Y3n{9yH)S`wBM0GSd|y7+GX;BUb-PnNUoFFQ zioh3gz(ODrap7{i1xthZqfv*W=bSYHixk_*K7G9;*uEHkce-j4L&)r5KPmQSrJLb66*uavopumMJ+CT`VI zftw0I^;~7NucpHC=B^BXpcf)?LaU?V8eSZ%6xZ_N1fGB_Oyf4h!G&db&cCOH3PQ3? zzoRK?UzTk!;|g}OvHJ6Be=?>AwU|1<=^U=JQTQHrSrh)q^!oFU?`1s;-UUK&UTqv!223>FwKX3Sy{UzXv|MzOK z06Wt8*6r2HT1r(WQ@IswKO$3P5jO(O zcq8D%PXd$D*VGBigXjwm<9JYJzcO419)WEv1`jQ~nHN+Sy`oE|qac8=!SoyvH<4?m zvqF+YJVb7pQiYr(V!zlA&8i9+AmSzRrRl1W4kA7xKbYuFE_Wy^l=mB#(vaKb90Z(A#P-D zddVE-<^h=_w$bBZf=4;rA=uBMWH#FcbUa`m^DaJCx-7p1YxQ>b4nJ<*u6P;dEdPGz z{)f+79y>ikO>4)pmUln)2;{69-mTQEkI;hUv)l6tqL(@0{W_9~5@H!%$6q36Ac8|JKjRCn=U@uoZ9PlPvD=!(t4bZ-P^AAEwbK^0{j9_O z4ALgiaMCzVV|jokQ<#TUhsjKlh9m9BJEokbM01rX=3&dFLJdZUxLf)BYd9mQ2 ze?L2IIakbd&ogm1dZQiE?9`>jjEae9CrCIE9qMYKa~phWwO4tXMuD!$zsDd!4If4x z???OKGX56rhH-3eJ4b7S=1F|eHcV?zdjei79cvFWr!h?Dz%#K3F2_1Zy%Xz`?0chg dd>6ax{EU_^tPeKg_0C>ryKBbf#xFXJzX8s)ra=Gz diff --git a/__pycache__/globals.cpython-37.pyc b/__pycache__/globals.cpython-37.pyc index 19a7524167b5c8c41f4f6ff3a9ebac636603e28d..7710923cae8a24f9577a88b38162e39f27cd162d 100644 GIT binary patch delta 27 hcmX@fbd-tPiI