X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/e0165dcf3a5fad10eb9f9595c245365e3c5e5c0d..79495235153f5f731588905d3ca27e38d497c435:/client/cmddata.c diff --git a/client/cmddata.c b/client/cmddata.c index faea2dc3..4256aae2 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -311,7 +311,7 @@ void printEM410x(uint32_t hi, uint64_t id) ); uint64_t paxton = (((id>>32) << 24) | (id & 0xffffff)) + 0x143e00; PrintAndLog("}\nOther : %05lld_%03lld_%08lld",(id&0xFFFF),((id>>16LL) & 0xFF),(id & 0xFFFFFF)); - PrintAndLog("Pattern Paxton : %0d", paxton); + PrintAndLog("Pattern Paxton : %lld [0x%llX]", paxton, paxton); uint32_t p1id = (id & 0xFFFFFF); uint8_t arr[32] = {0x00}; @@ -352,12 +352,12 @@ void printEM410x(uint32_t hi, uint64_t id) p1 |= arr[2] << 4; p1 |= arr[1] << 5; p1 |= arr[0] << 9; - PrintAndLog("Pattern 1 : 0x%X - %d", p1, p1); + PrintAndLog("Pattern 1 : %d [0x%X]", p1, p1); uint16_t sebury1 = id & 0xFFFF; uint8_t sebury2 = (id >> 16) & 0x7F; uint32_t sebury3 = id & 0x7FFFFF; - PrintAndLog("Pattern Sebury : %d %d %d (hex: %X %X %X)", sebury1, sebury2, sebury3, sebury1, sebury2, sebury3); + PrintAndLog("Pattern Sebury : %d %d %d [0x%X 0x%X 0x%X]", sebury1, sebury2, sebury3, sebury1, sebury2, sebury3); } } return; @@ -426,20 +426,23 @@ int ASKmanDemod(const char *Cmd, bool verbose, bool emSearch) clk=0; } size_t BitLen = getFromGraphBuf(BitStream); - if (g_debugMode==1) PrintAndLog("DEBUG: Bitlen from grphbuff: %d",BitLen); + if (g_debugMode) PrintAndLog("DEBUG: Bitlen from graphbuffer: %d",BitLen); + if (BitLen==0) return 0; - int errCnt=0; - errCnt = askmandemod(BitStream, &BitLen, &clk, &invert, maxErr); + + int errCnt = askmandemod(BitStream, &BitLen, &clk, &invert, maxErr); + if (errCnt<0||BitLen<16){ //if fatal error (or -1) - if (g_debugMode==1) PrintAndLog("no data found %d, errors:%d, bitlen:%d, clock:%d",errCnt,invert,BitLen,clk); + if (g_debugMode) PrintAndLog("DEBUG: no data found %d, errors:%d, bitlen:%d, clock:%d",errCnt,invert,BitLen,clk); return 0; } + if (verbose || g_debugMode) PrintAndLog("\nUsing Clock: %d - Invert: %d - Bits Found: %d",clk,invert,BitLen); - //output if (errCnt>0){ - if (verbose || g_debugMode) PrintAndLog("# Errors during Demoding (shown as 77 in bit stream): %d",errCnt); + if (verbose || g_debugMode) PrintAndLog("DEBUG: Errors during Demoding (shown as 77 in bit stream): %d",errCnt); } + if (verbose || g_debugMode) PrintAndLog("ASK/Manchester decoded bitstream:"); // Now output the bitstream to the scrollback by line of 16 bits setDemodBuf(BitStream,BitLen,0); @@ -513,7 +516,7 @@ int Cmdmandecoderaw(const char *Cmd) BitStream[i]=DemodBuffer[i]; } if (high>1 || low <0 ){ - PrintAndLog("Error: please raw demod the wave first then mancheseter raw decode"); + PrintAndLog("Error: please raw demod the wave first then manchester raw decode"); return 0; } size=i; @@ -632,6 +635,7 @@ int ASKrawDemod(const char *Cmd, bool verbose) char amp = param_getchar(Cmd, 0); uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0}; sscanf(Cmd, "%i %i %i %c", &clk, &invert, &maxErr, &); + if (invert != 0 && invert != 1) { if (verbose || g_debugMode) PrintAndLog("Invalid argument: %s", Cmd); return 0; @@ -674,6 +678,7 @@ int ASKbiphaseDemod(const char *Cmd, bool verbose) //ask raw demod GraphBuffer first int offset=0, clk=0, invert=0, maxErr=0, ans=0; ans = sscanf(Cmd, "%i %i %i %i", &offset, &clk, &invert, &maxErr); + if (ans>0) ans = ASKrawDemod(Cmd+2, FALSE); else @@ -1146,7 +1151,7 @@ int FSKrawDemod(const char *Cmd, bool verbose) if (strlen(Cmd)>0 && strlen(Cmd)<=2) { if (rfLen==1){ - invert=1; //if invert option only is used + invert = 1; //if invert option only is used rfLen = 0; } } @@ -1156,9 +1161,8 @@ int FSKrawDemod(const char *Cmd, bool verbose) if (BitLen==0) return 0; //get field clock lengths uint16_t fcs=0; - uint8_t dummy=0; if (fchigh==0 || fclow == 0){ - fcs = countFC(BitStream, BitLen, &dummy); + fcs = countFC(BitStream, BitLen, 1); if (fcs==0){ fchigh=10; fclow=8; @@ -1822,7 +1826,7 @@ int PSKDemod(const char *Cmd, bool verbose) uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0}; size_t BitLen = getFromGraphBuf(BitStream); if (BitLen==0) return -1; - uint8_t carrier=countPSK_FC(BitStream, BitLen); + uint8_t carrier=countFC(BitStream, BitLen, 0); if (carrier!=2 && carrier!=4 && carrier!=8){ //invalid carrier return 0; @@ -1957,7 +1961,7 @@ int NRZrawDemod(const char *Cmd, bool verbose) if (g_debugMode) PrintAndLog("Too many errors found, clk: %d, invert: %d, numbits: %d, errCnt: %d",clk,invert,BitLen,errCnt); return 0; } - if (errCnt<0|| BitLen<16){ //throw away static - allow 1 and -1 (in case of threshold command first) + if (errCnt<0 || BitLen<16){ //throw away static - allow 1 and -1 (in case of threshold command first) if (g_debugMode) PrintAndLog("no data found, clk: %d, invert: %d, numbits: %d, errCnt: %d",clk,invert,BitLen,errCnt); return 0; } @@ -2083,19 +2087,19 @@ int CmdRawDemod(const char *Cmd) char cmdp2 = Cmd[1]; int ans = 0; if (cmdp == 'f' && cmdp2 == 's'){ - ans = CmdFSKrawdemod(Cmd+3); + ans = CmdFSKrawdemod(Cmd+2); } else if(cmdp == 'a' && cmdp2 == 'b'){ - ans = Cmdaskbiphdemod(Cmd+3); + ans = Cmdaskbiphdemod(Cmd+2); } else if(cmdp == 'a' && cmdp2 == 'm'){ - ans = Cmdaskmandemod(Cmd+3); + ans = Cmdaskmandemod(Cmd+2); } else if(cmdp == 'a' && cmdp2 == 'r'){ - ans = Cmdaskrawdemod(Cmd+3); + ans = Cmdaskrawdemod(Cmd+2); } else if(cmdp == 'n' && cmdp2 == 'r'){ - ans = CmdNRZrawDemod(Cmd+3); + ans = CmdNRZrawDemod(Cmd+2); } else if(cmdp == 'p' && cmdp2 == '1'){ - ans = CmdPSK1rawDemod(Cmd+3); + ans = CmdPSK1rawDemod(Cmd+2); } else if(cmdp == 'p' && cmdp2 == '2'){ - ans = CmdPSK2rawDemod(Cmd+3); + ans = CmdPSK2rawDemod(Cmd+2); } else { PrintAndLog("unknown modulation entered - see help ('h') for parameter structure"); }