This commit is contained in:
iceman1001 2023-08-24 10:22:18 +02:00
commit 279d6486c1
2 changed files with 58 additions and 22 deletions

View file

@ -4139,9 +4139,10 @@ static int CmdT55xxSniff(const char *Cmd) {
blockAddr = 0; blockAddr = 0;
for (uint8_t i = 3; i < 6; i++) { for (uint8_t i = 3; i < 6; i++) {
blockAddr <<= 1; blockAddr <<= 1;
if (data[i] == '1') if (data[i] == '1') {
blockAddr |= 1; blockAddr |= 1;
} }
}
blockData = 0; blockData = 0;
have_data = true; have_data = true;
modeText = "Default Read"; modeText = "Default Read";
@ -4155,22 +4156,27 @@ static int CmdT55xxSniff(const char *Cmd) {
usedPassword = 0; usedPassword = 0;
for (uint8_t i = 2; i <= 33; i++) { for (uint8_t i = 2; i <= 33; i++) {
usedPassword <<= 1; usedPassword <<= 1;
if (data[i] == '1') if (data[i] == '1') {
usedPassword |= 1; usedPassword |= 1;
} }
}
// Lock bit 34 // Lock bit 34
blockData = 0; blockData = 0;
for (uint8_t i = 35; i <= 66; i++) { for (uint8_t i = 35; i <= 66; i++) {
blockData <<= 1; blockData <<= 1;
if (data[i] == '1') if (data[i] == '1') {
blockData |= 1; blockData |= 1;
} }
}
blockAddr = 0; blockAddr = 0;
for (uint8_t i = 67; i <= 69; i++) { for (uint8_t i = 67; i <= 69; i++) {
blockAddr <<= 1; blockAddr <<= 1;
if (data[i] == '1') if (data[i] == '1') {
blockAddr |= 1; blockAddr |= 1;
} }
}
have_data = true; have_data = true;
modeText = "Default pwd write"; modeText = "Default pwd write";
snprintf(pwdText, sizeof(pwdText), " %08X", usedPassword); snprintf(pwdText, sizeof(pwdText), " %08X", usedPassword);
@ -4190,21 +4196,25 @@ static int CmdT55xxSniff(const char *Cmd) {
blockData = 0; blockData = 0;
for (uint8_t i = 3; i <= 34; i++) { for (uint8_t i = 3; i <= 34; i++) {
blockData <<= 1; blockData <<= 1;
if (data[i] == '1') if (data[i] == '1') {
blockData |= 1; blockData |= 1;
} }
}
for (uint8_t i = 2; i <= 33; i++) { for (uint8_t i = 2; i <= 33; i++) {
usedPassword <<= 1; usedPassword <<= 1;
if (data[i] == '1') { if (data[i] == '1') {
usedPassword |= 1; usedPassword |= 1;
} }
} }
blockAddr = 0; blockAddr = 0;
for (uint8_t i = 35; i <= 37; i++) { for (uint8_t i = 35; i <= 37; i++) {
blockAddr <<= 1; blockAddr <<= 1;
if (data[i] == '1') if (data[i] == '1') {
blockAddr |= 1; blockAddr |= 1;
} }
}
have_data = true; have_data = true;
modeText = "Default write/pwd read"; modeText = "Default write/pwd read";
snprintf(pwdText, sizeof(pwdText), "[%08X]", usedPassword); snprintf(pwdText, sizeof(pwdText), "[%08X]", usedPassword);
@ -4227,21 +4237,27 @@ static int CmdT55xxSniff(const char *Cmd) {
usedPassword = 0; usedPassword = 0;
for (uint8_t i = 5; i <= 36; i++) { for (uint8_t i = 5; i <= 36; i++) {
usedPassword <<= 1; usedPassword <<= 1;
if (data[i] == '1') if (data[i] == '1') {
usedPassword |= 1; usedPassword |= 1;
} }
}
blockData = 0; blockData = 0;
for (uint8_t i = 38; i <= 69; i++) { for (uint8_t i = 38; i <= 69; i++) {
blockData <<= 1; blockData <<= 1;
if (data[i] == '1') if (data[i] == '1') {
blockData |= 1; blockData |= 1;
} }
}
blockAddr = 0; blockAddr = 0;
for (uint8_t i = 70; i <= 72; i++) { for (uint8_t i = 70; i <= 72; i++) {
blockAddr <<= 1; blockAddr <<= 1;
if (data[i] == '1') if (data[i] == '1') {
blockAddr |= 1; blockAddr |= 1;
} }
}
have_data = true; have_data = true;
modeText = "Leading 0 pwd write"; modeText = "Leading 0 pwd write";
snprintf(pwdText, sizeof(pwdText), " %08X", usedPassword); snprintf(pwdText, sizeof(pwdText), " %08X", usedPassword);
@ -4253,10 +4269,29 @@ static int CmdT55xxSniff(const char *Cmd) {
// Print results // Print results
if (have_data) { if (have_data) {
if (blockAddr == 7) if (blockAddr == 7) {
PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_YELLOW_("%8s")" | "_YELLOW_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s", modeText, pwdText, dataText, blockAddr, page, minWidth, maxWidth, data); PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_YELLOW_("%8s")" | "_YELLOW_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s"
else , modeText
PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_GREEN_("%8s")" | "_GREEN_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s", modeText, pwdText, dataText, blockAddr, page, minWidth, maxWidth, data); , pwdText
, dataText
, blockAddr
, page
, minWidth
, maxWidth
, data
);
} else {
PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_GREEN_("%8s")" | "_GREEN_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s"
, modeText
, pwdText
, dataText
, blockAddr
, page
, minWidth
, maxWidth
, data
);
}
} }
} }

View file

@ -70,6 +70,7 @@
#define T55X7_PAC_CONFIG_BLOCK 0x00080080 // NRZ, data rate 32, 4 data blocks #define T55X7_PAC_CONFIG_BLOCK 0x00080080 // NRZ, data rate 32, 4 data blocks
#define T55X7_VERICHIP_CONFIG_BLOCK 0x000C0080 // NRZ, data rate 40, 4 data blocks #define T55X7_VERICHIP_CONFIG_BLOCK 0x000C0080 // NRZ, data rate 40, 4 data blocks
#define T55X7_bin 0b0010 #define T55X7_bin 0b0010
// Q5 / Termic / T5555 // Q5 / Termic / T5555