diff options
Diffstat (limited to 'dev-util/mfcuk/files/mfcuk-new-libnfc-version.patch')
-rw-r--r-- | dev-util/mfcuk/files/mfcuk-new-libnfc-version.patch | 1099 |
1 files changed, 0 insertions, 1099 deletions
diff --git a/dev-util/mfcuk/files/mfcuk-new-libnfc-version.patch b/dev-util/mfcuk/files/mfcuk-new-libnfc-version.patch deleted file mode 100644 index e27f105..0000000 --- a/dev-util/mfcuk/files/mfcuk-new-libnfc-version.patch +++ /dev/null @@ -1,1099 +0,0 @@ -Index: src/nfc-utils.c -=================================================================== ---- src/nfc-utils.c (revision 62) -+++ src/nfc-utils.c (working copy) -@@ -33,7 +33,7 @@ - - #include "nfc-utils.h" - --static const byte_t OddParity[256] = { -+static const uint8_t OddParity[256] = { - 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, - 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, - 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, -@@ -52,14 +52,14 @@ - 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1 - }; - --byte_t --oddparity (const byte_t bt) -+uint8_t -+oddparity (const uint8_t bt) - { - return OddParity[bt]; - } - - void --oddparity_bytes_ts (const byte_t * pbtData, const size_t szLen, byte_t * pbtPar) -+oddparity_bytes_ts (const uint8_t * pbtData, const size_t szLen, uint8_t * pbtPar) - { - size_t szByteNr; - // Calculate the parity bits for the command -@@ -69,7 +69,7 @@ - } - - void --print_hex (const byte_t * pbtData, const size_t szBytes) -+print_hex (const uint8_t * pbtData, const size_t szBytes) - { - size_t szPos; - -@@ -80,7 +80,7 @@ - } - - void --print_hex_bits (const byte_t * pbtData, const size_t szBits) -+print_hex_bits (const uint8_t * pbtData, const size_t szBits) - { - uint8_t uRemainder; - size_t szPos; -@@ -102,7 +102,7 @@ - } - - void --print_hex_par (const byte_t * pbtData, const size_t szBits, const byte_t * pbtDataPar) -+print_hex_par (const uint8_t * pbtData, const size_t szBits, const uint8_t * pbtDataPar) - { - uint8_t uRemainder; - size_t szPos; -@@ -133,7 +133,7 @@ - #define SAK_ISO18092_COMPLIANT 0x40 - - void --print_nfc_iso14443a_info (const nfc_iso14443a_info_t nai, bool verbose) -+print_nfc_iso14443a_info (const nfc_iso14443a_info nai, bool verbose) - { - printf (" ATQA (SENS_RES): "); - print_hex (nai.abtAtqa, 2); -@@ -202,7 +202,7 @@ - - size_t offset = 1; - if (nai.abtAts[0] & 0x10) { // TA(1) present -- byte_t TA = nai.abtAts[offset]; -+ uint8_t TA = nai.abtAts[offset]; - offset++; - printf ("* Bit Rate Capability:\n"); - if (TA == 0) { -@@ -234,7 +234,7 @@ - } - } - if (nai.abtAts[0] & 0x20) { // TB(1) present -- byte_t TB= nai.abtAts[offset]; -+ uint8_t TB= nai.abtAts[offset]; - offset++; - printf ("* Frame Waiting Time: %.4g ms\n",256.0*16.0*(1<<((TB & 0xf0) >> 4))/13560.0); - if ((TB & 0x0f) == 0) { -@@ -244,7 +244,7 @@ - } - } - if (nai.abtAts[0] & 0x40) { // TC(1) present -- byte_t TC = nai.abtAts[offset]; -+ uint8_t TC = nai.abtAts[offset]; - offset++; - if (TC & 0x1) { - printf("* Node ADdress supported\n"); -@@ -260,20 +260,20 @@ - if (nai.szAtsLen > offset) { - printf ("* Historical bytes Tk: " ); - print_hex (nai.abtAts + offset, (nai.szAtsLen - offset)); -- byte_t CIB = nai.abtAts[offset]; -+ uint8_t CIB = nai.abtAts[offset]; - offset++; - if (CIB != 0x00 && CIB != 0x10 && (CIB & 0xf0) != 0x80) { - printf(" * Proprietary format\n"); - if (CIB == 0xc1) { - printf(" * Tag byte: Mifare or virtual cards of various types\n"); -- byte_t L = nai.abtAts[offset]; -+ uint8_t L = nai.abtAts[offset]; - offset++; - if (L != (nai.szAtsLen - offset)) { - printf(" * Warning: Type Identification Coding length (%i)", L); - printf(" not matching Tk length (%zi)\n", (nai.szAtsLen - offset)); - } - if ((nai.szAtsLen - offset - 2) > 0) { // Omit 2 CRC bytes -- byte_t CTC = nai.abtAts[offset]; -+ uint8_t CTC = nai.abtAts[offset]; - offset++; - printf(" * Chip Type: "); - switch (CTC & 0xf0) { -@@ -316,7 +316,7 @@ - } - } - if ((nai.szAtsLen - offset) > 0) { // Omit 2 CRC bytes -- byte_t CVC = nai.abtAts[offset]; -+ uint8_t CVC = nai.abtAts[offset]; - offset++; - printf(" * Chip Status: "); - switch (CVC & 0xf0) { -@@ -350,7 +350,7 @@ - } - } - if ((nai.szAtsLen - offset) > 0) { // Omit 2 CRC bytes -- byte_t VCS = nai.abtAts[offset]; -+ uint8_t VCS = nai.abtAts[offset]; - offset++; - printf(" * Specifics (Virtual Card Selection):\n"); - if ((VCS & 0x09) == 0x00) { -@@ -530,7 +530,7 @@ - } - - void --print_nfc_felica_info (const nfc_felica_info_t nfi, bool verbose) -+print_nfc_felica_info (const nfc_felica_info nfi, bool verbose) - { - (void) verbose; - printf (" ID (NFCID2): "); -@@ -542,7 +542,7 @@ - } - - void --print_nfc_jewel_info (const nfc_jewel_info_t nji, bool verbose) -+print_nfc_jewel_info (const nfc_jewel_info nji, bool verbose) - { - (void) verbose; - printf (" ATQA (SENS_RES): "); -@@ -555,7 +555,7 @@ - #define PI_NAD_SUPPORTED 0x01 - #define PI_CID_SUPPORTED 0x02 - void --print_nfc_iso14443b_info (const nfc_iso14443b_info_t nbi, bool verbose) -+print_nfc_iso14443b_info (const nfc_iso14443b_info nbi, bool verbose) - { - const int iMaxFrameSizes[] = { 16, 24, 32, 40, 48, 64, 96, 128, 256 }; - printf (" PUPI: "); -@@ -610,7 +610,7 @@ - } - - void --print_nfc_iso14443bi_info (const nfc_iso14443bi_info_t nii, bool verbose) -+print_nfc_iso14443bi_info (const nfc_iso14443bi_info nii, bool verbose) - { - printf (" DIV: "); - print_hex (nii.abtDIV, 4); -@@ -634,7 +634,7 @@ - } - - void --print_nfc_iso14443b2sr_info (const nfc_iso14443b2sr_info_t nsi, bool verbose) -+print_nfc_iso14443b2sr_info (const nfc_iso14443b2sr_info nsi, bool verbose) - { - (void) verbose; - printf (" UID: "); -@@ -642,7 +642,7 @@ - } - - void --print_nfc_iso14443b2ct_info (const nfc_iso14443b2ct_info_t nci, bool verbose) -+print_nfc_iso14443b2ct_info (const nfc_iso14443b2ct_info nci, bool verbose) - { - (void) verbose; - uint32_t uid; -@@ -655,7 +655,7 @@ - } - - void --print_nfc_dep_info (const nfc_dep_info_t ndi, bool verbose) -+print_nfc_dep_info (const nfc_dep_info ndi, bool verbose) - { - (void) verbose; - printf (" NFCID3: "); -@@ -671,7 +671,7 @@ - } - - const char * --str_nfc_baud_rate (const nfc_baud_rate_t nbr) -+str_nfc_baud_rate (const nfc_baud_rate nbr) - { - switch(nbr) { - case NBR_UNDEFINED: -@@ -694,7 +694,7 @@ - } - - void --print_nfc_target (const nfc_target_t nt, bool verbose) -+print_nfc_target (const nfc_target nt, bool verbose) - { - switch(nt.nm.nmt) { - case NMT_ISO14443A: -Index: src/mfcuk.c -=================================================================== ---- src/mfcuk.c (revision 62) -+++ src/mfcuk.c (working copy) -@@ -222,9 +222,9 @@ - uint32_t numSpoofEntries = 0; // Actual number of entries in the arrSpoofEntries - uint32_t numAuthAttempts = 0; // Number of authentication attempts for Recovery of keys - used to statistics. TODO: implement proper statistics with timings, number of tries, etc. - bool bfOpts[256] = {false}; // Command line options, indicates their presence, initialize with false --byte_t verboseLevel = 0; // No verbose level by default -+uint8_t verboseLevel = 0; // No verbose level by default - --static const nfc_modulation_t nmMifare = { -+static const nfc_modulation nmMifare = { - .nmt = NMT_ISO14443A, - .nbr = NBR_106, - }; -@@ -240,7 +240,7 @@ - } - - // TODO: combine mfcuk_verify_key_block() with mfcuk_recover_key_block(), since a lot of code is duplicate --uint32_t mfcuk_verify_key_block(nfc_device_t* pnd, uint32_t uiUID, uint64_t ui64Key, mifare_key_type bKeyType, byte_t bTagType, uint32_t uiBlock) -+uint32_t mfcuk_verify_key_block(nfc_device* pnd, uint32_t uiUID, uint64_t ui64Key, mifare_key_type bKeyType, uint8_t bTagType, uint32_t uiBlock) - { - uint32_t pos; - -@@ -254,11 +254,11 @@ - uint64_t lfsr; - - // Communication related variables -- byte_t abtAuth[4] = { 0x00,0x00,0x00,0x00 }; -- byte_t abtArEnc[8] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; -- byte_t abtArEncPar[8] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; -- byte_t abtRx[MAX_FRAME_LEN]; -- byte_t abtRxPar[MAX_FRAME_LEN]; -+ uint8_t abtAuth[4] = { 0x00,0x00,0x00,0x00 }; -+ uint8_t abtArEnc[8] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; -+ uint8_t abtArEncPar[8] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; -+ uint8_t abtRx[MAX_FRAME_LEN]; -+ uint8_t abtRxPar[MAX_FRAME_LEN]; - size_t szRx; - uint32_t nt, nt_orig; // Supplied tag nonce - -@@ -283,20 +283,20 @@ - iso14443a_crc_append(abtAuth,2); - - // Now we take over, first we need full control over the CRC -- if ( !nfc_configure(pnd,NDO_HANDLE_CRC,false) ) -+ if ( !nfc_device_set_property_bool(pnd,NP_HANDLE_CRC,false) ) - { - return MFCUK_FAIL_COMM; - } - - // We need to disable EASY_FRAMING feature to talk in "raw" mode -- nfc_configure (pnd, NDO_EASY_FRAMING, false); -+ nfc_device_set_property_bool (pnd, NP_EASY_FRAMING, false); - - // Request plain tag-nonce -- if (!nfc_initiator_transceive_bytes(pnd,abtAuth,4,abtRx,&szRx, NULL)) -+ if (!nfc_initiator_transceive_bytes(pnd,abtAuth,4,abtRx,&szRx, 0)) - { - return MFCUK_FAIL_COMM; - } -- nfc_configure (pnd, NDO_EASY_FRAMING, true); -+ nfc_device_set_property_bool (pnd, NP_EASY_FRAMING, true); - - // Save the tag nonce (nt) - nt = bswap_32(*((uint32_t *) abtRx)); -@@ -347,12 +347,13 @@ - } - - // Finally we want to send arbitrary parity bits -- if ( !nfc_configure(pnd,NDO_HANDLE_PARITY,false) ) -+ if ( !nfc_device_set_property_bool(pnd,NP_HANDLE_PARITY,false) ) - { - return MFCUK_FAIL_COMM; - } - -- if ( !nfc_initiator_transceive_bits(pnd,abtArEnc,64,abtArEncPar,abtRx,&szRx,abtRxPar) ) -+ szRx = nfc_initiator_transceive_bits(pnd,abtArEnc,64,abtArEncPar,abtRx,abtRxPar); -+ if (szRx <= 0) - { - return MFCUK_FAIL_AUTH; - } -@@ -392,16 +393,16 @@ - return MFCUK_SUCCESS; - } - --uint32_t mfcuk_key_recovery_block(nfc_device_t* pnd, uint32_t uiUID, uint64_t ui64Key, mifare_key_type bKeyType, byte_t bTagType, uint32_t uiBlock, uint64_t *ui64KeyRecovered) -+uint32_t mfcuk_key_recovery_block(nfc_device* pnd, uint32_t uiUID, uint64_t ui64Key, mifare_key_type bKeyType, uint8_t bTagType, uint32_t uiBlock, uint64_t *ui64KeyRecovered) - { - // Communication variables - uint32_t pos, pos2, nt; - struct Crypto1State* pcs; -- byte_t abtAuth[4] = { 0x60,0x00,0x00,0x00 }; -- byte_t abtArEnc[8] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; -- byte_t abtArEncPar[8] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; -- byte_t abtRx[MAX_FRAME_LEN]; -- byte_t abtRxPar[MAX_FRAME_LEN]; -+ uint8_t abtAuth[4] = { 0x60,0x00,0x00,0x00 }; -+ uint8_t abtArEnc[8] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; -+ uint8_t abtArEncPar[8] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; -+ uint8_t abtRx[MAX_FRAME_LEN]; -+ uint8_t abtRxPar[MAX_FRAME_LEN]; - size_t szRx; - - // zveriu -@@ -414,7 +415,7 @@ - struct Crypto1State *current_state; - uint32_t i; - uint64_t key_recovered; -- byte_t flag_key_recovered = 0; // FIXME: fix the {Nr} iteration properly. This a quick fix for cases when 0xDEADBEEF {Nr} is not working -+ uint8_t flag_key_recovered = 0; // FIXME: fix the {Nr} iteration properly. This a quick fix for cases when 0xDEADBEEF {Nr} is not working - - if ( (bKeyType != keyA) && (bKeyType != keyB) ) - { -@@ -437,19 +438,19 @@ - iso14443a_crc_append(abtAuth,2); - - // Now we take over, first we need full control over the CRC -- nfc_configure(pnd,NDO_HANDLE_CRC,false); -+ nfc_device_set_property_bool(pnd,NP_HANDLE_CRC,false); - - // We need to disable EASY_FRAMING feature to talk in "raw" mode -- nfc_configure (pnd, NDO_EASY_FRAMING, false); -+ nfc_device_set_property_bool (pnd, NP_EASY_FRAMING, false); - - // Request plain tag-nonce - //printf("Nt: "); -- if (!nfc_initiator_transceive_bytes(pnd,abtAuth,4,abtRx,&szRx, NULL)) -+ if ( !nfc_initiator_transceive_bytes(pnd,abtAuth,4,abtRx,&szRx, 0)) - { - //printf("\n\nFAILURE - Failed to get TAG NONCE!!!\n\n"); - return MFCUK_FAIL_COMM; - } -- nfc_configure (pnd, NDO_EASY_FRAMING, true); -+ nfc_device_set_property_bool (pnd, NP_EASY_FRAMING, true); - - //print_hex(abtRx,4); - -@@ -631,13 +632,14 @@ - } - - // Finally we want to send arbitrary parity bits -- nfc_configure(pnd,NDO_HANDLE_PARITY,false); -+ nfc_device_set_property_bool(pnd,NP_HANDLE_PARITY,false); - - // Transmit reader-answer - //printf(" Ar: "); - //print_hex_par(abtArEnc,64,abtArEncPar); - -- if (!nfc_initiator_transceive_bits(pnd,abtArEnc,64,abtArEncPar,abtRx,&szRx,abtRxPar)) -+ szRx = nfc_initiator_transceive_bits(pnd,abtArEnc,64,abtArEncPar,abtRx,abtRxPar); -+ if (szRx <= 0) - { - if (sendSpoofAr) - { -@@ -792,7 +794,7 @@ - void print_mifare_classic_tag_actions(const char *title, mifare_classic_tag *tag) - { - uint32_t i, max_blocks, trailer_block; -- byte_t bTagType; -+ uint8_t bTagType; - mifare_classic_block_trailer *ptr_trailer = NULL; - - if (!tag) -@@ -860,26 +862,26 @@ - return; - } - --bool mfcuk_darkside_reset_advanced(nfc_device_t* pnd) -+bool mfcuk_darkside_reset_advanced(nfc_device* pnd) - { -- if ( !nfc_configure(pnd,NDO_HANDLE_CRC,true) ) -+ if ( !nfc_device_set_property_bool(pnd,NP_HANDLE_CRC,true) ) - { -- //ERR("configuring NDO_HANDLE_CRC"); -+ //ERR("configuring NP_HANDLE_CRC"); - //return false; - } - -- if ( !nfc_configure(pnd,NDO_HANDLE_PARITY,true) ) -+ if ( !nfc_device_set_property_bool(pnd,NP_HANDLE_PARITY,true) ) - { -- //ERR("configuring NDO_HANDLE_PARITY"); -+ //ERR("configuring NP_HANDLE_PARITY"); - //return false; - } - - return true; - } - --bool mfcuk_darkside_select_tag(nfc_device_t* pnd, int iSleepAtFieldOFF, int iSleepAfterFieldON, nfc_target_info_t* ti) -+bool mfcuk_darkside_select_tag(nfc_device* pnd, int iSleepAtFieldOFF, int iSleepAfterFieldON, nfc_target_info* ti) - { -- nfc_target_t ti_tmp; -+ nfc_target ti_tmp; - - if ( !pnd || !ti ) - { -@@ -888,9 +890,9 @@ - } - - // Drop the field for a while, so the card can reset -- if ( !nfc_configure(pnd,NDO_ACTIVATE_FIELD,false) ) -+ if ( !nfc_device_set_property_bool(pnd,NP_ACTIVATE_FIELD,false) ) - { -- ERR("configuring NDO_ACTIVATE_FIELD"); -+ ERR("configuring NP_ACTIVATE_FIELD"); - return false; - } - -@@ -898,29 +900,29 @@ - sleep(iSleepAtFieldOFF); - - // Let the reader only try once to find a tag -- if ( !nfc_configure(pnd,NDO_INFINITE_SELECT,false) ) -+ if ( !nfc_device_set_property_bool(pnd,NP_INFINITE_SELECT,false) ) - { -- ERR("configuring NDO_INFINITE_SELECT"); -+ ERR("configuring NP_INFINITE_SELECT"); - return false; - } - - // Configure the CRC and Parity settings -- if ( !nfc_configure(pnd,NDO_HANDLE_CRC,true) ) -+ if ( !nfc_device_set_property_bool(pnd,NP_HANDLE_CRC,true) ) - { -- ERR("configuring NDO_HANDLE_CRC"); -+ ERR("configuring NP_HANDLE_CRC"); - return false; - } - -- if ( !nfc_configure(pnd,NDO_HANDLE_PARITY,true) ) -+ if ( !nfc_device_set_property_bool(pnd,NP_HANDLE_PARITY,true) ) - { -- ERR("configuring NDO_HANDLE_PARITY"); -+ ERR("configuring NP_HANDLE_PARITY"); - return false; - } - - // Enable field so more power consuming cards can power themselves up -- if ( !nfc_configure(pnd,NDO_ACTIVATE_FIELD,true) ) -+ if ( !nfc_device_set_property_bool(pnd,NP_ACTIVATE_FIELD,true) ) - { -- ERR("configuring NDO_ACTIVATE_FIELD"); -+ ERR("configuring NP_ACTIVATE_FIELD"); - return false; - } - -@@ -931,7 +933,7 @@ - if (!nfc_initiator_select_passive_target(pnd, nmMifare,NULL,0,&ti_tmp)) - { - ERR("connecting to MIFARE Classic tag"); -- //nfc_disconnect(pnd); -+ //nfc_close(pnd); - return false; - } - -@@ -946,15 +948,15 @@ - int ch = 0; - char strOutputFilename[256] = {0}; // Initialize with '\0' character - //char extendedDescription[MFCUK_EXTENDED_DESCRIPTION_LENGTH] = {0}; // Initialize with '\0' character -- byte_t keyOpt[MIFARE_CLASSIC_KEY_BYTELENGTH] = {0}; -- byte_t uidOpt[MIFARE_CLASSIC_UID_BYTELENGTH] = {0}; -+ uint8_t keyOpt[MIFARE_CLASSIC_KEY_BYTELENGTH] = {0}; -+ uint8_t uidOpt[MIFARE_CLASSIC_UID_BYTELENGTH] = {0}; - mifare_classic_block_trailer *ptr_trailer = NULL; - mifare_classic_block_trailer *ptr_trailer_dump = NULL; - int sector = 0; - uint32_t block = 0; -- byte_t action = 0; -- byte_t specific_key_type = 0; -- byte_t max_sectors = MIFARE_CLASSIC_4K_MAX_SECTORS; -+ uint8_t action = 0; -+ uint8_t specific_key_type = 0; -+ uint8_t max_sectors = MIFARE_CLASSIC_4K_MAX_SECTORS; - // Defaults, can be overriden by -S and -s command line arguments - int iSleepAtFieldOFF = SLEEP_AT_FIELD_OFF; // modified with argument -S - int iSleepAfterFieldON = SLEEP_AFTER_FIELD_ON; // modified with argument -s -@@ -965,8 +967,8 @@ - int iter = 0; - - // libnfc related -- nfc_device_t* pnd; -- nfc_target_t ti; -+ nfc_device* pnd; -+ nfc_target ti; - - // mifare and crapto related - uint32_t uiErrCode = MFCUK_SUCCESS; -@@ -1004,7 +1006,7 @@ - int i, j, k; - size_t st; - int numDefKeys = mfcuk_default_keys_num; -- byte_t (*current_default_keys)[MIFARE_CLASSIC_KEY_BYTELENGTH]; -+ uint8_t (*current_default_keys)[MIFARE_CLASSIC_KEY_BYTELENGTH]; - - // At runtime, duplicate the mfcuk_default_keys[], and then add at it's bottom the default keys specified via -d command line options - if ( !(current_default_keys = malloc(numDefKeys * MIFARE_CLASSIC_KEY_BYTELENGTH)) ) -@@ -1588,7 +1590,8 @@ - - // READER INITIALIZATION BLOCK - // Try to open the NFC reader -- pnd = nfc_connect(NULL); -+ nfc_init(NULL); -+ pnd = nfc_open(NULL, NULL); - - if (pnd == NULL) - { -@@ -1598,18 +1601,20 @@ - - if ( !nfc_initiator_init(pnd) ) - { -- ERR("initializing NFC reader: %s", pnd->acName); -- nfc_disconnect(pnd); -+ ERR("initializing NFC reader: %s", nfc_device_get_name(pnd)); -+ nfc_close(pnd); -+ nfc_exit(NULL); - return 1; - } - -- printf("\nINFO: Connected to NFC reader: %s\n\n", pnd->acName); -+ printf("\nINFO: Connected to NFC reader: %s\n\n", nfc_device_get_name(pnd)); - - // Select tag and get tag info - if ( !mfcuk_darkside_select_tag(pnd, iSleepAtFieldOFF, iSleepAfterFieldON, &ti.nti) ) - { -- ERR("selecting tag on the reader %s", pnd->acName); -- nfc_disconnect(pnd); -+ ERR("selecting tag on the reader %s", nfc_device_get_name(pnd)); -+ nfc_close(pnd); -+ nfc_exit(NULL); - return 1; - } - -@@ -1654,13 +1659,13 @@ - for (i=0; i<max_sectors; i++) - { - uint64_t crntVerifKey = 0; -- byte_t crntVerifTagType = tag_recover_verify.type; -+ uint8_t crntVerifTagType = tag_recover_verify.type; - int crntNumVerifKeys = (bfOpts['D'])?(numDefKeys):(1); - mifare_param mp; - - // Depending on which of keyA or keyB the j value is, the checks and actions below will address exactly that keyA or keyB of current sector -- byte_t action_byte = ACTIONS_KEY_A + 2*(1 - (keyB-k)); -- byte_t result_byte = RESULTS_KEY_A + 2*(1 - (keyB-k)); -+ uint8_t action_byte = ACTIONS_KEY_A + 2*(1 - (keyB-k)); -+ uint8_t result_byte = RESULTS_KEY_A + 2*(1 - (keyB-k)); - - printf(" %x", i); - fflush(stdout); -@@ -1691,7 +1696,8 @@ - /* - // TODO: make this kind of key verification as part of option -a - advanced verification of keys with crapto1 rollback for double verification - // TEST -- nfc_disconnect(pnd); -+ nfc_close(pnd); -+ nfc_exit(NULL); - - // Try to open the NFC reader - pnd = nfc_connect(NULL); -@@ -1705,7 +1711,8 @@ - if ( !nfc_initiator_init(pnd) ) - { - ERR("initializing NFC reader: %s", pnd->acName); -- nfc_disconnect(pnd); -+ nfc_close(pnd); -+ nfc_exit(NULL); - return 1; - } - // TEST -@@ -1775,8 +1782,8 @@ - for (j=keyA; j<=keyB; j++) - { - // Depending on which of keyA or keyB the j value is, the checks and actions below will address exactly that keyA or keyB of current sector -- byte_t action_byte = ACTIONS_KEY_A + 2*(1 - (keyB-j)); -- byte_t result_byte = RESULTS_KEY_A + 2*(1 - (keyB-j)); -+ uint8_t action_byte = ACTIONS_KEY_A + 2*(1 - (keyB-j)); -+ uint8_t result_byte = RESULTS_KEY_A + 2*(1 - (keyB-j)); - - // We have a sector and a key-type of that sector marked for recovery and still the key was not either verified nor recovered - if ( (ptr_trailer->abtAccessBits[action_byte] & ACTIONS_RECOVER) && -@@ -1789,10 +1796,10 @@ - - // TEST - // Before starting a new recovery session, disconnect and reconnect to reader and then tag -- nfc_disconnect(pnd); -+ nfc_close(pnd); - - // Try to open the NFC reader -- pnd = nfc_connect(NULL); -+ pnd = nfc_open(NULL, NULL); - - if (pnd == NULL) - { -@@ -1802,8 +1809,9 @@ - - if ( !nfc_initiator_init(pnd) ) - { -- ERR("initializing NFC reader: %s", pnd->acName); -- nfc_disconnect(pnd); -+ ERR("initializing NFC reader: %s", nfc_device_get_name(pnd)); -+ nfc_close(pnd); -+ nfc_exit(NULL); - return 1; - } - // TEST -@@ -1874,7 +1882,8 @@ - */ - - // Clean up and release device -- nfc_disconnect(pnd); -+ nfc_close(pnd); -+ nfc_exit(NULL); - - // TODO: think which tag to output and make sure it contains all the retreived data - // TODO: make this as a function and call it after each key is verified or recovered (because of reader-locking bug) -Index: src/nfc-utils.h -=================================================================== ---- src/nfc-utils.h (revision 62) -+++ src/nfc-utils.h (working copy) -@@ -79,22 +79,22 @@ - # define ERR(...) warnx ("ERROR: " __VA_ARGS__ ) - #endif - --byte_t oddparity (const byte_t bt); --void oddparity_byte_ts (const byte_t * pbtData, const size_t szLen, byte_t * pbtPar); -+uint8_t oddparity (const uint8_t bt); -+void oddparity_uint8_ts (const uint8_t * pbtData, const size_t szLen, uint8_t * pbtPar); - --void print_hex (const byte_t * pbtData, const size_t szLen); --void print_hex_bits (const byte_t * pbtData, const size_t szBits); --void print_hex_par (const byte_t * pbtData, const size_t szBits, const byte_t * pbtDataPar); -+void print_hex (const uint8_t * pbtData, const size_t szLen); -+void print_hex_bits (const uint8_t * pbtData, const size_t szBits); -+void print_hex_par (const uint8_t * pbtData, const size_t szBits, const uint8_t * pbtDataPar); - --void print_nfc_iso14443a_info (const nfc_iso14443a_info_t nai, bool verbose); --void print_nfc_iso14443b_info (const nfc_iso14443b_info_t nbi, bool verbose); --void print_nfc_iso14443bi_info (const nfc_iso14443bi_info_t nii, bool verbose); --void print_nfc_iso14443b2sr_info (const nfc_iso14443b2sr_info_t nsi, bool verbose); --void print_nfc_iso14443b2ct_info (const nfc_iso14443b2ct_info_t nci, bool verbose); --void print_nfc_felica_info (const nfc_felica_info_t nfi, bool verbose); --void print_nfc_jewel_info (const nfc_jewel_info_t nji, bool verbose); --void print_nfc_dep_info (const nfc_dep_info_t ndi, bool verbose); -+void print_nfc_iso14443a_info (const nfc_iso14443a_info nai, bool verbose); -+void print_nfc_iso14443b_info (const nfc_iso14443b_info nbi, bool verbose); -+void print_nfc_iso14443bi_info (const nfc_iso14443bi_info nii, bool verbose); -+void print_nfc_iso14443b2sr_info (const nfc_iso14443b2sr_info nsi, bool verbose); -+void print_nfc_iso14443b2ct_info (const nfc_iso14443b2ct_info nci, bool verbose); -+void print_nfc_felica_info (const nfc_felica_info nfi, bool verbose); -+void print_nfc_jewel_info (const nfc_jewel_info nji, bool verbose); -+void print_nfc_dep_info (const nfc_dep_info ndi, bool verbose); - --void print_nfc_target (const nfc_target_t nt, bool verbose); -+void print_nfc_target (const nfc_target nt, bool verbose); - - #endif -Index: src/mfcuk.h -=================================================================== ---- src/mfcuk.h (revision 62) -+++ src/mfcuk.h (working copy) -@@ -95,7 +95,7 @@ - typedef struct tag_nonce_entry
- {
- uint32_t tagNonce; // Tag nonce we target for fixation
-- byte_t spoofFlag; // No spoofing until we have a successful auth with this tagNonce. Once we have, we want to spoof to get the encrypted 0x5 value
-+ uint8_t spoofFlag; // No spoofing until we have a successful auth with this tagNonce. Once we have, we want to spoof to get the encrypted 0x5 value
- uint32_t num_of_appearances; // For statistics, how many times this tag nonce appeared for the given SLEEP_ values
-
- // STAGE1 data for "dark side" and lsfr_common_prefix()
-Index: src/mifare.c -=================================================================== ---- src/mifare.c (revision 62) -+++ src/mifare.c (working copy) -@@ -48,12 +48,12 @@ - * The MIFARE Classic Specification (http://www.nxp.com/acrobat/other/identification/M001053_MF1ICS50_rev5_3.pdf) explains more about this process. - */ - bool --nfc_initiator_mifare_cmd (nfc_device_t * pnd, const mifare_cmd mc, const uint8_t ui8Block, mifare_param * pmp) -+nfc_initiator_mifare_cmd (nfc_device * pnd, const mifare_cmd mc, const uint8_t ui8Block, mifare_param * pmp) - { -- byte_t abtRx[265]; -+ uint8_t abtRx[265]; - size_t szRx = sizeof(abtRx); - size_t szParamLen; -- byte_t abtCmd[265]; -+ uint8_t abtCmd[265]; - bool bEasyFraming; - - abtCmd[0] = mc; // The MIFARE Classic command -@@ -92,16 +92,16 @@ - - // When available, copy the parameter bytes - if (szParamLen) -- memcpy (abtCmd + 2, (byte_t *) pmp, szParamLen); -+ memcpy (abtCmd + 2, (uint8_t *) pmp, szParamLen); - -- bEasyFraming = pnd->bEasyFraming; -- if (!nfc_configure (pnd, NDO_EASY_FRAMING, true)) { -+ bEasyFraming = nfc_device_get_easy_framing(pnd); -+ if (!nfc_device_set_property_bool(pnd, NP_EASY_FRAMING, true)) { - nfc_perror (pnd, "nfc_configure"); - return false; - } - // Fire the mifare command -- if (!nfc_initiator_transceive_bytes (pnd, abtCmd, 2 + szParamLen, abtRx, &szRx, NULL)) { -- if (pnd->iLastError == EINVRXFRAM) { -+ if (!nfc_initiator_transceive_bytes (pnd, abtCmd, 2 + szParamLen, abtRx, &szRx, 0)) { -+ if (nfc_device_get_last_error(pnd) == NFC_EINVARG) { - // "Invalid received frame" AKA EINVRXFRAM, usual means we are - // authenticated on a sector but the requested MIFARE cmd (read, write) - // is not permitted by current acces bytes; -@@ -109,10 +109,10 @@ - } else { - nfc_perror (pnd, "nfc_initiator_transceive_bytes"); - } -- nfc_configure (pnd, NDO_EASY_FRAMING, bEasyFraming); -+ nfc_device_set_property_bool (pnd, NP_EASY_FRAMING, bEasyFraming); - return false; - } -- if (!nfc_configure (pnd, NDO_EASY_FRAMING, bEasyFraming)) { -+ if (!nfc_device_set_property_bool (pnd, NP_EASY_FRAMING, bEasyFraming)) { - nfc_perror (pnd, "nfc_configure"); - return false; - } -Index: src/mifare.h -=================================================================== ---- src/mifare.h (revision 62) -+++ src/mifare.h (working copy) -@@ -38,7 +38,7 @@ - - # include <nfc/nfc-types.h> - --// Compiler directive, set struct alignment to 1 byte_t for compatibility -+// Compiler directive, set struct alignment to 1 uint8_t for compatibility - # pragma pack(1) - - typedef enum { -@@ -54,16 +54,16 @@ - - // MIFARE command params - typedef struct { -- byte_t abtKey[6]; -- byte_t abtUid[4]; -+ uint8_t abtKey[6]; -+ uint8_t abtUid[4]; - } mifare_param_auth; - - typedef struct { -- byte_t abtData[16]; -+ uint8_t abtData[16]; - } mifare_param_data; - - typedef struct { -- byte_t abtValue[4]; -+ uint8_t abtValue[4]; - } mifare_param_value; - - typedef union { -@@ -75,28 +75,28 @@ - // Reset struct alignment to default - # pragma pack() - --bool nfc_initiator_mifare_cmd (nfc_device_t * pnd, const mifare_cmd mc, const uint8_t ui8Block, mifare_param * pmp); -+bool nfc_initiator_mifare_cmd (nfc_device * pnd, const mifare_cmd mc, const uint8_t ui8Block, mifare_param * pmp); - --// Compiler directive, set struct alignment to 1 byte_t for compatibility -+// Compiler directive, set struct alignment to 1 uint8_t for compatibility - # pragma pack(1) - - // MIFARE Classic - typedef struct { -- byte_t abtUID[4]; -- byte_t btBCC; -- byte_t btUnknown; -- byte_t abtATQA[2]; -- byte_t abtUnknown[8]; -+ uint8_t abtUID[4]; -+ uint8_t btBCC; -+ uint8_t btUnknown; -+ uint8_t abtATQA[2]; -+ uint8_t abtUnknown[8]; - } mifare_classic_block_manufacturer; - - typedef struct { -- byte_t abtData[16]; -+ uint8_t abtData[16]; - } mifare_classic_block_data; - - typedef struct { -- byte_t abtKeyA[6]; -- byte_t abtAccessBits[4]; -- byte_t abtKeyB[6]; -+ uint8_t abtKeyA[6]; -+ uint8_t abtAccessBits[4]; -+ uint8_t abtKeyB[6]; - } mifare_classic_block_trailer; - - typedef union { -@@ -111,17 +111,17 @@ - - // MIFARE Ultralight - typedef struct { -- byte_t sn0[3]; -- byte_t btBCC0; -- byte_t sn1[4]; -- byte_t btBCC1; -- byte_t internal; -- byte_t lock[2]; -- byte_t otp[4]; -+ uint8_t sn0[3]; -+ uint8_t btBCC0; -+ uint8_t sn1[4]; -+ uint8_t btBCC1; -+ uint8_t internal; -+ uint8_t lock[2]; -+ uint8_t otp[4]; - } mifareul_block_manufacturer; - - typedef struct { -- byte_t abtData[16]; -+ uint8_t abtData[16]; - } mifareul_block_data; - - typedef union { -Index: src/mfcuk_mifare.c -=================================================================== ---- src/mfcuk_mifare.c (revision 62) -+++ src/mfcuk_mifare.c (working copy) -@@ -53,7 +53,7 @@ - #include "mfcuk_mifare.h"
-
- // Default keys used as a *BIG* mistake in many applications - especially System Integrators should pay attention!
--byte_t mfcuk_default_keys[][MIFARE_CLASSIC_KEY_BYTELENGTH] =
-+uint8_t mfcuk_default_keys[][MIFARE_CLASSIC_KEY_BYTELENGTH] =
- {
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // Place-holder for current key to verify
- {0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
-@@ -68,7 +68,7 @@ -
- int mfcuk_default_keys_num = sizeof(mfcuk_default_keys)/sizeof(mfcuk_default_keys[0]);
-
--bool is_valid_block(byte_t bTagType, uint32_t uiBlock)
-+bool is_valid_block(uint8_t bTagType, uint32_t uiBlock)
- {
- if ( IS_MIFARE_CLASSIC_1K(bTagType) && (uiBlock < MIFARE_CLASSIC_1K_MAX_BLOCKS) )
- {
-@@ -83,7 +83,7 @@ - return false;
- }
-
--bool is_valid_sector(byte_t bTagType, uint32_t uiSector)
-+bool is_valid_sector(uint8_t bTagType, uint32_t uiSector)
- {
- if ( IS_MIFARE_CLASSIC_1K(bTagType) && (uiSector < MIFARE_CLASSIC_1K_MAX_SECTORS) )
- {
-@@ -98,7 +98,7 @@ - return false;
- }
-
--bool is_first_block(byte_t bTagType, uint32_t uiBlock)
-+bool is_first_block(uint8_t bTagType, uint32_t uiBlock)
- {
- if ( !is_valid_block(bTagType, uiBlock) )
- {
-@@ -121,7 +121,7 @@ - return false;
- }
-
--bool is_trailer_block(byte_t bTagType, uint32_t uiBlock)
-+bool is_trailer_block(uint8_t bTagType, uint32_t uiBlock)
- {
- if ( !is_valid_block(bTagType, uiBlock) )
- {
-@@ -144,7 +144,7 @@ - return false;
- }
-
--uint32_t get_first_block(byte_t bTagType, uint32_t uiBlock)
-+uint32_t get_first_block(uint8_t bTagType, uint32_t uiBlock)
- {
- if ( !is_valid_block(bTagType, uiBlock) )
- {
-@@ -167,7 +167,7 @@ - return MIFARE_CLASSIC_INVALID_BLOCK;
- }
-
--uint32_t get_trailer_block(byte_t bTagType, uint32_t uiBlock)
-+uint32_t get_trailer_block(uint8_t bTagType, uint32_t uiBlock)
- {
- if ( !is_valid_block(bTagType, uiBlock) )
- {
-@@ -190,7 +190,7 @@ - return MIFARE_CLASSIC_INVALID_BLOCK;
- }
-
--bool is_big_sector(byte_t bTagType, uint32_t uiSector)
-+bool is_big_sector(uint8_t bTagType, uint32_t uiSector)
- {
- if ( !is_valid_sector(bTagType, uiSector) )
- {
-@@ -205,7 +205,7 @@ - return false;
- }
-
--uint32_t get_first_block_for_sector(byte_t bTagType, uint32_t uiSector)
-+uint32_t get_first_block_for_sector(uint8_t bTagType, uint32_t uiSector)
- {
- if ( !is_valid_sector(bTagType, uiSector) )
- {
-@@ -228,7 +228,7 @@ - return MIFARE_CLASSIC_INVALID_BLOCK;
- }
-
--uint32_t get_trailer_block_for_sector(byte_t bTagType, uint32_t uiSector)
-+uint32_t get_trailer_block_for_sector(uint8_t bTagType, uint32_t uiSector)
- {
- if ( !is_valid_sector(bTagType, uiSector) )
- {
-@@ -251,7 +251,7 @@ - return MIFARE_CLASSIC_INVALID_BLOCK;
- }
-
--uint32_t get_sector_for_block(byte_t bTagType, uint32_t uiBlock)
-+uint32_t get_sector_for_block(uint8_t bTagType, uint32_t uiBlock)
- {
- if ( !is_valid_block(bTagType, uiBlock) )
- {
-@@ -274,44 +274,44 @@ - return MIFARE_CLASSIC_INVALID_BLOCK;
- }
-
--bool is_first_sector(byte_t bTagType, uint32_t uiSector)
-+bool is_first_sector(uint8_t bTagType, uint32_t uiSector)
- {
- // TODO: write code
- return false;
- }
-
--bool is_first_big_sector(byte_t bTagType, uint32_t uiSector)
-+bool is_first_big_sector(uint8_t bTagType, uint32_t uiSector)
- {
- // TODO: write code
- return false;
- }
-
--bool is_first_small_sector(byte_t bTagType, uint32_t uiSector)
-+bool is_first_small_sector(uint8_t bTagType, uint32_t uiSector)
- {
- // TODO: write code
- return false;
- }
-
--bool is_last_sector(byte_t bTagType, uint32_t uiSector)
-+bool is_last_sector(uint8_t bTagType, uint32_t uiSector)
- {
- // TODO: write code
- return false;
- }
-
--bool is_last_big_sector(byte_t bTagType, uint32_t uiSector)
-+bool is_last_big_sector(uint8_t bTagType, uint32_t uiSector)
- {
- // TODO: write code
- return false;
- }
-
--bool is_last_small_sector(byte_t bTagType, uint32_t uiSector)
-+bool is_last_small_sector(uint8_t bTagType, uint32_t uiSector)
- {
- // TODO: write code
- return false;
- }
-
- // Test case function for checking correct functionality of the block/sector is_ ang get_ functions
--void test_mifare_classic_blocks_sectors_functions(byte_t bTagType)
-+void test_mifare_classic_blocks_sectors_functions(uint8_t bTagType)
- {
- uint32_t i;
- uint32_t max_blocks, max_sectors;
-@@ -460,7 +460,7 @@ - void print_mifare_classic_tag_keys(const char *title, mifare_classic_tag *tag)
- {
- uint32_t i, max_blocks, trailer_block;
-- byte_t bTagType;
-+ uint8_t bTagType;
- mifare_classic_block_trailer *ptr_trailer = NULL;
-
- if (!tag)
-@@ -521,7 +521,7 @@ - return;
- }
-
--bool mfcuk_key_uint64_to_arr(const uint64_t *ui64Key, byte_t *arr6Key)
-+bool mfcuk_key_uint64_to_arr(const uint64_t *ui64Key, uint8_t *arr6Key)
- {
- int i;
-
-@@ -532,13 +532,13 @@ -
- for (i = 0; i<MIFARE_CLASSIC_KEY_BYTELENGTH; i++)
- {
-- arr6Key[i] = (byte_t) (((*ui64Key) >> 8*(MIFARE_CLASSIC_KEY_BYTELENGTH - i - 1)) & 0xFF);
-+ arr6Key[i] = (uint8_t) (((*ui64Key) >> 8*(MIFARE_CLASSIC_KEY_BYTELENGTH - i - 1)) & 0xFF);
- }
-
- return true;
- }
-
--bool mfcuk_key_arr_to_uint64(const byte_t *arr6Key, uint64_t *ui64Key)
-+bool mfcuk_key_arr_to_uint64(const uint8_t *arr6Key, uint64_t *ui64Key)
- {
- uint64_t key = 0;
- int i;
-Index: src/mfcuk_mifare.h -=================================================================== ---- src/mfcuk_mifare.h (revision 62) -+++ src/mfcuk_mifare.h (working copy) -@@ -101,7 +101,7 @@ - // Define an extended type of dump, basically a wrapper dump around basic tag dump
- typedef struct {
- uint32_t uid; // looks redundant, but it is easier to use dmp.uid instead of dmp.amb.mbm.abtUID[0]...[3]
-- byte_t type; // ATS/SAK from ti.tia.btSak, example 0x08h for Mifare 1K, 0x18h for Mifare 4K
-+ uint8_t type; // ATS/SAK from ti.tia.btSak, example 0x08h for Mifare 1K, 0x18h for Mifare 4K
- char datetime[14]; // non-zero-terminated date-time of dump in format YYYYMMDDH24MISS, example 20091114231541 - 14 Nov 2009, 11:15:41 PM
- char description[MFCUK_EXTENDED_DESCRIPTION_LENGTH]; // a description of the tag dump, example "RATB_DUMP_BEFORE_PAY"
- mifare_classic_tag tag_basic;
-@@ -114,32 +114,32 @@ - } mifare_key_type;
-
- // Default keys used as a *BIG* mistake in many applications - especially System Integrators should pay attention!
--extern byte_t mfcuk_default_keys[][MIFARE_CLASSIC_KEY_BYTELENGTH];
-+extern uint8_t mfcuk_default_keys[][MIFARE_CLASSIC_KEY_BYTELENGTH];
- extern int mfcuk_default_keys_num;
-
--bool is_valid_block(byte_t bTagType, uint32_t uiBlock);
--bool is_valid_sector(byte_t bTagType, uint32_t uiSector);
--bool is_first_block(byte_t bTagType, uint32_t uiBlock);
--bool is_trailer_block(byte_t bTagType, uint32_t uiBlock);
--uint32_t get_first_block(byte_t bTagType, uint32_t uiBlock);
--uint32_t get_trailer_block(byte_t bTagType, uint32_t uiBlock);
--bool is_big_sector(byte_t bTagType, uint32_t uiSector);
--uint32_t get_first_block_for_sector(byte_t bTagType, uint32_t uiSector);
--uint32_t get_trailer_block_for_sector(byte_t bTagType, uint32_t uiSector);
--uint32_t get_sector_for_block(byte_t bTagType, uint32_t uiBlock);
--bool is_first_sector(byte_t bTagType, uint32_t uiSector);
--bool is_first_big_sector(byte_t bTagType, uint32_t uiSector);
--bool is_first_small_sector(byte_t bTagType, uint32_t uiSector);
--bool is_last_sector(byte_t bTagType, uint32_t uiSector);
--bool is_last_big_sector(byte_t bTagType, uint32_t uiSector);
--bool is_last_small_sector(byte_t bTagType, uint32_t uiSector);
--void test_mifare_classic_blocks_sectors_functions(byte_t bTagType);
-+bool is_valid_block(uint8_t bTagType, uint32_t uiBlock);
-+bool is_valid_sector(uint8_t bTagType, uint32_t uiSector);
-+bool is_first_block(uint8_t bTagType, uint32_t uiBlock);
-+bool is_trailer_block(uint8_t bTagType, uint32_t uiBlock);
-+uint32_t get_first_block(uint8_t bTagType, uint32_t uiBlock);
-+uint32_t get_trailer_block(uint8_t bTagType, uint32_t uiBlock);
-+bool is_big_sector(uint8_t bTagType, uint32_t uiSector);
-+uint32_t get_first_block_for_sector(uint8_t bTagType, uint32_t uiSector);
-+uint32_t get_trailer_block_for_sector(uint8_t bTagType, uint32_t uiSector);
-+uint32_t get_sector_for_block(uint8_t bTagType, uint32_t uiBlock);
-+bool is_first_sector(uint8_t bTagType, uint32_t uiSector);
-+bool is_first_big_sector(uint8_t bTagType, uint32_t uiSector);
-+bool is_first_small_sector(uint8_t bTagType, uint32_t uiSector);
-+bool is_last_sector(uint8_t bTagType, uint32_t uiSector);
-+bool is_last_big_sector(uint8_t bTagType, uint32_t uiSector);
-+bool is_last_small_sector(uint8_t bTagType, uint32_t uiSector);
-+void test_mifare_classic_blocks_sectors_functions(uint8_t bTagType);
- bool mfcuk_save_tag_dump(char *filename, mifare_classic_tag *tag);
- bool mfcuk_save_tag_dump_ext(char *filename, mifare_classic_tag_ext *tag_ext);
- bool mfcuk_load_tag_dump(char *filename, mifare_classic_tag *tag);
- bool mfcuk_load_tag_dump_ext(char *filename, mifare_classic_tag_ext *tag_ext);
- void print_mifare_classic_tag_keys(const char *title, mifare_classic_tag *tag);
--bool mfcuk_key_uint64_to_arr(const uint64_t *ui64Key, byte_t *arr6Key);
--bool mfcuk_key_arr_to_uint64(const byte_t *arr6Key, uint64_t *ui64Key);
-+bool mfcuk_key_uint64_to_arr(const uint64_t *ui64Key, uint8_t *arr6Key);
-+bool mfcuk_key_arr_to_uint64(const uint8_t *arr6Key, uint64_t *ui64Key);
-
- #endif // _MFCUK_MIFARE_H_
|