Skip to content

Commit 8c8bf54

Browse files
committed
Remove wrong use of AddCrc in cmdhffelica
1 parent fe0a33a commit 8c8bf54

File tree

1 file changed

+8
-47
lines changed

1 file changed

+8
-47
lines changed

client/src/cmdhffelica.c

Lines changed: 8 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@
5151
#define FELICA_SERVICE_ATTRIBUTE_PURSE_SUBFIELD (0b000110)
5252

5353

54-
#define AddCrc(data, len) compute_crc(CRC_FELICA, (data), (len), (data)+(len)+1, (data)+(len))
55-
5654
static int CmdHelp(const char *Cmd);
5755
static felica_card_select_t last_known_card;
5856

@@ -804,8 +802,6 @@ static int CmdHFFelicaAuthentication1(const char *Cmd) {
804802
// Add M1c Challenge to frame
805803
memcpy(data + 16, output, sizeof(output));
806804

807-
AddCrc(data, datalen);
808-
datalen += 2;
809805
uint8_t flags = (FELICA_APPEND_CRC | FELICA_RAW);
810806

811807
PrintAndLogEx(INFO, "Client send AUTH1 frame: %s", sprint_hex(data, datalen));
@@ -993,8 +989,6 @@ static int CmdHFFelicaAuthentication2(const char *Cmd) {
993989
// Add M4c Challenge to frame
994990
memcpy(data + 10, m4c, sizeof(m4c));
995991

996-
AddCrc(data, datalen);
997-
datalen += 2;
998992
uint8_t flags = (FELICA_APPEND_CRC | FELICA_RAW);
999993

1000994
PrintAndLogEx(INFO, "Client Send AUTH2 Frame: %s", sprint_hex(data, datalen));
@@ -1166,8 +1160,6 @@ static int CmdHFFelicaWritePlain(const char *Cmd) {
11661160
}
11671161

11681162
uint8_t flags = (FELICA_APPEND_CRC | FELICA_RAW);
1169-
AddCrc(data, datalen);
1170-
datalen += 2;
11711163

11721164
felica_status_response_t wr_noCry_resp;
11731165
if (send_wr_plain(flags, datalen, data, 1, &wr_noCry_resp) == PM3_SUCCESS) {
@@ -1319,8 +1311,6 @@ static int CmdHFFelicaReadPlain(const char *Cmd) {
13191311

13201312
for (uint16_t i = 0x00; i < last_blockno; i++) {
13211313
data[15] = i;
1322-
AddCrc(data, datalen);
1323-
datalen += 2;
13241314
felica_read_without_encryption_response_t rd_noCry_resp;
13251315
if ((send_rd_plain(flags, datalen, data, 0, &rd_noCry_resp) == PM3_SUCCESS)) {
13261316
if (rd_noCry_resp.status_flags.status_flag1[0] == 0 && rd_noCry_resp.status_flags.status_flag2[0] == 0) {
@@ -1329,11 +1319,8 @@ static int CmdHFFelicaReadPlain(const char *Cmd) {
13291319
} else {
13301320
break;
13311321
}
1332-
datalen -= 2;
13331322
}
13341323
} else {
1335-
AddCrc(data, datalen);
1336-
datalen += 2;
13371324
felica_read_without_encryption_response_t rd_noCry_resp;
13381325
if (send_rd_plain(flags, datalen, data, 1, &rd_noCry_resp) == PM3_SUCCESS) {
13391326
print_rd_plain_response(&rd_noCry_resp);
@@ -1388,9 +1375,6 @@ static int CmdHFFelicaRequestResponse(const char *Cmd) {
13881375
return PM3_EINVARG;
13891376
}
13901377

1391-
AddCrc(data, datalen);
1392-
datalen += 2;
1393-
13941378
uint8_t flags = (FELICA_APPEND_CRC | FELICA_RAW);
13951379
clear_and_send_command(flags, datalen, data, 0);
13961380

@@ -1491,8 +1475,6 @@ static int CmdHFFelicaRequestSpecificationVersion(const char *Cmd) {
14911475
return PM3_EINVARG;
14921476
}
14931477

1494-
AddCrc(data, datalen);
1495-
datalen += 2;
14961478
uint8_t flags = (FELICA_APPEND_CRC | FELICA_RAW);
14971479

14981480
clear_and_send_command(flags, datalen, data, 0);
@@ -1595,8 +1577,6 @@ static int CmdHFFelicaResetMode(const char *Cmd) {
15951577
return PM3_EINVARG;
15961578
}
15971579

1598-
AddCrc(data, datalen);
1599-
datalen += 2;
16001580
uint8_t flags = (FELICA_APPEND_CRC | FELICA_RAW);
16011581

16021582
clear_and_send_command(flags, datalen, data, 0);
@@ -1666,8 +1646,6 @@ static int CmdHFFelicaRequestSystemCode(const char *Cmd) {
16661646
return PM3_EINVARG;
16671647
}
16681648

1669-
AddCrc(data, datalen);
1670-
datalen += 2;
16711649
uint8_t flags = (FELICA_APPEND_CRC | FELICA_RAW);
16721650

16731651
clear_and_send_command(flags, datalen, data, 0);
@@ -1744,9 +1722,8 @@ static int CmdHFFelicaDump(const char *Cmd) {
17441722

17451723
data_service_dump[10] = cursor & 0xFF;
17461724
data_service_dump[11] = cursor >> 8;
1747-
AddCrc(data_service_dump, service_datalen);
17481725

1749-
if (send_dump_sv_plain(flags, service_datalen + 2, data_service_dump, 0,
1726+
if (send_dump_sv_plain(flags, service_datalen, data_service_dump, 0,
17501727
&resp, false) != PM3_SUCCESS) {
17511728
PrintAndLogEx(FAILED, "No response at cursor 0x%04X", cursor);
17521729
return PM3_ERFTRANS;
@@ -1812,9 +1789,8 @@ static int CmdHFFelicaDump(const char *Cmd) {
18121789
uint16_t last_blockno = 0xFF;
18131790
for (uint16_t i = 0x00; i < last_blockno; i++) {
18141791
data_block_dump[15] = i;
1815-
AddCrc(data_block_dump, block_datalen);
18161792
felica_read_without_encryption_response_t rd_noCry_resp;
1817-
if ((send_rd_plain(flags, block_datalen + 2, data_block_dump, 0, &rd_noCry_resp) == PM3_SUCCESS)) {
1793+
if ((send_rd_plain(flags, block_datalen, data_block_dump, 0, &rd_noCry_resp) == PM3_SUCCESS)) {
18181794
if (rd_noCry_resp.status_flags.status_flag1[0] == 0 && rd_noCry_resp.status_flags.status_flag2[0] == 0) {
18191795
print_rd_plain_response(&rd_noCry_resp);
18201796
} else {
@@ -1938,13 +1914,11 @@ static int CmdHFFelicaRequestService(const char *Cmd) {
19381914
// send 32 calls
19391915
for (uint8_t i = 1; i < 32; i++) {
19401916
data[10] = i;
1941-
AddCrc(data, datalen);
1942-
send_request_service(flags, datalen + 2, data, 1);
1917+
send_request_service(flags, datalen, data, 1);
19431918
}
19441919

19451920
} else {
1946-
AddCrc(data, datalen);
1947-
send_request_service(flags, datalen + 2, data, 1);
1921+
send_request_service(flags, datalen, data, 1);
19481922
}
19491923

19501924
return PM3_SUCCESS;
@@ -1992,9 +1966,8 @@ static int CmdHFFelicaDumpServiceArea(const char *Cmd) {
19921966
/* insert cursor LE */
19931967
data[10] = cursor & 0xFF;
19941968
data[11] = cursor >> 8;
1995-
AddCrc(data, datalen);
19961969

1997-
if (send_dump_sv_plain(flags, datalen + 2, data, 0,
1970+
if (send_dump_sv_plain(flags, datalen, data, 0,
19981971
&resp, false) != PM3_SUCCESS) {
19991972
PrintAndLogEx(FAILED, "No response at cursor 0x%04X", cursor);
20001973
return PM3_ERFTRANS;
@@ -2522,9 +2495,6 @@ static int felica_internal_authentication(
25222495
return PM3_ERFTRANS;
25232496
}
25242497

2525-
AddCrc(data, datalen);
2526-
datalen += 2;
2527-
25282498
uint8_t flags = (FELICA_APPEND_CRC | FELICA_RAW | FELICA_NO_DISCONNECT);
25292499

25302500
felica_status_response_t res;
@@ -2546,9 +2516,6 @@ static int felica_internal_authentication(
25462516
return PM3_ERFTRANS;
25472517
}
25482518

2549-
AddCrc(data, datalen);
2550-
datalen += 2;
2551-
25522519
uint8_t pd[FELICA_BLK_SIZE * sizeof(blk_numbers2)];
25532520
memset(pd, 0, sizeof(pd));
25542521

@@ -2612,9 +2579,6 @@ static int felica_external_authentication(
26122579
return PM3_ERFTRANS;
26132580
}
26142581

2615-
AddCrc(data, datalen);
2616-
datalen += 2;
2617-
26182582
uint8_t wcnt_blk[FELICA_BLK_SIZE];
26192583
ret = send_rd_multiple_plain(flags, datalen, data, wcnt_blk);
26202584
if (ret) {
@@ -2640,9 +2604,6 @@ static int felica_external_authentication(
26402604
return PM3_ERFTRANS;
26412605
}
26422606

2643-
AddCrc(data, datalen);
2644-
datalen += 2;
2645-
26462607
if (keep == false) {
26472608
flags &= ~FELICA_NO_DISCONNECT;
26482609
}
@@ -3116,12 +3077,12 @@ static int CmdHFFelicaCmdRaw(const char *Cmd) {
31163077
CLIGetHexWithReturn(ctx, 7, data, &datalen);
31173078
CLIParserFree(ctx);
31183079

3080+
uint8_t flags = 0;
3081+
31193082
if (crc) {
3120-
AddCrc(data, datalen);
3121-
datalen += 2;
3083+
flags |= FELICA_APPEND_CRC;
31223084
}
31233085

3124-
uint8_t flags = 0;
31253086
if (active || active_select) {
31263087
flags |= FELICA_CONNECT;
31273088
if (active) {

0 commit comments

Comments
 (0)