mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-22 22:23:38 -07:00
fix lf sim big buff overwrite with fpga download
move fix to the buffer download cmd.
This commit is contained in:
parent
e8defa30f7
commit
f66aa7f05f
4 changed files with 18 additions and 14 deletions
|
@ -1294,6 +1294,15 @@ void UsbPacketReceived(uint8_t *packet, int len)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMD_DOWNLOADED_SIM_SAMPLES_125K: {
|
case CMD_DOWNLOADED_SIM_SAMPLES_125K: {
|
||||||
|
// iceman; since changing fpga_bitstreams clears bigbuff, Its better to call it before.
|
||||||
|
// to be able to use this one for uploading data to device
|
||||||
|
// arg1 = 0 upload for LF usage
|
||||||
|
// 1 upload for HF usage
|
||||||
|
if (c->arg[1] == 0)
|
||||||
|
FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
|
||||||
|
else
|
||||||
|
FpgaDownloadAndGo(FPGA_BITSTREAM_HF);
|
||||||
|
|
||||||
uint8_t *b = BigBuf_get_addr();
|
uint8_t *b = BigBuf_get_addr();
|
||||||
memcpy(b+c->arg[0], c->d.asBytes, USB_CMD_DATA_SIZE);
|
memcpy(b+c->arg[0], c->d.asBytes, USB_CMD_DATA_SIZE);
|
||||||
cmd_send(CMD_ACK,0,0,0,0,0);
|
cmd_send(CMD_ACK,0,0,0,0,0);
|
||||||
|
|
|
@ -387,8 +387,8 @@ void SimulateTagLowFrequency(int period, int gap, int ledcontrol)
|
||||||
int i;
|
int i;
|
||||||
uint8_t *tab = BigBuf_get_addr();
|
uint8_t *tab = BigBuf_get_addr();
|
||||||
|
|
||||||
//note this may destroy the bigbuf so be sure this is called before now...
|
//note FpgaDownloadAndGo destroys the bigbuf so be sure this is called before now...
|
||||||
FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
|
//FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
|
||||||
FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_EDGE_DETECT);
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_EDGE_DETECT);
|
||||||
|
|
||||||
AT91C_BASE_PIOA->PIO_PER = GPIO_SSC_DOUT | GPIO_SSC_CLK;
|
AT91C_BASE_PIOA->PIO_PER = GPIO_SSC_DOUT | GPIO_SSC_CLK;
|
||||||
|
|
|
@ -251,7 +251,7 @@ int CmdLegicLoad(const char *Cmd)
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
UsbCommand c={CMD_DOWNLOADED_SIM_SAMPLES_125K, {offset, 0, 0}};
|
UsbCommand c={CMD_DOWNLOADED_SIM_SAMPLES_125K, {offset, 1, 0}};
|
||||||
int j; for(j = 0; j < 8; j++) {
|
int j; for(j = 0; j < 8; j++) {
|
||||||
c.d.asBytes[j] = data[j];
|
c.d.asBytes[j] = data[j];
|
||||||
}
|
}
|
||||||
|
@ -351,7 +351,7 @@ int CmdLegicRfFill(const char *Cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
UsbCommand c={CMD_DOWNLOADED_SIM_SAMPLES_125K, {0, 0, 0}};
|
UsbCommand c={CMD_DOWNLOADED_SIM_SAMPLES_125K, {0, 1, 0}};
|
||||||
for(i = 0; i < 48; i++) {
|
for(i = 0; i < 48; i++) {
|
||||||
c.d.asBytes[i] = cmd.arg[2];
|
c.d.asBytes[i] = cmd.arg[2];
|
||||||
}
|
}
|
||||||
|
|
|
@ -410,32 +410,27 @@ int CmdLFSim(const char *Cmd)
|
||||||
|
|
||||||
sscanf(Cmd, "%i", &gap);
|
sscanf(Cmd, "%i", &gap);
|
||||||
|
|
||||||
//prep fpga to lf (divisor is not important)
|
|
||||||
UsbCommand c = {CMD_SET_LF_DIVISOR, {89,0,0}};
|
|
||||||
clearCommandBuffer();
|
|
||||||
SendCommand(&c);
|
|
||||||
|
|
||||||
// convert to bitstream if necessary
|
// convert to bitstream if necessary
|
||||||
ChkBitstream(Cmd);
|
ChkBitstream(Cmd);
|
||||||
|
|
||||||
//can send only 512 bits at a time (1 byte sent per bit...)
|
//can send only 512 bits at a time (1 byte sent per bit...)
|
||||||
printf("Sending [%d bytes]", GraphTraceLen);
|
printf("Sending [%d bytes]", GraphTraceLen);
|
||||||
for (i = 0; i < GraphTraceLen; i += USB_CMD_DATA_SIZE) {
|
for (i = 0; i < GraphTraceLen; i += USB_CMD_DATA_SIZE) {
|
||||||
UsbCommand c2 = {CMD_DOWNLOADED_SIM_SAMPLES_125K, {i, 0, 0}};
|
UsbCommand c = {CMD_DOWNLOADED_SIM_SAMPLES_125K, {i, 0, 0}};
|
||||||
|
|
||||||
for (j = 0; j < USB_CMD_DATA_SIZE; j++) {
|
for (j = 0; j < USB_CMD_DATA_SIZE; j++) {
|
||||||
c2.d.asBytes[j] = GraphBuffer[i+j];
|
c.d.asBytes[j] = GraphBuffer[i+j];
|
||||||
}
|
}
|
||||||
SendCommand(&c2);
|
SendCommand(&c);
|
||||||
WaitForResponse(CMD_ACK,NULL);
|
WaitForResponse(CMD_ACK,NULL);
|
||||||
printf(".");
|
printf(".");
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
PrintAndLog("Starting to simulate");
|
PrintAndLog("Starting to simulate");
|
||||||
UsbCommand c3 = {CMD_SIMULATE_TAG_125K, {GraphTraceLen, gap, 0}};
|
UsbCommand c = {CMD_SIMULATE_TAG_125K, {GraphTraceLen, gap, 0}};
|
||||||
clearCommandBuffer();
|
clearCommandBuffer();
|
||||||
SendCommand(&c3);
|
SendCommand(&c);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue