@@ -2251,17 +2251,6 @@ static int CmdHFFelicaDumpLite(const char *Cmd) {
2251
2251
return PM3_SUCCESS ;
2252
2252
}
2253
2253
2254
- static void reverse_byte_array (const uint8_t * in , const int length , uint8_t * out ) {
2255
- for (int i = 0 ; i < length ; i ++ ) {
2256
- out [i ] = in [(length - 1 ) - i ];
2257
- }
2258
- }
2259
-
2260
- static void reverse_block16 (const uint8_t * in , uint8_t * out ) {
2261
- reverse_byte_array (in , 8 , out );
2262
- reverse_byte_array (in + 8 , 8 , out + 8 );
2263
- }
2264
-
2265
2254
static int felica_make_block_list (uint16_t * out , const uint8_t * blk_numbers , const size_t length ) {
2266
2255
if (length > 4 ) {
2267
2256
PrintAndLogEx (ERR , "felica_make_block_list: exceeds max size" );
@@ -2345,7 +2334,7 @@ static int write_without_encryption(
2345
2334
2346
2335
uint8_t dl = (uint8_t )(datalen );
2347
2336
2348
- if (! check_write_req_data (& hdr , dl )) {
2337
+ if (check_write_req_data (& hdr , dl ) == false ) {
2349
2338
PrintAndLogEx (FAILED , "invalid request" );
2350
2339
return PM3_EINVARG ;
2351
2340
}
@@ -2425,10 +2414,10 @@ static int felica_auth_context_init(
2425
2414
return PM3_EINVARG ;
2426
2415
}
2427
2416
2428
- reverse_block16 (rc , rev_rc );
2417
+ SwapEndian64ex (rc , sizeof ( rev_rc ), 8 , rev_rc );
2429
2418
memcpy (auth_ctx -> random_challenge , rev_rc , sizeof (auth_ctx -> random_challenge ));
2430
2419
2431
- reverse_block16 (key , rev_key );
2420
+ SwapEndian64ex (key , sizeof ( rev_key ), 8 , rev_key );
2432
2421
2433
2422
if (mbedtls_des3_set2key_enc (ctx , rev_key ) != 0 ) {
2434
2423
ret = PM3_ECRYPTO ;
@@ -2440,7 +2429,7 @@ static int felica_auth_context_init(
2440
2429
goto cleanup ;
2441
2430
}
2442
2431
2443
- reverse_block16 (encrypted_sk , rev_sk );
2432
+ SwapEndian64ex (encrypted_sk , sizeof ( encrypted_sk ), 8 , rev_sk );
2444
2433
2445
2434
memcpy (auth_ctx -> session_key , rev_sk , sizeof (auth_ctx -> session_key ));
2446
2435
@@ -2475,11 +2464,11 @@ static int felica_generate_mac(
2475
2464
return PM3_EINVARG ;
2476
2465
}
2477
2466
2478
- reverse_block16 (auth_ctx -> session_key , rev_sk );
2467
+ SwapEndian64ex (auth_ctx -> session_key , sizeof ( auth_ctx -> session_key ), 8 , rev_sk );
2479
2468
2480
2469
memcpy (iv , auth_ctx -> random_challenge , sizeof (iv ));
2481
2470
2482
- reverse_byte_array (initialize_block , sizeof (rev_block ), rev_block );
2471
+ SwapEndian64ex (initialize_block , sizeof (rev_block ), 8 , rev_block );
2483
2472
2484
2473
if (mbedtls_des3_set2key_enc (ctx , rev_sk ) != 0 ) {
2485
2474
ret = PM3_ECRYPTO ;
@@ -2492,10 +2481,10 @@ static int felica_generate_mac(
2492
2481
goto cleanup ;
2493
2482
}
2494
2483
memcpy (iv , out , sizeof (iv ));
2495
- reverse_byte_array (block_data + i , 8 , rev_block );
2484
+ SwapEndian64ex (block_data + i , 8 , 8 , rev_block );
2496
2485
}
2497
2486
2498
- reverse_byte_array (out , FELICA_BLK_HALF , mac );
2487
+ SwapEndian64ex (out , FELICA_BLK_HALF , 8 , mac );
2499
2488
2500
2489
cleanup :
2501
2490
mbedtls_platform_zeroize (rev_sk , sizeof (rev_sk ));
@@ -2592,7 +2581,7 @@ static int CmdHFFelicaAuthenticationLite(const char *Cmd) {
2592
2581
if (send_wr_plain (flags , datalen , data , false, & sres ) != PM3_SUCCESS ) {
2593
2582
return PM3_ERFTRANS ;
2594
2583
}
2595
-
2584
+
2596
2585
if (sres .status_flags .status_flag1 [0 ] != 0x00 && sres .status_flags .status_flag2 [0 ] != 0x00 ) {
2597
2586
PrintAndLogEx (ERR , "\nError RC Write" );
2598
2587
return PM3_ERFTRANS ;
0 commit comments