next update from en4rab on data samples

This commit is contained in:
roel@libnfc.org 2013-04-26 20:33:05 +00:00
parent 0beed8fc67
commit 90d74dc206

View file

@ -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"},