mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-02 04:39:59 -07:00
Temp fix/revert for transaction history
This commit is contained in:
@@ -632,10 +632,10 @@ EmvError emv_poller_read_afl(EmvPoller* instance) {
|
||||
|
||||
FURI_LOG_D(TAG, "Search PAN in SFI");
|
||||
|
||||
uint8_t sfi_2_mask = 0;
|
||||
uint8_t sfi_3_mask = 0;
|
||||
// uint8_t sfi_2_mask = 0;
|
||||
// uint8_t sfi_3_mask = 0;
|
||||
|
||||
bool pan_fetched = (instance->data->emv_application.pan_len);
|
||||
// bool pan_fetched = (instance->data->emv_application.pan_len);
|
||||
|
||||
// Iterate through all files
|
||||
for(size_t i = 0; i < instance->data->emv_application.afl.size; i += 4) {
|
||||
@@ -644,8 +644,8 @@ EmvError emv_poller_read_afl(EmvPoller* instance) {
|
||||
uint8_t record_end = afl->data[i + 2];
|
||||
// Iterate through all records in file
|
||||
for(uint8_t record = record_start; record <= record_end; ++record) {
|
||||
if((sfi == 2) && (record < 8)) FURI_BIT_SET(sfi_2_mask, record);
|
||||
if((sfi == 3) && (record < 8)) FURI_BIT_SET(sfi_3_mask, record);
|
||||
// if((sfi == 2) && (record < 8)) FURI_BIT_SET(sfi_2_mask, record);
|
||||
// if((sfi == 3) && (record < 8)) FURI_BIT_SET(sfi_3_mask, record);
|
||||
|
||||
error = emv_poller_read_sfi_record(instance, sfi, record);
|
||||
if(error != EmvErrorNone) break;
|
||||
@@ -658,41 +658,47 @@ EmvError emv_poller_read_afl(EmvPoller* instance) {
|
||||
FURI_LOG_T(TAG, "Failed to parse SFI 0x%X record %d", sfi, record);
|
||||
}
|
||||
|
||||
if(instance->data->emv_application.pan_len) pan_fetched = true; // Card number fetched
|
||||
// Some READ RECORD returns 1 byte response 0x12/0x13 (IDK WTF),
|
||||
// then poller return Timeout to all subsequent requests.
|
||||
// TODO: remove below lines when it was fixed
|
||||
if(instance->data->emv_application.pan_len != 0)
|
||||
return EmvErrorNone; // Card number fetched
|
||||
// if(instance->data->emv_application.pan_len) pan_fetched = true; // Card number fetched
|
||||
}
|
||||
}
|
||||
bool cardholder_name_fetched = strlen(instance->data->emv_application.cardholder_name);
|
||||
// bool cardholder_name_fetched = strlen(instance->data->emv_application.cardholder_name);
|
||||
// Bruteforse files 2-3
|
||||
FURI_LOG_T(TAG, "Bruteforce files 2-3");
|
||||
for(size_t sfi = 2; sfi <= 3; sfi++) {
|
||||
// Iterate through records 1-5 in file
|
||||
for(size_t record = 1; record <= 5; record++) {
|
||||
// Skip previously readed sfi
|
||||
if(sfi == 2) {
|
||||
if((sfi_2_mask >> record) & (0b1)) continue;
|
||||
}
|
||||
if(sfi == 3) {
|
||||
if((sfi_3_mask >> record) & (0b1)) continue;
|
||||
}
|
||||
// FURI_LOG_T(TAG, "Bruteforce files 2-3");
|
||||
// for(size_t sfi = 2; sfi <= 3; sfi++) {
|
||||
// // Iterate through records 1-5 in file
|
||||
// for(size_t record = 1; record <= 5; record++) {
|
||||
// // Skip previously readed sfi
|
||||
// // if(sfi == 2) {
|
||||
// // if((sfi_2_mask >> record) & (0b1)) continue;
|
||||
// // }
|
||||
// // if(sfi == 3) {
|
||||
// // if((sfi_3_mask >> record) & (0b1)) continue;
|
||||
// // }
|
||||
|
||||
if(strlen(instance->data->emv_application.cardholder_name))
|
||||
cardholder_name_fetched = true;
|
||||
error = emv_poller_read_sfi_record(instance, sfi, record);
|
||||
if(error != EmvErrorNone) break;
|
||||
// if(strlen(instance->data->emv_application.cardholder_name))
|
||||
// cardholder_name_fetched = true;
|
||||
// error = emv_poller_read_sfi_record(instance, sfi, record);
|
||||
// if(error != EmvErrorNone) break;
|
||||
|
||||
if(!emv_decode_response_tlv(
|
||||
bit_buffer_get_data(instance->rx_buffer),
|
||||
bit_buffer_get_size_bytes(instance->rx_buffer),
|
||||
&instance->data->emv_application)) {
|
||||
error = EmvErrorProtocol;
|
||||
FURI_LOG_T(TAG, "Failed to parse SFI 0x%X record %d", sfi, record);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(pan_fetched || cardholder_name_fetched)
|
||||
return EmvErrorNone;
|
||||
else
|
||||
return error;
|
||||
// if(!emv_decode_response_tlv(
|
||||
// bit_buffer_get_data(instance->rx_buffer),
|
||||
// bit_buffer_get_size_bytes(instance->rx_buffer),
|
||||
// &instance->data->emv_application)) {
|
||||
// error = EmvErrorProtocol;
|
||||
// FURI_LOG_T(TAG, "Failed to parse SFI 0x%X record %d", sfi, record);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if(pan_fetched || cardholder_name_fetched)
|
||||
// return EmvErrorNone;
|
||||
// else
|
||||
// return error;
|
||||
return error;
|
||||
}
|
||||
|
||||
static EmvError emv_poller_req_get_data(EmvPoller* instance, uint16_t tag) {
|
||||
|
||||
Reference in New Issue
Block a user