mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-14 02:27:26 -07:00
Fix felica sniffing.
This commit is contained in:
parent
9738834faf
commit
dadad1dacf
4 changed files with 41 additions and 244 deletions
|
@ -427,199 +427,6 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr
|
|||
|
||||
return tracepos;
|
||||
}
|
||||
/*
|
||||
static void printFelica(uint16_t traceLen, uint8_t *trace) {
|
||||
|
||||
PrintAndLogEx(NORMAL, "ISO18092 / FeliCa - Timings are not as accurate");
|
||||
PrintAndLogEx(NORMAL, " Gap | Src | Data | CRC | Annotation |");
|
||||
PrintAndLogEx(NORMAL, "--------|-----|-------------------------------------------------------------------------|----------|-------------------|");
|
||||
uint16_t tracepos = 0;
|
||||
|
||||
PrintAndLogEx(NORMAL, "traceLen: %i", traceLen);
|
||||
PrintAndLogEx(NORMAL, "Raw trace: %s", sprint_hex(trace, traceLen));
|
||||
while (tracepos < traceLen) {
|
||||
PrintAndLogEx(NORMAL, "tracepos: %i", tracepos);
|
||||
PrintAndLogEx(NORMAL, "traceLen: %i", traceLen);
|
||||
|
||||
if (tracepos + 3 >= traceLen) break;
|
||||
|
||||
uint16_t gap = *((uint16_t *)(trace + tracepos));
|
||||
uint8_t crc_ok = trace[tracepos + 2];
|
||||
tracepos += 3;
|
||||
|
||||
if (tracepos + 3 >= traceLen) break;
|
||||
|
||||
uint16_t len = trace[tracepos + 2];
|
||||
PrintAndLogEx(NORMAL, "LEN: %i", len);
|
||||
|
||||
//I am stripping SYNC
|
||||
tracepos += 3; //skip SYNC
|
||||
|
||||
if (tracepos + len + 1 >= traceLen) break;
|
||||
|
||||
uint8_t cmd = trace[tracepos];
|
||||
uint8_t isResponse = cmd & 1;
|
||||
|
||||
char line[32][110] = {{0}};
|
||||
for (int j = 0; j < len + 1 && j / 8 < 32; j++) {
|
||||
snprintf(line[j / 8] + ((j % 8) * 4), 110, " %02x ", trace[tracepos + j]);
|
||||
}
|
||||
char expbuf[50];
|
||||
switch (cmd) {
|
||||
case FELICA_POLL_REQ:
|
||||
snprintf(expbuf, 49, "Poll Req");
|
||||
break;
|
||||
case FELICA_POLL_ACK:
|
||||
snprintf(expbuf, 49, "Poll Resp");
|
||||
break;
|
||||
|
||||
case FELICA_REQSRV_REQ:
|
||||
snprintf(expbuf, 49, "Request Srvc Req");
|
||||
break;
|
||||
case FELICA_REQSRV_ACK:
|
||||
snprintf(expbuf, 49, "Request Srv Resp");
|
||||
break;
|
||||
|
||||
case FELICA_RDBLK_REQ:
|
||||
snprintf(expbuf, 49, "Read block(s) Req");
|
||||
break;
|
||||
case FELICA_RDBLK_ACK:
|
||||
snprintf(expbuf, 49, "Read block(s) Resp");
|
||||
break;
|
||||
|
||||
case FELICA_WRTBLK_REQ:
|
||||
snprintf(expbuf, 49, "Write block(s) Req");
|
||||
break;
|
||||
case FELICA_WRTBLK_ACK:
|
||||
snprintf(expbuf, 49, "Write block(s) Resp");
|
||||
break;
|
||||
case FELICA_SRCHSYSCODE_REQ:
|
||||
snprintf(expbuf, 49, "Search syscode Req");
|
||||
break;
|
||||
case FELICA_SRCHSYSCODE_ACK:
|
||||
snprintf(expbuf, 49, "Search syscode Resp");
|
||||
break;
|
||||
|
||||
case FELICA_REQSYSCODE_REQ:
|
||||
snprintf(expbuf, 49, "Request syscode Req");
|
||||
break;
|
||||
case FELICA_REQSYSCODE_ACK:
|
||||
snprintf(expbuf, 49, "Request syscode Resp");
|
||||
break;
|
||||
|
||||
case FELICA_AUTH1_REQ:
|
||||
snprintf(expbuf, 49, "Auth1 Req");
|
||||
break;
|
||||
case FELICA_AUTH1_ACK:
|
||||
snprintf(expbuf, 49, "Auth1 Resp");
|
||||
break;
|
||||
|
||||
case FELICA_AUTH2_REQ:
|
||||
snprintf(expbuf, 49, "Auth2 Req");
|
||||
break;
|
||||
case FELICA_AUTH2_ACK:
|
||||
snprintf(expbuf, 49, "Auth2 Resp");
|
||||
break;
|
||||
|
||||
case FELICA_RDSEC_REQ:
|
||||
snprintf(expbuf, 49, "Secure read Req");
|
||||
break;
|
||||
case FELICA_RDSEC_ACK:
|
||||
snprintf(expbuf, 49, "Secure read Resp");
|
||||
break;
|
||||
|
||||
case FELICA_WRTSEC_REQ:
|
||||
snprintf(expbuf, 49, "Secure write Req");
|
||||
break;
|
||||
case FELICA_WRTSEC_ACK:
|
||||
snprintf(expbuf, 49, "Secure write Resp");
|
||||
break;
|
||||
|
||||
case FELICA_REQSRV2_REQ:
|
||||
snprintf(expbuf, 49, "Request Srvc v2 Req");
|
||||
break;
|
||||
case FELICA_REQSRV2_ACK:
|
||||
snprintf(expbuf, 49, "Request Srvc v2 Resp");
|
||||
break;
|
||||
|
||||
case FELICA_GETSTATUS_REQ:
|
||||
snprintf(expbuf, 49, "Get status Req");
|
||||
break;
|
||||
case FELICA_GETSTATUS_ACK:
|
||||
snprintf(expbuf, 49, "Get status Resp");
|
||||
break;
|
||||
|
||||
case FELICA_OSVER_REQ:
|
||||
snprintf(expbuf, 49, "Get OS Version Req");
|
||||
break;
|
||||
case FELICA_OSVER_ACK:
|
||||
snprintf(expbuf, 49, "Get OS Version Resp");
|
||||
break;
|
||||
|
||||
case FELICA_RESET_MODE_REQ:
|
||||
snprintf(expbuf, 49, "Reset mode Req");
|
||||
break;
|
||||
case FELICA_RESET_MODE_ACK:
|
||||
snprintf(expbuf, 49, "Reset mode Resp");
|
||||
break;
|
||||
|
||||
case FELICA_AUTH1V2_REQ:
|
||||
snprintf(expbuf, 49, "Auth1 v2 Req");
|
||||
break;
|
||||
case FELICA_AUTH1V2_ACK:
|
||||
snprintf(expbuf, 49, "Auth1 v2 Resp");
|
||||
break;
|
||||
|
||||
case FELICA_AUTH2V2_REQ:
|
||||
snprintf(expbuf, 49, "Auth2 v2 Req");
|
||||
break;
|
||||
case FELICA_AUTH2V2_ACK:
|
||||
snprintf(expbuf, 49, "Auth2 v2 Resp");
|
||||
break;
|
||||
|
||||
case FELICA_RDSECV2_REQ:
|
||||
snprintf(expbuf, 49, "Secure read v2 Req");
|
||||
break;
|
||||
case FELICA_RDSECV2_ACK:
|
||||
snprintf(expbuf, 49, "Secure read v2 Resp");
|
||||
break;
|
||||
case FELICA_WRTSECV2_REQ:
|
||||
snprintf(expbuf, 49, "Secure write v2 Req");
|
||||
break;
|
||||
case FELICA_WRTSECV2_ACK:
|
||||
snprintf(expbuf, 49, "Secure write v2 Resp");
|
||||
break;
|
||||
|
||||
case FELICA_UPDATE_RNDID_REQ:
|
||||
snprintf(expbuf, 49, "Update IDr Req");
|
||||
break;
|
||||
case FELICA_UPDATE_RNDID_ACK:
|
||||
snprintf(expbuf, 49, "Update IDr Resp");
|
||||
break;
|
||||
default:
|
||||
snprintf(expbuf, 49, "Unknown");
|
||||
break;
|
||||
}
|
||||
|
||||
int num_lines = MIN((len) / 16 + 1, 16);
|
||||
for (int j = 0; j < num_lines ; j++) {
|
||||
if (j == 0) {
|
||||
PrintAndLogEx(NORMAL, "%7d | %s |%-32s |%02x %02x %s| %s",
|
||||
gap,
|
||||
(isResponse ? "Tag" : "Rdr"),
|
||||
line[j],
|
||||
trace[tracepos + len],
|
||||
trace[tracepos + len + 1],
|
||||
(crc_ok) ? "OK" : "NG",
|
||||
expbuf);
|
||||
} else {
|
||||
PrintAndLogEx(NORMAL, " | |%-32s | | ", line[j]);
|
||||
}
|
||||
}
|
||||
tracepos += len + 1;
|
||||
}
|
||||
PrintAndLogEx(NORMAL, "");
|
||||
}*/
|
||||
|
||||
// sanity check. Don't use proxmark if it is offline and you didn't specify useTraceBuffer
|
||||
/*
|
||||
|
@ -857,6 +664,7 @@ int CmdTraceList(const char *Cmd) {
|
|||
if (protocol == PROTO_HITAG)
|
||||
PrintAndLogEx(NORMAL, "Hitag2 / HitagS - Timings in ETU (8us)");
|
||||
if (protocol == FELICA)
|
||||
PrintAndLogEx(NORMAL, "ISO18092 / FeliCa - Timings are not as accurate");
|
||||
|
||||
PrintAndLogEx(NORMAL, "");
|
||||
PrintAndLogEx(NORMAL, " Start | End | Src | Data (! denotes parity error) | CRC | Annotation");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue