From cda72aef4044edbf037242c52b6c7cf9f9d652ec Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 28 Aug 2020 10:03:33 +0200 Subject: [PATCH] Q5/T5555 has a fix 06 first byte in the configblock. Thanks @mwalker33! --- client/src/cmdlfpresco.c | 2 +- client/src/cmdlfpyramid.c | 4 ++-- client/src/cmdlfvisa2000.c | 2 +- include/protocols.h | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/client/src/cmdlfpresco.c b/client/src/cmdlfpresco.c index c9eb2ce29..f29439ce9 100644 --- a/client/src/cmdlfpresco.c +++ b/client/src/cmdlfpresco.c @@ -116,7 +116,7 @@ static int CmdPrescoClone(const char *Cmd) { if (getWiegandFromPresco(Cmd, &sitecode, &usercode, &fullcode, &Q5) == PM3_EINVARG) return usage_lf_presco_clone(); if (Q5) - blocks[0] = T5555_MODULATION_MANCHESTER | T5555_SET_BITRATE(32) | 4 << T5555_MAXBLOCK_SHIFT | T5555_ST_TERMINATOR; + blocks[0] = T5555_FIXED | T5555_MODULATION_MANCHESTER | T5555_SET_BITRATE(32) | 4 << T5555_MAXBLOCK_SHIFT | T5555_ST_TERMINATOR; if ((sitecode & 0xFF) != sitecode) { sitecode &= 0xFF; diff --git a/client/src/cmdlfpyramid.c b/client/src/cmdlfpyramid.c index 71fe1ab7e..9549a71e3 100644 --- a/client/src/cmdlfpyramid.c +++ b/client/src/cmdlfpyramid.c @@ -242,8 +242,8 @@ static int CmdPyramidClone(const char *Cmd) { blocks[0] = T55x7_MODULATION_FSK2a | T55x7_BITRATE_RF_50 | 4 << T55x7_MAXBLOCK_SHIFT; // Q5 - if (param_getchar(Cmd, 2) == 'Q' || param_getchar(Cmd, 2) == 'q') - blocks[0] = T5555_MODULATION_FSK2 | T5555_INVERT_OUTPUT | T5555_SET_BITRATE(50) | 4 << T5555_MAXBLOCK_SHIFT; + if (tolower(param_getchar(Cmd, 2)) == 'q') + blocks[0] = T5555_FIXED | T5555_MODULATION_FSK2 | T5555_INVERT_OUTPUT | T5555_SET_BITRATE(50) | 4 << T5555_MAXBLOCK_SHIFT; blocks[1] = bytebits_to_byte(bs, 32); blocks[2] = bytebits_to_byte(bs + 32, 32); diff --git a/client/src/cmdlfvisa2000.c b/client/src/cmdlfvisa2000.c index 4260fe6d4..b2a9f97b2 100644 --- a/client/src/cmdlfvisa2000.c +++ b/client/src/cmdlfvisa2000.c @@ -178,7 +178,7 @@ static int CmdVisa2kClone(const char *Cmd) { //Q5 if (tolower(param_getchar(Cmd, 1)) == 'q') - blocks[0] = T5555_MODULATION_MANCHESTER | T5555_SET_BITRATE(64) | T5555_ST_TERMINATOR | 3 << T5555_MAXBLOCK_SHIFT; + blocks[0] = T5555_FIXED | T5555_MODULATION_MANCHESTER | T5555_SET_BITRATE(64) | T5555_ST_TERMINATOR | 3 << T5555_MAXBLOCK_SHIFT; blocks[2] = id; blocks[3] = (visa_parity(id) << 4) | visa_chksum(id); diff --git a/include/protocols.h b/include/protocols.h index add711563..41954d713 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -519,6 +519,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define T5555_BITRATE_SHIFT 12 //(RF=2n+2) ie 64=2*0x1F+2 or n = (RF-2)/2 #define T5555_FAST_WRITE 0x00004000 #define T5555_PAGE_SELECT 0x00008000 +#define T5555_FIXED 0x06000000 #define T55XX_WRITE_TIMEOUT 1500