]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdhfmf.c
CHG: extern methods.
[proxmark3-svn] / client / cmdhfmf.c
index 793863b09655108e67a9a482d96b3d0a2188d9fd..13cbee68587b9c321b50fa645d2ea9704b47192b 100644 (file)
@@ -340,7 +340,7 @@ int CmdHF14AMfRdBl(const char *Cmd) {
        SendCommand(&c);\r
 \r
        UsbCommand resp;\r
        SendCommand(&c);\r
 \r
        UsbCommand resp;\r
-       if (WaitForResponseTimeout(CMD_ACK,&resp,1500)) {\r
+       if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) {\r
                uint8_t isOK  = resp.arg[0] & 0xff;\r
                uint8_t *data = resp.d.asBytes;\r
 \r
                uint8_t isOK  = resp.arg[0] & 0xff;\r
                uint8_t *data = resp.d.asBytes;\r
 \r
@@ -2451,6 +2451,43 @@ int CmdHf14MfDecryptBytes(const char *Cmd){
        return tryDecryptWord( nt, ar_enc, at_enc, data, len);\r
 }\r
 \r
        return tryDecryptWord( nt, ar_enc, at_enc, data, len);\r
 }\r
 \r
+int CmdHf14AMfSetMod(const char *Cmd) {\r
+       uint8_t key[6] = {0, 0, 0, 0, 0, 0};\r
+       uint8_t mod = 2;\r
+\r
+       char ctmp = param_getchar(Cmd, 0);\r
+       if (ctmp == '0') {\r
+               mod = 0;\r
+       } else if (ctmp == '1') {\r
+               mod = 1;\r
+       }\r
+       int gethexfail = param_gethex(Cmd, 1, key, 12);\r
+       if (mod == 2 || gethexfail) {\r
+               PrintAndLog("Sets the load modulation strength of a MIFARE Classic EV1 card.");\r
+               PrintAndLog("Usage: hf mf setmod <0/1> <block 0 key A>");\r
+               PrintAndLog("       0 = normal modulation");\r
+               PrintAndLog("       1 = strong modulation (default)");\r
+               return 1;\r
+       }\r
+\r
+       UsbCommand c = {CMD_MIFARE_SETMOD, {mod, 0, 0}};\r
+       memcpy(c.d.asBytes, key, 6);\r
+       clearCommandBuffer();\r
+       SendCommand(&c);\r
+\r
+       UsbCommand resp;\r
+       if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) {\r
+               uint8_t ok = resp.arg[0] & 0xff;\r
+               PrintAndLog("isOk:%02x", ok);\r
+               if (!ok) {\r
+                       PrintAndLog("Failed.");\r
+               }\r
+       } else {\r
+               PrintAndLog("Command execute timeout");\r
+       }\r
+       return 0;\r
+}\r
+\r
 static command_t CommandTable[] = {\r
        {"help",                CmdHelp,                                1, "This help"},\r
        {"dbg",                 CmdHF14AMfDbg,                  0, "Set default debug mode"},\r
 static command_t CommandTable[] = {\r
        {"help",                CmdHelp,                                1, "This help"},\r
        {"dbg",                 CmdHF14AMfDbg,                  0, "Set default debug mode"},\r
@@ -2480,6 +2517,7 @@ static command_t CommandTable[] = {
        {"cload",               CmdHF14AMfCLoad,                0, "Load dump into magic Chinese card"},\r
        {"csave",               CmdHF14AMfCSave,                0, "Save dump from magic Chinese card into file or emulator"},\r
        {"decrypt",             CmdHf14MfDecryptBytes,  1, "[nt] [ar_enc] [at_enc] [data] - to decrypt snoop or trace"},\r
        {"cload",               CmdHF14AMfCLoad,                0, "Load dump into magic Chinese card"},\r
        {"csave",               CmdHF14AMfCSave,                0, "Save dump from magic Chinese card into file or emulator"},\r
        {"decrypt",             CmdHf14MfDecryptBytes,  1, "[nt] [ar_enc] [at_enc] [data] - to decrypt snoop or trace"},\r
+       {"setmod",              CmdHf14AMfSetMod,               0, "Set MIFARE Classic EV1 load modulation strength"},\r
        {NULL, NULL, 0, NULL}\r
 };\r
 \r
        {NULL, NULL, 0, NULL}\r
 };\r
 \r
Impressum, Datenschutz