]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
hf mfu minor output adjustments 101/head
authormarshmellow42 <marshmellowrf@gmail.com>
Fri, 22 May 2015 17:17:51 +0000 (13:17 -0400)
committermarshmellow42 <marshmellowrf@gmail.com>
Fri, 22 May 2015 17:17:51 +0000 (13:17 -0400)
dump key placed properly for EV1 and NTAGs

config pages for ntags corrected in printout

note on config that PWD and PACK cannot
actually be read from memory  (probably could just delete them (other
than it shows what memory block they are stored in for changing...)

client/cmdhfmfu.c

index dbe4a7540983c4bb29780c216cc822fb09c317f2..07c379bc0d63c5ffc77540384ea4246199b231a3 100644 (file)
@@ -415,7 +415,7 @@ static int ulc_print_configuration( uint8_t *data){
        return 0;
 }
 
        return 0;
 }
 
-static int ulev1_print_configuration( uint8_t *data){
+static int ulev1_print_configuration( uint8_t *data, uint8_t startPage){
 
        PrintAndLog("\n--- Tag Configuration");
 
 
        PrintAndLog("\n--- Tag Configuration");
 
@@ -425,13 +425,13 @@ static int ulev1_print_configuration( uint8_t *data){
        bool prot = (data[4] & 0x80);
        uint8_t vctid = data[5];
 
        bool prot = (data[4] & 0x80);
        uint8_t vctid = data[5];
 
-       PrintAndLog("  cfg0 [16/0x10] : %s", sprint_hex(data, 4));
+       PrintAndLog("  cfg0 [%u/0x%02X] : %s", startPage, startPage, sprint_hex(data, 4));
        if ( data[3] < 0xff )
                PrintAndLog("                    - page %d and above need authentication",data[3]);
        else 
                PrintAndLog("                    - pages don't need authentication");
        PrintAndLog("                    - strong modulation mode %s", (strg_mod_en) ? "enabled":"disabled");
        if ( data[3] < 0xff )
                PrintAndLog("                    - page %d and above need authentication",data[3]);
        else 
                PrintAndLog("                    - pages don't need authentication");
        PrintAndLog("                    - strong modulation mode %s", (strg_mod_en) ? "enabled":"disabled");
-       PrintAndLog("  cfg1 [17/0x11] : %s", sprint_hex(data+4, 4) );
+       PrintAndLog("  cfg1 [%u/0x%02X] : %s", startPage + 1, startPage + 1,  sprint_hex(data+4, 4) );
        if ( authlim == 0)
                PrintAndLog("                    - Unlimited password attempts");
        else
        if ( authlim == 0)
                PrintAndLog("                    - Unlimited password attempts");
        else
@@ -439,8 +439,9 @@ static int ulev1_print_configuration( uint8_t *data){
        PrintAndLog("                    - user configuration %s", cfglck ? "permanently locked":"writeable");
        PrintAndLog("                    - %s access is protected with password", prot ? "read and write":"write");
        PrintAndLog("                    - %02X, Virtual Card Type Identifier is %s default", vctid, (vctid==0x05)? "":"not");
        PrintAndLog("                    - user configuration %s", cfglck ? "permanently locked":"writeable");
        PrintAndLog("                    - %s access is protected with password", prot ? "read and write":"write");
        PrintAndLog("                    - %02X, Virtual Card Type Identifier is %s default", vctid, (vctid==0x05)? "":"not");
-       PrintAndLog("  PWD  [18/0x12] : %s", sprint_hex(data+8, 4));
-       PrintAndLog("  PACK [19/0x13] : %s", sprint_hex(data+12, 4));
+       PrintAndLog("  PWD  [%u/0x%02X] : %s- (cannot be read)", startPage + 2, startPage + 2,  sprint_hex(data+8, 4));
+       PrintAndLog("  PACK [%u/0x%02X] : %s      - (cannot be read)", startPage + 3, startPage + 3,  sprint_hex(data+12, 2));
+       PrintAndLog("  RFU  [%u/0x%02X] :       %s- (cannot be read)", startPage + 3, startPage + 3,  sprint_hex(data+12, 2));
        return 0;
 }
 
        return 0;
 }
 
@@ -806,7 +807,7 @@ int CmdHF14AMfUInfo(const char *Cmd){
                        } else if (status == 16) {
                                // save AUTHENTICATION LIMITS for later:
                                authlim = (ulev1_conf[4] & 0x07);
                        } else if (status == 16) {
                                // save AUTHENTICATION LIMITS for later:
                                authlim = (ulev1_conf[4] & 0x07);
-                               ulev1_print_configuration(ulev1_conf);
+                               ulev1_print_configuration(ulev1_conf, startconfigblock);
                        }
                }
 
                        }
                }
 
@@ -1137,13 +1138,18 @@ int CmdHF14AMfUDump(const char *Cmd){
 
        // add keys to block dump
        if (hasAuthKey) {
 
        // add keys to block dump
        if (hasAuthKey) {
-               if (!swapEndian) {
+               if (!swapEndian){
                        authKeyPtr = SwapEndian64(authenticationkey, dataLen, (dataLen == 16) ? 8 : 4);
                        authKeyPtr = SwapEndian64(authenticationkey, dataLen, (dataLen == 16) ? 8 : 4);
-                       memcpy(data + Pages*4, authKeyPtr, dataLen);
                } else {
                } else {
-                       memcpy(data + Pages*4, authenticationkey, dataLen);
+                       authKeyPtr = authenticationkey;
+               }
+
+               if (tagtype & UL_C){ //add 4 pages
+                       memcpy(data + Pages*4, authKeyPtr, dataLen);
+                       Pages += dataLen/4;  
+               } else { // 2nd page from end
+                       memcpy(data + (Pages*4) - 8, authenticationkey, dataLen);
                }
                }
-               Pages += dataLen/4;  //not sure output is in correct location for all tag types.
        }
 
        for (i = 0; i < Pages; ++i) {
        }
 
        for (i = 0; i < Pages; ++i) {
@@ -1195,7 +1201,7 @@ int CmdHF14AMfUDump(const char *Cmd){
                        case 43: tmplockbit = bit2[9]; break;  //auth1
                        default: break;
                }
                        case 43: tmplockbit = bit2[9]; break;  //auth1
                        default: break;
                }
-               PrintAndLog("Block %02x:%s [%d] {%.4s}", i, sprint_hex(data + i * 4, 4), tmplockbit, data+i*4);
+               PrintAndLog("Block %02X:%s [%d] {%.4s}", i, sprint_hex(data + i * 4, 4), tmplockbit, data+i*4);
        }
 
        // user supplied filename?
        }
 
        // user supplied filename?
Impressum, Datenschutz