Skip to content

Commit d521763

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

File tree

1 file changed

+8
-46
lines changed

1 file changed

+8
-46
lines changed

client/src/cmdhffelica.c

Lines changed: 8 additions & 46 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) {
@@ -1332,8 +1322,6 @@ static int CmdHFFelicaReadPlain(const char *Cmd) {
13321322
datalen -= 2;
13331323
}
13341324
} else {
1335-
AddCrc(data, datalen);
1336-
datalen += 2;
13371325
felica_read_without_encryption_response_t rd_noCry_resp;
13381326
if (send_rd_plain(flags, datalen, data, 1, &rd_noCry_resp) == PM3_SUCCESS) {
13391327
print_rd_plain_response(&rd_noCry_resp);
@@ -1388,9 +1376,6 @@ static int CmdHFFelicaRequestResponse(const char *Cmd) {
13881376
return PM3_EINVARG;
13891377
}
13901378

1391-
AddCrc(data, datalen);
1392-
datalen += 2;
1393-
13941379
uint8_t flags = (FELICA_APPEND_CRC | FELICA_RAW);
13951380
clear_and_send_command(flags, datalen, data, 0);
13961381

@@ -1491,8 +1476,6 @@ static int CmdHFFelicaRequestSpecificationVersion(const char *Cmd) {
14911476
return PM3_EINVARG;
14921477
}
14931478

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

14981481
clear_and_send_command(flags, datalen, data, 0);
@@ -1595,8 +1578,6 @@ static int CmdHFFelicaResetMode(const char *Cmd) {
15951578
return PM3_EINVARG;
15961579
}
15971580

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

16021583
clear_and_send_command(flags, datalen, data, 0);
@@ -1666,8 +1647,6 @@ static int CmdHFFelicaRequestSystemCode(const char *Cmd) {
16661647
return PM3_EINVARG;
16671648
}
16681649

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

16731652
clear_and_send_command(flags, datalen, data, 0);
@@ -1744,9 +1723,8 @@ static int CmdHFFelicaDump(const char *Cmd) {
17441723

17451724
data_service_dump[10] = cursor & 0xFF;
17461725
data_service_dump[11] = cursor >> 8;
1747-
AddCrc(data_service_dump, service_datalen);
17481726

1749-
if (send_dump_sv_plain(flags, service_datalen + 2, data_service_dump, 0,
1727+
if (send_dump_sv_plain(flags, service_datalen, data_service_dump, 0,
17501728
&resp, false) != PM3_SUCCESS) {
17511729
PrintAndLogEx(FAILED, "No response at cursor 0x%04X", cursor);
17521730
return PM3_ERFTRANS;
@@ -1812,9 +1790,8 @@ static int CmdHFFelicaDump(const char *Cmd) {
18121790
uint16_t last_blockno = 0xFF;
18131791
for (uint16_t i = 0x00; i < last_blockno; i++) {
18141792
data_block_dump[15] = i;
1815-
AddCrc(data_block_dump, block_datalen);
18161793
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)) {
1794+
if ((send_rd_plain(flags, block_datalen, data_block_dump, 0, &rd_noCry_resp) == PM3_SUCCESS)) {
18181795
if (rd_noCry_resp.status_flags.status_flag1[0] == 0 && rd_noCry_resp.status_flags.status_flag2[0] == 0) {
18191796
print_rd_plain_response(&rd_noCry_resp);
18201797
} else {
@@ -1938,13 +1915,11 @@ static int CmdHFFelicaRequestService(const char *Cmd) {
19381915
// send 32 calls
19391916
for (uint8_t i = 1; i < 32; i++) {
19401917
data[10] = i;
1941-
AddCrc(data, datalen);
1942-
send_request_service(flags, datalen + 2, data, 1);
1918+
send_request_service(flags, datalen, data, 1);
19431919
}
19441920

19451921
} else {
1946-
AddCrc(data, datalen);
1947-
send_request_service(flags, datalen + 2, data, 1);
1922+
send_request_service(flags, datalen, data, 1);
19481923
}
19491924

19501925
return PM3_SUCCESS;
@@ -1992,9 +1967,8 @@ static int CmdHFFelicaDumpServiceArea(const char *Cmd) {
19921967
/* insert cursor LE */
19931968
data[10] = cursor & 0xFF;
19941969
data[11] = cursor >> 8;
1995-
AddCrc(data, datalen);
19961970

1997-
if (send_dump_sv_plain(flags, datalen + 2, data, 0,
1971+
if (send_dump_sv_plain(flags, datalen, data, 0,
19981972
&resp, false) != PM3_SUCCESS) {
19991973
PrintAndLogEx(FAILED, "No response at cursor 0x%04X", cursor);
20001974
return PM3_ERFTRANS;
@@ -2522,9 +2496,6 @@ static int felica_internal_authentication(
25222496
return PM3_ERFTRANS;
25232497
}
25242498

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

25302501
felica_status_response_t res;
@@ -2546,9 +2517,6 @@ static int felica_internal_authentication(
25462517
return PM3_ERFTRANS;
25472518
}
25482519

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

@@ -2612,9 +2580,6 @@ static int felica_external_authentication(
26122580
return PM3_ERFTRANS;
26132581
}
26142582

2615-
AddCrc(data, datalen);
2616-
datalen += 2;
2617-
26182583
uint8_t wcnt_blk[FELICA_BLK_SIZE];
26192584
ret = send_rd_multiple_plain(flags, datalen, data, wcnt_blk);
26202585
if (ret) {
@@ -2640,9 +2605,6 @@ static int felica_external_authentication(
26402605
return PM3_ERFTRANS;
26412606
}
26422607

2643-
AddCrc(data, datalen);
2644-
datalen += 2;
2645-
26462608
if (keep == false) {
26472609
flags &= ~FELICA_NO_DISCONNECT;
26482610
}
@@ -3116,12 +3078,12 @@ static int CmdHFFelicaCmdRaw(const char *Cmd) {
31163078
CLIGetHexWithReturn(ctx, 7, data, &datalen);
31173079
CLIParserFree(ctx);
31183080

3081+
uint8_t flags = 0;
3082+
31193083
if (crc) {
3120-
AddCrc(data, datalen);
3121-
datalen += 2;
3084+
flags |= FELICA_APPEND_CRC;
31223085
}
31233086

3124-
uint8_t flags = 0;
31253087
if (active || active_select) {
31263088
flags |= FELICA_CONNECT;
31273089
if (active) {

0 commit comments

Comments
 (0)