X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/c2d25819d8c55b568814da61d116fda9b4ad53d1..a25d5c1cdebbd9a0840620e9307ecc8a254c2315:/client/cmddata.c diff --git a/client/cmddata.c b/client/cmddata.c index f5b9fc9c..b01b45ba 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -456,25 +456,23 @@ int CmdHpf(const char *Cmd) int CmdSamples(const char *Cmd) { - int cnt = 0; - int n; - uint8_t got[40000]; - - n = strtol(Cmd, NULL, 0); - if (n == 0) n = 512; - if (n > sizeof(got)) n = sizeof(got); + uint8_t got[36440] = {0x00}; + + int n = strtol(Cmd, NULL, 0); + if (n == 0) + n = 512; + if (n > sizeof(got)) + n = sizeof(got); - PrintAndLog("Reading %d samples from device memory\n", n); - GetFromBigBuf(got,n,3560); - WaitForResponse(CMD_ACK,NULL); - for (int j = 0; j < n; j++) { - GraphBuffer[cnt++] = ((int)got[j]) - 128; - } - - PrintAndLog("Done!\n"); - GraphTraceLen = n; - RepaintGraphWindow(); - return 0; + PrintAndLog("Reading %d samples from device memory\n", n); + GetFromBigBuf(got,n,3560); + WaitForResponse(CMD_ACK,NULL); + for (int j = 0; j < n; ++j) { + GraphBuffer[j] = ((int)got[j]) - 128; + } + GraphTraceLen = n; + RepaintGraphWindow(); + return 0; } int CmdLoad(const char *Cmd) @@ -554,7 +552,7 @@ int CmdManchesterDemod(const char *Cmd) /* But it does not work if compiling on WIndows: therefore we just allocate a */ /* large array */ - uint8_t BitStream[MAX_GRAPH_TRACE_LEN]; + uint8_t BitStream[MAX_GRAPH_TRACE_LEN] = {0x00}; /* Detect high and lows */ for (i = 0; i < GraphTraceLen; i++) @@ -566,8 +564,7 @@ int CmdManchesterDemod(const char *Cmd) } /* Get our clock */ - clock = GetClock(Cmd, high, 1); - + clock = GetClock(Cmd, high, 1); int tolerance = clock/4; /* Detect first transition */ @@ -585,8 +582,6 @@ int CmdManchesterDemod(const char *Cmd) break; } } - - PrintAndLog("Clock: %d", clock); /* If we're not working with 1/0s, demod based off clock */ if (high != 1) @@ -684,7 +679,7 @@ int CmdManchesterDemod(const char *Cmd) // We cannot end up in this state, this means we are unsynchronized, // move up 1 bit: i++; - warnings++; + warnings++; PrintAndLog("Unsynchronized, resync..."); PrintAndLog("(too many of those messages mean the stream is not Manchester encoded)"); @@ -725,21 +720,22 @@ int CmdManchesterDemod(const char *Cmd) int CmdManchesterMod(const char *Cmd) { int i, j; - int clock; int bit, lastbit, wave; - - /* Get our clock */ - clock = GetClock(Cmd, 0, 1); - + int clock = GetClock(Cmd, 0, 1); + int clock1 = GetT55x7Clock( GraphBuffer, GraphTraceLen, 0 ); + PrintAndLog("MAN MOD CLOCKS: %d ice %d", clock,clock1); + + int half = (int)(clock/2); + wave = 0; lastbit = 1; for (i = 0; i < (int)(GraphTraceLen / clock); i++) { bit = GraphBuffer[i * clock] ^ 1; - for (j = 0; j < (int)(clock/2); j++) + for (j = 0; j < half; ++j) GraphBuffer[(i * clock) + j] = bit ^ lastbit ^ wave; - for (j = (int)(clock/2); j < clock; j++) + for (j = half; j < clock; ++j) GraphBuffer[(i * clock) + j] = bit ^ lastbit ^ wave ^ 1; /* Keep track of how we start our wave and if we changed or not this time */