]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdhftopaz.c
@Marshmellow42 additions:
[proxmark3-svn] / client / cmdhftopaz.c
index aab1d248b46710e77d0ab3050497480f6f5067d6..a982b88a9ff8dc7b3a006049ee40902daf44bd94 100644 (file)
@@ -188,7 +188,7 @@ static bool topaz_print_lock_control_TLVs(uint8_t *memory)
                if (tag == 0x01) {                      // the Lock Control TLV
                        uint8_t pages_addr = value[0] >> 4;
                        uint8_t byte_offset = value[0] & 0x0f;
                if (tag == 0x01) {                      // the Lock Control TLV
                        uint8_t pages_addr = value[0] >> 4;
                        uint8_t byte_offset = value[0] & 0x0f;
-                       uint8_t size_in_bits = value[1] ? value[1] : 256;
+                       uint8_t size_in_bits = value[1] ? value[1] : 255;
                        uint8_t bytes_per_page = 1 << (value[2] & 0x0f);
                        uint8_t bytes_locked_per_bit = 1 << (value[2] >> 4);
                        PrintAndLog("Lock Area of %d bits at byte offset 0x%02x. Each Lock Bit locks %d bytes.", 
                        uint8_t bytes_per_page = 1 << (value[2] & 0x0f);
                        uint8_t bytes_locked_per_bit = 1 << (value[2] >> 4);
                        PrintAndLog("Lock Area of %d bits at byte offset 0x%02x. Each Lock Bit locks %d bytes.", 
@@ -222,7 +222,7 @@ static int topaz_print_reserved_memory_control_TLVs(uint8_t *memory)
                if (tag == 0x02) {                      // the Reserved Memory Control TLV
                        uint8_t pages_addr = value[0] >> 4;
                        uint8_t byte_offset = value[0] & 0x0f;
                if (tag == 0x02) {                      // the Reserved Memory Control TLV
                        uint8_t pages_addr = value[0] >> 4;
                        uint8_t byte_offset = value[0] & 0x0f;
-                       uint8_t size_in_bytes = value[1] ? value[1] : 256;
+                       uint8_t size_in_bytes = value[1] ? value[1] : 255;
                        uint8_t bytes_per_page = 1 << (value[2] & 0x0f);
                        PrintAndLog("Reserved Memory of %d bytes at byte offset 0x%02x.", 
                                                size_in_bytes,
                        uint8_t bytes_per_page = 1 << (value[2] & 0x0f);
                        PrintAndLog("Reserved Memory of %d bytes at byte offset 0x%02x.", 
                                                size_in_bytes,
@@ -257,12 +257,16 @@ int CmdHFTopazReader(const char *Cmd) {
        uint8_t atqa[2];
        uint8_t rid_response[8];
        uint8_t *uid_echo = &rid_response[2];
        uint8_t atqa[2];
        uint8_t rid_response[8];
        uint8_t *uid_echo = &rid_response[2];
-       uint8_t rall_response[124];
+       uint8_t rall_response[130];
+       bool verbose = true;
+
+       char ctmp = param_getchar(Cmd, 0);
+       if ( ctmp == 'S' || ctmp == 's') verbose = FALSE;
        
        status = topaz_select(atqa, rid_response);
        
        status = topaz_select(atqa, rid_response);
-       
+
        if (status == -1) {
        if (status == -1) {
-               PrintAndLog("Error: couldn't receive ATQA");
+               if (verbose) PrintAndLog("Error: couldn't receive ATQA");
                return -1;
        }
 
                return -1;
        }
 
@@ -286,7 +290,7 @@ int CmdHFTopazReader(const char *Cmd) {
        PrintAndLog("HR0  : %02x (%sa Topaz tag (%scapable of carrying a NDEF message), %s memory map)", rid_response[0], 
                                                (rid_response[0] & 0xF0) == 0x10 ? "" : "not ",
                                                (rid_response[0] & 0xF0) == 0x10 ? "" : "not ",
        PrintAndLog("HR0  : %02x (%sa Topaz tag (%scapable of carrying a NDEF message), %s memory map)", rid_response[0], 
                                                (rid_response[0] & 0xF0) == 0x10 ? "" : "not ",
                                                (rid_response[0] & 0xF0) == 0x10 ? "" : "not ",
-                                               (rid_response[0] & 0x0F) == 0x10 ? "static" : "dynamic");
+                                               (rid_response[0] & 0x0F) == 0x01 ? "static" : "dynamic");
        PrintAndLog("HR1  : %02x", rid_response[1]);
        
        status = topaz_rall(uid_echo, rall_response);
        PrintAndLog("HR1  : %02x", rid_response[1]);
        
        status = topaz_rall(uid_echo, rall_response);
@@ -306,6 +310,7 @@ int CmdHFTopazReader(const char *Cmd) {
                        topaz_tag.uid[2], 
                        topaz_tag.uid[1], 
                        topaz_tag.uid[0]);
                        topaz_tag.uid[2], 
                        topaz_tag.uid[1], 
                        topaz_tag.uid[0]);
+                       
        PrintAndLog("       UID[6] (Manufacturer Byte) = %02x, Manufacturer: %s", 
                        topaz_tag.uid[6], 
                        getTagInfo(topaz_tag.uid[6]));
        PrintAndLog("       UID[6] (Manufacturer Byte) = %02x, Manufacturer: %s", 
                        topaz_tag.uid[6], 
                        getTagInfo(topaz_tag.uid[6]));
@@ -396,8 +401,9 @@ static command_t CommandTable[] =
 
 int CmdHFTopaz(const char *Cmd) {
        // flush
 
 int CmdHFTopaz(const char *Cmd) {
        // flush
-       WaitForResponseTimeout(CMD_ACK,NULL,100);
-
+       //WaitForResponseTimeout(CMD_ACK,NULL,100);
+       clearCommandBuffer();
+       
        // parse
        CmdsParse(CommandTable, Cmd);
        return 0;
        // parse
        CmdsParse(CommandTable, Cmd);
        return 0;
Impressum, Datenschutz