mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-12-26 18:12:34 +08:00
next update from en4rab on data samples
This commit is contained in:
parent
0beed8fc67
commit
90d74dc206
1 changed files with 43 additions and 49 deletions
|
@ -12,7 +12,6 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
//#include "proxusb.h"
|
||||
#include "proxmark3.h"
|
||||
#include "data.h"
|
||||
#include "ui.h"
|
||||
|
@ -154,22 +153,19 @@ int CmdAutoCorr(const char *Cmd)
|
|||
int CmdBitsamples(const char *Cmd)
|
||||
{
|
||||
int cnt = 0;
|
||||
int n = 3072;
|
||||
uint8_t got[12288];
|
||||
|
||||
GetFromBigBuf(got,sizeof(got),0);
|
||||
WaitForResponse(CMD_ACK,NULL);
|
||||
|
||||
for (int i = 0; i < n; i += 12) {
|
||||
UsbCommand c = {CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K, {i, 0, 0}};
|
||||
SendCommand(&c);
|
||||
WaitForResponse(CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K, NULL);
|
||||
|
||||
for (int j = 0; j < 48; j++) {
|
||||
for (int j = 0; j < sizeof(got); j++) {
|
||||
for (int k = 0; k < 8; k++) {
|
||||
if(sample_buf[j] & (1 << (7 - k))) {
|
||||
if(got[j] & (1 << (7 - k))) {
|
||||
GraphBuffer[cnt++] = 1;
|
||||
} else {
|
||||
GraphBuffer[cnt++] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
GraphTraceLen = cnt;
|
||||
RepaintGraphWindow();
|
||||
|
@ -401,41 +397,40 @@ int CmdHexsamples(const char *Cmd)
|
|||
int requested = 0;
|
||||
int offset = 0;
|
||||
sscanf(Cmd, "%i %i", &requested, &offset);
|
||||
if (offset % 4 != 0) {
|
||||
PrintAndLog("Offset must be a multiple of 4");
|
||||
return 0;
|
||||
}
|
||||
offset = offset/4;
|
||||
|
||||
int delivered = 0;
|
||||
uint8_t got[40000];
|
||||
|
||||
if (requested == 0) {
|
||||
n = 12;
|
||||
requested = 12;
|
||||
/* round up to nearest 8 bytes so the printed data is all valid */
|
||||
if (requested < 8) {
|
||||
requested = 8;
|
||||
}
|
||||
if (requested % 8 != 0) {
|
||||
int remainder = requested % 8;
|
||||
requested = requested + 8 - remainder;
|
||||
}
|
||||
if (offset + requested > sizeof(got)) {
|
||||
PrintAndLog("Tried to read past end of buffer, <bytes> + <offset> > 40000");
|
||||
return 0;
|
||||
} else {
|
||||
n = requested/4;
|
||||
n = requested;
|
||||
}
|
||||
|
||||
for (int i = offset; i < n+offset; i += 12) {
|
||||
UsbCommand c = {CMD_DOWNLOAD_RAW_ADC_SAMPLES_125K, {i, 0, 0}};
|
||||
SendCommand(&c);
|
||||
WaitForResponse(CMD_DOWNLOADED_RAW_ADC_SAMPLES_125K, NULL);
|
||||
for (int j = 0; j < 48; j += 8) {
|
||||
PrintAndLog("%02x %02x %02x %02x %02x %02x %02x %02x",
|
||||
sample_buf[j+0],
|
||||
sample_buf[j+1],
|
||||
sample_buf[j+2],
|
||||
sample_buf[j+3],
|
||||
sample_buf[j+4],
|
||||
sample_buf[j+5],
|
||||
sample_buf[j+6],
|
||||
sample_buf[j+7],
|
||||
sample_buf[j+8]
|
||||
);
|
||||
delivered += 8;
|
||||
if (delivered >= requested)
|
||||
break;
|
||||
}
|
||||
GetFromBigBuf(got,n,offset);
|
||||
WaitForResponse(CMD_ACK,NULL);
|
||||
|
||||
for (int j = 0; j < n; j += 8) {
|
||||
PrintAndLog("%02x %02x %02x %02x %02x %02x %02x %02x",
|
||||
sample_buf[j+0],
|
||||
sample_buf[j+1],
|
||||
sample_buf[j+2],
|
||||
sample_buf[j+3],
|
||||
sample_buf[j+4],
|
||||
sample_buf[j+5],
|
||||
sample_buf[j+6],
|
||||
sample_buf[j+7]
|
||||
);
|
||||
delivered += 8;
|
||||
if (delivered >= requested)
|
||||
break;
|
||||
}
|
||||
|
@ -463,26 +458,25 @@ int CmdHpf(const char *Cmd)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define MAX_SAMPLE_COUNT 10000
|
||||
int CmdSamples(const char *Cmd)
|
||||
{
|
||||
int cnt = 0;
|
||||
int n;
|
||||
|
||||
uint8_t got[40000];
|
||||
|
||||
n = strtol(Cmd, NULL, 0);
|
||||
if (n == 0) n = 128;
|
||||
if (n > MAX_SAMPLE_COUNT) n = MAX_SAMPLE_COUNT;
|
||||
if (n == 0) n = 512;
|
||||
if (n > sizeof(got)) n = sizeof(got);
|
||||
|
||||
PrintAndLog("Reading %d samples\n", n);
|
||||
uint8_t got[MAX_SAMPLE_COUNT * 4];
|
||||
GetFromBigBuf(got,sizeof(got),0);
|
||||
GetFromBigBuf(got,n,0);
|
||||
WaitForResponse(CMD_ACK,NULL);
|
||||
for (int j = 0; j < n*4; j++) {
|
||||
for (int j = 0; j < n; j++) {
|
||||
GraphBuffer[cnt++] = ((int)got[j]) - 128;
|
||||
}
|
||||
|
||||
PrintAndLog("Done!\n");
|
||||
GraphTraceLen = n*4;
|
||||
GraphTraceLen = n;
|
||||
RepaintGraphWindow();
|
||||
return 0;
|
||||
}
|
||||
|
@ -869,7 +863,7 @@ static command_t CommandTable[] =
|
|||
{"detectclock", CmdDetectClockRate, 1, "Detect clock rate"},
|
||||
{"fskdemod", CmdFSKdemod, 1, "Demodulate graph window as a HID FSK"},
|
||||
{"grid", CmdGrid, 1, "<x> <y> -- overlay grid on graph window, use zero value to turn off either"},
|
||||
{"hexsamples", CmdHexsamples, 0, "<blocks> [<offset>] -- Dump big buffer as hex bytes"},
|
||||
{"hexsamples", CmdHexsamples, 0, "<bytes> [<offset>] -- Dump big buffer as hex bytes"},
|
||||
{"hide", CmdHide, 1, "Hide graph window"},
|
||||
{"hpf", CmdHpf, 1, "Remove DC offset from trace"},
|
||||
{"load", CmdLoad, 1, "<filename> -- Load trace (to graph window"},
|
||||
|
@ -878,7 +872,7 @@ static command_t CommandTable[] =
|
|||
{"manmod", CmdManchesterMod, 1, "[clock rate] -- Manchester modulate a binary stream"},
|
||||
{"norm", CmdNorm, 1, "Normalize max/min to +/-500"},
|
||||
{"plot", CmdPlot, 1, "Show graph window (hit 'h' in window for keystroke help)"},
|
||||
{"samples", CmdSamples, 0, "[128 - 16000] -- Get raw samples for graph window"},
|
||||
{"samples", CmdSamples, 0, "[512 - 40000] -- Get raw samples for graph window"},
|
||||
{"save", CmdSave, 1, "<filename> -- Save trace (from graph window)"},
|
||||
{"scale", CmdScale, 1, "<int> -- Set cursor display scale"},
|
||||
{"threshold", CmdThreshold, 1, "<threshold> -- Maximize/minimize every value in the graph window depending on threshold"},
|
||||
|
|
Loading…
Reference in a new issue