]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdhfmfdes.c
Merge pull request #81 from mdp/fixguard
[proxmark3-svn] / client / cmdhfmfdes.c
index b8db1cab960950e04dae389edb5cc9a9e6a508ac..a00592330e9d4ad37733128afce4997f3df53753 100644 (file)
@@ -159,7 +159,7 @@ int CmdHF14ADesInfo(const char *Cmd){
        PrintAndLog("      Vendor Id      : %s", getTagInfo(resp.d.asBytes[7]));
        PrintAndLog("      Type           : 0x%02X",resp.d.asBytes[8]);
        PrintAndLog("      Subtype        : 0x%02X",resp.d.asBytes[9]);
-       PrintAndLog("      Version        : %d.%d",resp.d.asBytes[10], resp.d.asBytes[11]);
+       PrintAndLog("      Version        : %s",GetVersionStr(resp.d.asBytes[10], resp.d.asBytes[11]) );
        PrintAndLog("      Storage size   : %s",GetCardSizeStr(resp.d.asBytes[12]));
        PrintAndLog("      Protocol       : %s",GetProtocolStr(resp.d.asBytes[13]));
        PrintAndLog("  -----------------------------------------------------------");
@@ -217,7 +217,7 @@ int CmdHF14ADesInfo(const char *Cmd){
 */
 char * GetCardSizeStr( uint8_t fsize ){
  
-       static char buf[30];
+       static char buf[30] = {0x00};
        char *retStr = buf;
 
        uint16_t usize = 1 << ((fsize >>1) + 1);
@@ -233,7 +233,7 @@ char * GetCardSizeStr( uint8_t fsize ){
 
 char * GetProtocolStr(uint8_t id){
 
-       static char buf[30];
+       static char buf[30] = {0x00};
        char *retStr = buf;
 
        if ( id == 0x05)
@@ -243,6 +243,22 @@ char * GetProtocolStr(uint8_t id){
        return buf;
 }
 
+char * GetVersionStr(uint8_t major, uint8_t minor){
+
+       static char buf[30] = {0x00};
+       char *retStr = buf;
+
+       if ( major == 0x00)
+               sprintf(retStr,"%d.%d (Desfire MF3ICD40)", major, minor);       
+       else if ( major == 0x01 && minor == 0x00)
+               sprintf(retStr,"%d.%d (Desfire EV1)", major, minor);
+       else if ( major == 0x12 && minor == 0x00)
+               sprintf(retStr,"%d.%d (Desfire EV2)", major, minor);
+       else
+               sprintf(retStr,"%d.%d (Unknown)", major, minor);
+       return buf;
+}
+
 void GetKeySettings( uint8_t *aid){
        
        char messStr[512] = {0x00};
@@ -352,7 +368,7 @@ void GetKeySettings( uint8_t *aid){
                        PrintAndLog("   Can't read Application Master key settings");
                } else {
                        // Access rights.
-                       uint8_t rights = (resp.d.asBytes[3] >> 4 && 0xff);
+                       uint8_t rights = (resp.d.asBytes[3] >> 4 & 0xff);
                        switch (rights){
                                case 0x00:
                                        str = "AMK authentication is necessary to change any key (default)";
@@ -649,7 +665,6 @@ static command_t CommandTable[] = {
 int CmdHFMFDes(const char *Cmd) {
    // flush
        clearCommandBuffer();
-       //WaitForResponseTimeout(CMD_ACK,NULL,100);
        CmdsParse(CommandTable, Cmd);
        return 0;
 }
Impressum, Datenschutz