mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-19 12:59:44 -07:00
Format hf 14a list output for bigger frame sizes
This commit is contained in:
parent
2bdd68c370
commit
f10bf20c6c
1 changed files with 25 additions and 16 deletions
|
@ -56,8 +56,8 @@ int CmdHF14AList(const char *Cmd)
|
||||||
PrintAndLog("Start = Start of Start Bit, End = End of last modulation. Src = Source of Transfer");
|
PrintAndLog("Start = Start of Start Bit, End = End of last modulation. Src = Source of Transfer");
|
||||||
PrintAndLog("All times are in carrier periods (1/13.56Mhz)");
|
PrintAndLog("All times are in carrier periods (1/13.56Mhz)");
|
||||||
PrintAndLog("");
|
PrintAndLog("");
|
||||||
PrintAndLog(" Start | End | Src | Data");
|
PrintAndLog(" Start | End | Src | Data (! denotes parity error) | CRC ");
|
||||||
PrintAndLog("-----------|-----------|-----|--------");
|
PrintAndLog("-----------|-----------|-----|-----------------------------------------------------------------------");
|
||||||
|
|
||||||
uint16_t tracepos = 0;
|
uint16_t tracepos = 0;
|
||||||
uint16_t duration;
|
uint16_t duration;
|
||||||
|
@ -105,30 +105,30 @@ int CmdHF14AList(const char *Cmd)
|
||||||
// Break and stick with current result if buffer was not completely full
|
// Break and stick with current result if buffer was not completely full
|
||||||
if (timestamp == 0x44444444) break;
|
if (timestamp == 0x44444444) break;
|
||||||
|
|
||||||
char line[1000] = "";
|
char line[16][110];
|
||||||
int j;
|
for (int j = 0; j < data_len; j++) {
|
||||||
for (j = 0; j < data_len; j++) {
|
|
||||||
int oddparity = 0x01;
|
int oddparity = 0x01;
|
||||||
int k;
|
int k;
|
||||||
|
|
||||||
for (k=0;k<8;k++) {
|
for (k=0;k<8;k++) {
|
||||||
oddparity ^= (((frame[j] & 0xFF) >> k) & 0x01);
|
oddparity ^= (((frame[j] & 0xFF) >> k) & 0x01);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t parityBits = parityBytes[j>>3];
|
uint8_t parityBits = parityBytes[j>>3];
|
||||||
if (isResponse && (oddparity != ((parityBits >> (7-(j&0x0007))) & 0x01))) {
|
if (isResponse && (oddparity != ((parityBits >> (7-(j&0x0007))) & 0x01))) {
|
||||||
sprintf(line+(j*4), "%02x! ", frame[j]);
|
sprintf(line[j/16]+((j%16)*4), "%02x! ", frame[j]);
|
||||||
} else {
|
} else {
|
||||||
sprintf(line+(j*4), "%02x ", frame[j]);
|
sprintf(line[j/16]+((j%16)*4), "%02x ", frame[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char crc[6] = "";
|
char crc[5] = "";
|
||||||
if (data_len > 2) {
|
if (data_len > 2) {
|
||||||
uint8_t b1, b2;
|
uint8_t b1, b2;
|
||||||
ComputeCrc14443(CRC_14443_A, frame, data_len-2, &b1, &b2);
|
ComputeCrc14443(CRC_14443_A, frame, data_len-2, &b1, &b2);
|
||||||
if (b1 != frame[data_len-2] || b2 != frame[data_len-1]) {
|
if (b1 != frame[data_len-2] || b2 != frame[data_len-1]) {
|
||||||
sprintf(crc, (isResponse & (data_len < 6)) ? "" : " !crc");
|
sprintf(crc, (isResponse & (data_len < 6)) ? "" : "!crc");
|
||||||
} else {
|
} else {
|
||||||
sprintf(crc, "");
|
sprintf(crc, "");
|
||||||
}
|
}
|
||||||
|
@ -136,12 +136,21 @@ int CmdHF14AList(const char *Cmd)
|
||||||
|
|
||||||
EndOfTransmissionTimestamp = timestamp + duration;
|
EndOfTransmissionTimestamp = timestamp + duration;
|
||||||
|
|
||||||
PrintAndLog(" %9d | %9d | %s | %s %s",
|
int num_lines = (data_len - 1)/16 + 1;
|
||||||
(timestamp - first_timestamp),
|
for (int j = 0; j < num_lines; j++) {
|
||||||
(EndOfTransmissionTimestamp - first_timestamp),
|
if (j == 0) {
|
||||||
(isResponse ? "Tag" : "Rdr"),
|
PrintAndLog(" %9d | %9d | %s | %-64s| %s",
|
||||||
line,
|
(timestamp - first_timestamp),
|
||||||
crc);
|
(EndOfTransmissionTimestamp - first_timestamp),
|
||||||
|
(isResponse ? "Tag" : "Rdr"),
|
||||||
|
line[j],
|
||||||
|
(j == num_lines-1)?crc:"");
|
||||||
|
} else {
|
||||||
|
PrintAndLog(" | | | %-64s| %s",
|
||||||
|
line[j],
|
||||||
|
(j == num_lines-1)?crc:"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool next_isResponse = *((uint16_t *)(trace + tracepos + 6)) & 0x8000;
|
bool next_isResponse = *((uint16_t *)(trace + tracepos + 6)) & 0x8000;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue