return;
}
if (bitLen>512) bitLen=512;
- for (i = 0; i < (bitLen-16); i+=16) {
+ for (i = 0; i <= (bitLen-16); i+=16) {
PrintAndLog("%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i%i",
BitStream[i],
BitStream[i+1],
}
bitnum=i;
errCnt=manrawdemod(BitStream,&bitnum);
+ if (errCnt>=20){
+ PrintAndLog("Too many errors: %d",errCnt);
+ return 0;
+ }
PrintAndLog("Manchester Decoded - # errors:%d - data:",errCnt);
printBitStream(BitStream,bitnum);
if (errCnt==0){
bit ^= 1;
AppendGraph(0, clock, bit);
-// for (j = 0; j < (int)(clock/2); j++)
-// GraphBuffer[(i * clock) + j] = bit ^ 1;
-// for (j = (int)(clock/2); j < clock; j++)
-// GraphBuffer[(i * clock) + j] = bit;
+ // for (j = 0; j < (int)(clock/2); j++)
+ // GraphBuffer[(i * clock) + j] = bit ^ 1;
+ // for (j = (int)(clock/2); j < clock; j++)
+ // GraphBuffer[(i * clock) + j] = bit;
}
RepaintGraphWindow();
PrintAndLog("Auto-detected clock rate: %d", clock);
return 0;
}
-/*
-uint32_t bytebits_to_byte(uint8_t *src, int numbits)
-{
- uint32_t num = 0;
- for(int i = 0 ; i < numbits ; i++)
- {
- num = (num << 1) | (*src);
- src++;
- }
- return num;
-}
-*/
+
//by marshmellow
//fsk raw demod and print binary
//takes 2 arguments - Clock and invert
RepaintGraphWindow();
// Now output the bitstream to the scrollback by line of 16 bits
- if(size > (7*32)+2) size = (7*32)+2; //only output a max of 7 blocks of 32 bits most tags will have full bit stream inside that sample size
+ if(size > (8*32)+2) size = (8*32)+2; //only output a max of 8 blocks of 32 bits most tags will have full bit stream inside that sample size
printBitStream(BitStream,size);
return 0;
}
int CmdTuneSamples(const char *Cmd)
{
- int cnt = 0;
- int n = 255;
- uint8_t got[255];
-
- PrintAndLog("Reading %d samples\n", n);
- GetFromBigBuf(got,n,7256); // armsrc/apps.h: #define FREE_BUFFER_OFFSET 7256
- WaitForResponse(CMD_ACK,NULL);
- for (int j = 0; j < n; j++) {
- GraphBuffer[cnt++] = ((int)got[j]) - 128;
- }
+ int timeout = 0;
+ printf("\nMeasuring antenna characteristics, please wait...");
+
+ UsbCommand c = {CMD_MEASURE_ANTENNA_TUNING};
+ SendCommand(&c);
+
+ UsbCommand resp;
+ while(!WaitForResponseTimeout(CMD_MEASURED_ANTENNA_TUNING,&resp,1000)) {
+ timeout++;
+ printf(".");
+ if (timeout > 7) {
+ PrintAndLog("\nNo response from Proxmark. Aborting...");
+ return 1;
+ }
+ }
+
+ int peakv, peakf;
+ int vLf125, vLf134, vHf;
+ vLf125 = resp.arg[0] & 0xffff;
+ vLf134 = resp.arg[0] >> 16;
+ vHf = resp.arg[1] & 0xffff;;
+ peakf = resp.arg[2] & 0xffff;
+ peakv = resp.arg[2] >> 16;
+ PrintAndLog("");
+ PrintAndLog("# LF antenna: %5.2f V @ 125.00 kHz", vLf125/1000.0);
+ PrintAndLog("# LF antenna: %5.2f V @ 134.00 kHz", vLf134/1000.0);
+ PrintAndLog("# LF optimal: %5.2f V @%9.2f kHz", peakv/1000.0, 12000.0/(peakf+1));
+ PrintAndLog("# HF antenna: %5.2f V @ 13.56 MHz", vHf/1000.0);
+ if (peakv<2000)
+ PrintAndLog("# Your LF antenna is unusable.");
+ else if (peakv<10000)
+ PrintAndLog("# Your LF antenna is marginal.");
+ if (vHf<2000)
+ PrintAndLog("# Your HF antenna is unusable.");
+ else if (vHf<5000)
+ PrintAndLog("# Your HF antenna is marginal.");
+
+ for (int i = 0; i < 256; i++) {
+ GraphBuffer[i] = resp.d.asBytes[i] - 128;
+ }
- PrintAndLog("Done! Divisor 89 is 134khz, 95 is 125khz.\n");
- PrintAndLog("\n");
- GraphTraceLen = n;
- RepaintGraphWindow();
- return 0;
+ PrintAndLog("Done! Divisor 89 is 134khz, 95 is 125khz.\n");
+ PrintAndLog("\n");
+ GraphTraceLen = 256;
+ ShowGraphWindow();
+
+ return 0;
}
+
int CmdLoad(const char *Cmd)
{
FILE *f = fopen(Cmd, "r");