mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 13:23:51 -07:00
fix the config trigger
This commit is contained in:
parent
9376846958
commit
44227efc67
1 changed files with 22 additions and 7 deletions
|
@ -155,8 +155,6 @@ static void CodeIClassTagSOF(void) {
|
||||||
// turn off afterwards
|
// turn off afterwards
|
||||||
void SimulateIClass(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *datain) {
|
void SimulateIClass(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *datain) {
|
||||||
iclass_simulate(arg0, arg1, arg2, datain, NULL, NULL);
|
iclass_simulate(arg0, arg1, arg2, datain, NULL, NULL);
|
||||||
|
|
||||||
DbpString("Button pressed");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void iclass_simulate(uint8_t sim_type, uint8_t num_csns, bool send_reply, uint8_t *datain, uint8_t *dataout, uint16_t *dataoutlen) {
|
void iclass_simulate(uint8_t sim_type, uint8_t num_csns, bool send_reply, uint8_t *datain, uint8_t *dataout, uint16_t *dataoutlen) {
|
||||||
|
@ -502,8 +500,10 @@ int do_iclass_simulation(int simulationMode, uint8_t *reader_mac_buf) {
|
||||||
bool button_pressed = false;
|
bool button_pressed = false;
|
||||||
uint8_t cmd, options, block;
|
uint8_t cmd, options, block;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
bool exit_loop = false;
|
bool exit_loop = false;
|
||||||
|
bool using_kc = false;
|
||||||
|
int kc_attempt = 0;
|
||||||
|
|
||||||
while (exit_loop == false) {
|
while (exit_loop == false) {
|
||||||
WDT_HIT();
|
WDT_HIT();
|
||||||
|
|
||||||
|
@ -628,7 +628,7 @@ int do_iclass_simulation(int simulationMode, uint8_t *reader_mac_buf) {
|
||||||
trace_data = ff_data;
|
trace_data = ff_data;
|
||||||
trace_data_size = sizeof(ff_data);
|
trace_data_size = sizeof(ff_data);
|
||||||
} else { // use data from emulator memory
|
} else { // use data from emulator memory
|
||||||
memcpy(data_generic_trace, emulator + current_page * page_size + 8 * block, 8);
|
memcpy(data_generic_trace, emulator + (current_page * page_size) + (block * 8), 8);
|
||||||
AddCrc(data_generic_trace, 8);
|
AddCrc(data_generic_trace, 8);
|
||||||
trace_data = data_generic_trace;
|
trace_data = data_generic_trace;
|
||||||
trace_data_size = 10;
|
trace_data_size = 10;
|
||||||
|
@ -650,9 +650,11 @@ int do_iclass_simulation(int simulationMode, uint8_t *reader_mac_buf) {
|
||||||
if (receivedCmd[0] == 0x88 ){
|
if (receivedCmd[0] == 0x88 ){
|
||||||
cipher_state = &cipher_state_KD[current_page];
|
cipher_state = &cipher_state_KD[current_page];
|
||||||
diversified_key = diversified_kd;
|
diversified_key = diversified_kd;
|
||||||
|
using_kc = false;
|
||||||
} else {
|
} else {
|
||||||
cipher_state = &cipher_state_KC[current_page];
|
cipher_state = &cipher_state_KC[current_page];
|
||||||
diversified_key = diversified_kc;
|
diversified_key = diversified_kc;
|
||||||
|
using_kc = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
modulated_response = resp_cc;
|
modulated_response = resp_cc;
|
||||||
|
@ -678,6 +680,10 @@ int do_iclass_simulation(int simulationMode, uint8_t *reader_mac_buf) {
|
||||||
memcpy(data_response, ts->buf, ts->max);
|
memcpy(data_response, ts->buf, ts->max);
|
||||||
modulated_response = data_response;
|
modulated_response = data_response;
|
||||||
modulated_response_size = ts->max;
|
modulated_response_size = ts->max;
|
||||||
|
|
||||||
|
if (using_kc)
|
||||||
|
kc_attempt++;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// Not fullsim, we don't respond
|
// Not fullsim, we don't respond
|
||||||
chip_state = HALTED;
|
chip_state = HALTED;
|
||||||
|
@ -699,7 +705,6 @@ int do_iclass_simulation(int simulationMode, uint8_t *reader_mac_buf) {
|
||||||
}
|
}
|
||||||
exit_loop = true;
|
exit_loop = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
goto send;
|
goto send;
|
||||||
|
|
||||||
|
@ -837,7 +842,8 @@ int do_iclass_simulation(int simulationMode, uint8_t *reader_mac_buf) {
|
||||||
}
|
}
|
||||||
goto send;
|
goto send;
|
||||||
|
|
||||||
// } else if(cmd == ICLASS_CMD_DETECT) { // 0x0F
|
} else if(cmd == ICLASS_CMD_DETECT) { // 0x0F
|
||||||
|
// not supported yet, ignore
|
||||||
} else if (cmd == 0x26 && len == 5) {
|
} else if (cmd == 0x26 && len == 5) {
|
||||||
// standard ISO15693 INVENTORY command. Ignore.
|
// standard ISO15693 INVENTORY command. Ignore.
|
||||||
} else {
|
} else {
|
||||||
|
@ -860,6 +866,15 @@ send:
|
||||||
uint32_t wait_time = GetCountSspClk() + ICLASS_READER_TIMEOUT_ACTALL;
|
uint32_t wait_time = GetCountSspClk() + ICLASS_READER_TIMEOUT_ACTALL;
|
||||||
while (GetCountSspClk() < wait_time) {};
|
while (GetCountSspClk() < wait_time) {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CC attack
|
||||||
|
// wait to trigger the reader bug, then wait 1000ms
|
||||||
|
if (kc_attempt > 3) {
|
||||||
|
uint32_t wait_time = GetCountSspClk() + (16000 * 100);
|
||||||
|
while (GetCountSspClk() < wait_time) {};
|
||||||
|
kc_attempt = 0;
|
||||||
|
exit_loop = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LEDsoff();
|
LEDsoff();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue