mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 21:33:47 -07:00
CHG: added timeouts for downloading values from device, to make the client more responsive.
CHG: still curious for the printf_hex_breaks method, why it behavies strange.
This commit is contained in:
parent
085e8501f7
commit
f7f844d0ba
2 changed files with 15 additions and 6 deletions
|
@ -57,9 +57,12 @@ int CmdLegicDecode(const char *Cmd) {
|
||||||
char token_type[4];
|
char token_type[4];
|
||||||
|
|
||||||
// copy data from proxmark into buffer
|
// copy data from proxmark into buffer
|
||||||
GetFromBigBuf(data_buf,sizeof(data_buf),0);
|
GetFromBigBuf(data_buf, sizeof(data_buf), 0);
|
||||||
WaitForResponse(CMD_ACK,NULL);
|
if ( !WaitForResponseTimeout(CMD_ACK, NULL, 2000)){
|
||||||
|
PrintAndLog("Command execute timeout");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// Output CDF System area (9 bytes) plus remaining header area (12 bytes)
|
// Output CDF System area (9 bytes) plus remaining header area (12 bytes)
|
||||||
crc = data_buf[4];
|
crc = data_buf[4];
|
||||||
uint32_t calc_crc = CRC8Legic(data_buf, 4);
|
uint32_t calc_crc = CRC8Legic(data_buf, 4);
|
||||||
|
@ -119,6 +122,7 @@ int CmdLegicDecode(const char *Cmd) {
|
||||||
printf("-------------------------------------\n");
|
printf("-------------------------------------\n");
|
||||||
i = 22;
|
i = 22;
|
||||||
// 64 potential segements
|
// 64 potential segements
|
||||||
|
// how to detect there is no segments?!?
|
||||||
for ( segmentNum=0; segmentNum<64; segmentNum++ ) {
|
for ( segmentNum=0; segmentNum<64; segmentNum++ ) {
|
||||||
segment_len = ((data_buf[i+1]^crc)&0x0f) * 256 + (data_buf[i]^crc);
|
segment_len = ((data_buf[i+1]^crc)&0x0f) * 256 + (data_buf[i]^crc);
|
||||||
segment_flag = ((data_buf[i+1]^crc)&0xf0)>>4;
|
segment_flag = ((data_buf[i+1]^crc)&0xf0)>>4;
|
||||||
|
@ -335,7 +339,10 @@ int CmdLegicSave(const char *Cmd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
GetFromBigBuf(got, requested, offset);
|
GetFromBigBuf(got, requested, offset);
|
||||||
WaitForResponse(CMD_ACK, NULL);
|
if ( !WaitForResponseTimeout(CMD_ACK, NULL, 2000)){
|
||||||
|
PrintAndLog("Command execute timeout");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
for (int j = 0; j < requested; j += 8) {
|
for (int j = 0; j < requested; j += 8) {
|
||||||
fprintf(f, "%02x %02x %02x %02x %02x %02x %02x %02x\n",
|
fprintf(f, "%02x %02x %02x %02x %02x %02x %02x %02x\n",
|
||||||
|
@ -351,6 +358,7 @@ int CmdLegicSave(const char *Cmd) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: write a help text (iceman)
|
||||||
int CmdLegicRfSim(const char *Cmd) {
|
int CmdLegicRfSim(const char *Cmd) {
|
||||||
UsbCommand c = {CMD_SIMULATE_TAG_LEGIC_RF, {6,3,0}};
|
UsbCommand c = {CMD_SIMULATE_TAG_LEGIC_RF, {6,3,0}};
|
||||||
sscanf(Cmd, " %"lli" %"lli" %"lli, &c.arg[0], &c.arg[1], &c.arg[2]);
|
sscanf(Cmd, " %"lli" %"lli" %"lli, &c.arg[0], &c.arg[1], &c.arg[2]);
|
||||||
|
@ -359,6 +367,7 @@ int CmdLegicRfSim(const char *Cmd) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: write a help text (iceman)
|
||||||
int CmdLegicRfWrite(const char *Cmd) {
|
int CmdLegicRfWrite(const char *Cmd) {
|
||||||
UsbCommand c = {CMD_WRITER_LEGIC_RF};
|
UsbCommand c = {CMD_WRITER_LEGIC_RF};
|
||||||
int res = sscanf(Cmd, " 0x%"llx" 0x%"llx, &c.arg[0], &c.arg[1]);
|
int res = sscanf(Cmd, " 0x%"llx" 0x%"llx, &c.arg[0], &c.arg[1]);
|
||||||
|
|
|
@ -110,8 +110,8 @@ void print_hex_break(const uint8_t *data, const size_t len, uint8_t breaks) {
|
||||||
printf("%02X ", data[i]);
|
printf("%02X ", data[i]);
|
||||||
|
|
||||||
// check if a line break is needed
|
// check if a line break is needed
|
||||||
if ( (breaks > 0) && (i > 0) && !(i % breaks) )
|
if ( breaks > 0 && !(i+1 % breaks) )
|
||||||
printf("(%d %d)\n", i , breaks);
|
printf("(%d %d)\n", i+1 , breaks);
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue