]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdhfmf.c
ADD: added some identification on between old Desfire, Desfire EV1 and Desfire EV2
[proxmark3-svn] / client / cmdhfmf.c
index 2e1b2186c07d6a411499b0af84b6786cd3bff331..9b43f4118289ae109c2e8e9860ff4cf51146e3dc 100644 (file)
@@ -94,12 +94,14 @@ int usage_hf14_hardnested(void){
        PrintAndLog("      w    acquire nonces and write them to binary file nonces.bin");\r
        PrintAndLog("      s    slower acquisition (required by some non standard cards)");\r
        PrintAndLog("      r    read nonces.bin and start attack");\r
+       PrintAndLog("      t    tests?");\r
        PrintAndLog(" ");\r
        PrintAndLog("samples:");\r
        PrintAndLog("      hf mf hardnested 0 A FFFFFFFFFFFF 4 A");\r
        PrintAndLog("      hf mf hardnested 0 A FFFFFFFFFFFF 4 A w");\r
        PrintAndLog("      hf mf hardnested 0 A FFFFFFFFFFFF 4 A w s");\r
        PrintAndLog("      hf mf hardnested r");\r
+       PrintAndLog("      hf mf hardnested r a0a1a2a3a4a5");\r
        PrintAndLog(" ");\r
        PrintAndLog("Add the known target key to check if it is present in the remaining key space:");\r
        PrintAndLog("      sample5: hf mf hardnested 0 A A0A1A2A3A4A5 4 A FFFFFFFFFFFF");\r
@@ -109,15 +111,18 @@ int usage_hf14_chk(void){
        PrintAndLog("Usage:  hf mf chk <block number>|<*card memory> <key type (A/B/?)> [t|d] [<key (12 hex symbols)>] [<dic (*.dic)>]");\r
        PrintAndLog("options:");\r
        PrintAndLog("      h    this help");    \r
-       PrintAndLog("      *    all sectors");\r
-       PrintAndLog("      card memory - 0 - MINI(320 bytes), 1 - 1K, 2 - 2K, 4 - 4K, <other> - 1K");\r
+       PrintAndLog("      *    all sectors based on card memory, other values then below defaults to 1k");\r
+       PrintAndLog("                           0 - MINI(320 bytes)");\r
+       PrintAndLog("                           1 - 1K");\r
+       PrintAndLog("                           2 - 2K");\r
+       PrintAndLog("                           4 - 4K");\r
        PrintAndLog("      d    write keys to binary file");\r
        PrintAndLog("      t    write keys to emulator memory\n");\r
        PrintAndLog(" ");\r
        PrintAndLog("samples:");\r
-       PrintAndLog("      hf mf chk 0 A 1234567890ab keys.dic");\r
-       PrintAndLog("      hf mf chk *1 ? t");\r
-       PrintAndLog("      hf mf chk *1 ? d");\r
+       PrintAndLog("      hf mf chk 0 A 1234567890ab keys.dic     -- target block 0, Key A");\r
+       PrintAndLog("      hf mf chk *1 ? t                        -- target all blocks, all keys, 1K, write to emul");\r
+       PrintAndLog("      hf mf chk *1 ? d                        -- target all blocks, all keys, 1K, write to file");\r
        return 0;\r
 }\r
 \r
@@ -937,7 +942,7 @@ int CmdHF14AMfNestedHard(const char *Cmd) {
        \r
        char ctmp;\r
        ctmp = param_getchar(Cmd, 0);\r
-       if (ctmp != 'H' && ctmp != 'h' ) return usage_hf14_hardnested();\r
+       if (ctmp == 'H' || ctmp == 'h' ) return usage_hf14_hardnested();\r
        if (ctmp != 'R' && ctmp != 'r' && ctmp != 'T' && ctmp != 't' && strlen(Cmd) < 20) return usage_hf14_hardnested();\r
        \r
        bool know_target_key = false;\r
@@ -1003,9 +1008,9 @@ int CmdHF14AMfNestedHard(const char *Cmd) {
                        trgBlockNo, \r
                        trgKeyType?'B':'A', \r
                        trgkey[0], trgkey[1], trgkey[2], trgkey[3], trgkey[4], trgkey[5],\r
-                       know_target_key?"":" (not set)",\r
-                       nonce_file_write?"write":nonce_file_read?"read":"none",\r
-                       slow?"Yes":"No",\r
+                       know_target_key ? "" : " (not set)",\r
+                       nonce_file_write ? "write": nonce_file_read ? "read" : "none",\r
+                       slow ? "Yes" : "No",\r
                        tests);\r
 \r
        int16_t isOK = mfnestedhard(blockNo, keyType, key, trgBlockNo, trgKeyType, know_target_key?trgkey:NULL, nonce_file_read, nonce_file_write, slow, tests);\r
@@ -1212,7 +1217,8 @@ int CmdHF14AMfChk(const char *Cmd) {
                        if (e_sector[i].foundKey[trgKeyType]) continue;\r
                                                \r
                        for (uint32_t c = 0; c < keycnt; c += max_keys) {\r
-                               \r
+                               printf(".");\r
+                               fflush(stdout);                 \r
                                uint32_t size = keycnt-c > max_keys ? max_keys : keycnt-c;\r
                                \r
                                res = mfCheckKeys(b, trgKeyType, true, size, &keyBlock[6*c], &key64);\r
@@ -1221,8 +1227,6 @@ int CmdHF14AMfChk(const char *Cmd) {
                                        e_sector[i].foundKey[trgKeyType] = TRUE;\r
                                        break;\r
                                }\r
-                               printf(".");\r
-                               fflush(stdout);\r
                        }\r
                        b < 127 ? ( b +=4 ) : ( b += 16 );      \r
                }\r
@@ -1230,10 +1234,10 @@ int CmdHF14AMfChk(const char *Cmd) {
        t1 = clock() - t1;\r
        time(&end);\r
        unsigned long elapsed_time = difftime(end, start);      \r
-\r
        if ( t1 > 0 )\r
-               printf("\nTime in checkkeys: %.0f ticks %u seconds\n", (float)t1, elapsed_time);\r
+               PrintAndLog("\nTime in checkkeys: %.0f ticks %u seconds\n", (float)t1, elapsed_time);\r
 \r
+               \r
        // 20160116 If Sector A is found, but not Sector B,  try just reading it of the tag?\r
        if ( keyType != 1 ) {\r
                PrintAndLog("testing to read key B...");\r
Impressum, Datenschutz