mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 13:23:51 -07:00
ADD: sample buffer size variable, to keep track of possible download lengths which is reserved on client.
This commit is contained in:
parent
a11162a9fe
commit
cd93f3a134
4 changed files with 11 additions and 1 deletions
|
@ -276,6 +276,7 @@ int CmdVersion(const char *Cmd) {
|
|||
int CmdStatus(const char *Cmd) {
|
||||
uint8_t speed_test_buffer[USB_CMD_DATA_SIZE];
|
||||
sample_buf = speed_test_buffer;
|
||||
sample_buf_size = USB_CMD_DATA_SIZE;
|
||||
clearCommandBuffer();
|
||||
UsbCommand c = {CMD_STATUS};
|
||||
SendCommand(&c);
|
||||
|
|
|
@ -235,6 +235,10 @@ void UsbCommandReceived(UsbCommand* _ch) {
|
|||
uint32_t offset = c->arg[0];
|
||||
uint32_t len = c->arg[1];
|
||||
//uint32_t tracelen = c->arg[2];
|
||||
|
||||
// extra bounds check.
|
||||
len = MIN(sample_buf_size, len);
|
||||
|
||||
memcpy( sample_buf + offset, c->d.asBytes, len);
|
||||
//PrintAndLogEx(NORMAL, "ICE:: Download from device. chunk %" PRIu32 " | size %" PRIu32 " | tracelen:%" PRIu32 " \n", offset, len, c->arg[2]);
|
||||
break;
|
||||
|
|
|
@ -15,12 +15,14 @@
|
|||
#include "proxmark3.h"
|
||||
#include "cmdmain.h"
|
||||
|
||||
uint32_t sample_buf_size;
|
||||
uint8_t* sample_buf;
|
||||
|
||||
// this triggers a download sequence from device, its received inside cmdmain.c UsbCommandReceived()
|
||||
void GetFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
||||
// global
|
||||
sample_buf = dest;
|
||||
sample_buf_size = len;
|
||||
UsbCommand c = {CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K, {start_index, len, 0}};
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
|
@ -29,6 +31,7 @@ void GetFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
|||
// inside the BigBuf EML zon.
|
||||
bool GetEMLFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
||||
sample_buf = dest;
|
||||
sample_buf_size = len;
|
||||
UsbCommand c = {CMD_DOWNLOAD_EML_BIGBUF, {start_index, len, 0}};
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
|
@ -45,6 +48,7 @@ bool GetEMLFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
|||
// Download data from flashmem, rdv40
|
||||
void GetFromFlashMen(uint8_t *dest, uint32_t len, uint32_t start_index) {
|
||||
sample_buf = dest;
|
||||
sample_buf_size = len;
|
||||
UsbCommand c = {CMD_DOWNLOAND_FLASH_MEM, {start_index, len, 0}};
|
||||
clearCommandBuffer();
|
||||
SendCommand(&c);
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#define FILE_PATH_SIZE 1000
|
||||
|
||||
extern uint32_t sample_buf_size;
|
||||
extern uint8_t* sample_buf;
|
||||
extern void GetFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index);
|
||||
extern bool GetEMLFromBigBuf(uint8_t *dest, uint32_t len, uint32_t start_index);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue