]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmddata.c
Merge pull request #250 from pwpiwi/fix_mfkey
[proxmark3-svn] / client / cmddata.c
index 1924e5f716f7cb84c78ad4b0ea07df1708965d81..1acce2edd4bc445e817cb597c2903b8607fd6e60 100644 (file)
@@ -444,99 +444,6 @@ int Cmdaskbiphdemod(const char *Cmd)
        return ASKbiphaseDemod(Cmd, true);
 }
 
        return ASKbiphaseDemod(Cmd, true);
 }
 
-//could be split to a gProxII file
-//by marshmellow
-//attempts to demodulate and identify a G_Prox_II verex/chubb card
-//WARNING: if it fails during some points it will destroy the DemodBuffer data
-// but will leave the GraphBuffer intact.
-//if successful it will push askraw data back to demod buffer ready for emulation
-int CmdG_Prox_II_Demod(const char *Cmd)
-{
-       if (!ASKbiphaseDemod(Cmd, false)){
-               if (g_debugMode) PrintAndLog("Error gProxII: ASKbiphaseDemod failed 1st try");
-               return 0;
-       }
-       size_t size = DemodBufferLen;
-       //call lfdemod.c demod for gProxII
-       int ans = gProxII_Demod(DemodBuffer, &size);
-       if (ans < 0){
-               if (g_debugMode) PrintAndLog("Error gProxII_Demod");
-               return 0;
-       }
-       //got a good demod of 96 bits
-       uint8_t ByteStream[8] = {0x00};
-       uint8_t xorKey=0;
-       size_t startIdx = ans + 6; //start after 6 bit preamble
-
-       uint8_t bits_no_spacer[90];
-       //so as to not mess with raw DemodBuffer copy to a new sample array
-       memcpy(bits_no_spacer, DemodBuffer + startIdx, 90);
-       // remove the 18 (90/5=18) parity bits (down to 72 bits (96-6-18=72))
-       size_t bitLen = removeParity(bits_no_spacer, 0, 5, 3, 90); //source, startloc, paritylen, ptype, length_to_run
-       if (bitLen != 72) {
-               if (g_debugMode) PrintAndLog("Error gProxII: spacer removal did not produce 72 bits: %u, start: %u", bitLen, startIdx);
-               return 0;
-       }
-       // get key and then get all 8 bytes of payload decoded
-       xorKey = (uint8_t)bytebits_to_byteLSBF(bits_no_spacer, 8);
-       for (size_t idx = 0; idx < 8; idx++) {
-               ByteStream[idx] = ((uint8_t)bytebits_to_byteLSBF(bits_no_spacer+8 + (idx*8),8)) ^ xorKey;
-               if (g_debugMode) PrintAndLog("byte %u after xor: %02x", (unsigned int)idx, ByteStream[idx]);
-       }
-       //now ByteStream contains 8 Bytes (64 bits) of decrypted raw tag data
-       // 
-       uint8_t fmtLen = ByteStream[0]>>2;
-       uint32_t FC = 0;
-       uint32_t Card = 0;
-       //get raw 96 bits to print
-       uint32_t raw1 = bytebits_to_byte(DemodBuffer+ans,32);
-       uint32_t raw2 = bytebits_to_byte(DemodBuffer+ans+32, 32);
-       uint32_t raw3 = bytebits_to_byte(DemodBuffer+ans+64, 32);
-
-       if (fmtLen==36){
-               FC = ((ByteStream[3] & 0x7F)<<7) | (ByteStream[4]>>1);
-               Card = ((ByteStream[4]&1)<<19) | (ByteStream[5]<<11) | (ByteStream[6]<<3) | (ByteStream[7]>>5);
-               PrintAndLog("G-Prox-II Found: FmtLen %d, FC %u, Card %u", (int)fmtLen, FC, Card);
-       } else if(fmtLen==26){
-               FC = ((ByteStream[3] & 0x7F)<<1) | (ByteStream[4]>>7);
-               Card = ((ByteStream[4]&0x7F)<<9) | (ByteStream[5]<<1) | (ByteStream[6]>>7);
-               PrintAndLog("G-Prox-II Found: FmtLen %d, FC %u, Card %u", (int)fmtLen, FC, Card);
-       } else {
-               PrintAndLog("Unknown G-Prox-II Fmt Found: FmtLen %d",(int)fmtLen);
-               PrintAndLog("Decoded Raw: %s", sprint_hex(ByteStream, 8)); 
-       }
-       PrintAndLog("Raw: %08x%08x%08x", raw1,raw2,raw3);
-       setDemodBuf(DemodBuffer+ans, 96, 0);
-       return 1;
-}
-
-//could be moved to a viking file
-//by marshmellow
-//see ASKDemod for what args are accepted
-int CmdVikingDemod(const char *Cmd)
-{
-       if (!ASKDemod(Cmd, false, false, 1)) {
-               if (g_debugMode) PrintAndLog("ASKDemod failed");
-               return 0;
-       }
-       size_t size = DemodBufferLen;
-       //call lfdemod.c demod for Viking
-       int ans = VikingDemod_AM(DemodBuffer, &size);
-       if (ans < 0) {
-               if (g_debugMode) PrintAndLog("Error Viking_Demod %d", ans);
-               return 0;
-       }
-       //got a good demod
-       uint32_t raw1 = bytebits_to_byte(DemodBuffer+ans, 32);
-       uint32_t raw2 = bytebits_to_byte(DemodBuffer+ans+32, 32);
-       uint32_t cardid = bytebits_to_byte(DemodBuffer+ans+24, 32);
-       uint8_t  checksum = bytebits_to_byte(DemodBuffer+ans+32+24, 8);
-       PrintAndLog("Viking Tag Found: Card ID %08X, Checksum: %02X", cardid, (unsigned int) checksum);
-       PrintAndLog("Raw: %08X%08X", raw1,raw2);
-       setDemodBuf(DemodBuffer+ans, 64, 0);
-       return 1;
-}
-
 //by marshmellow - see ASKDemod
 int Cmdaskrawdemod(const char *Cmd)
 {
 //by marshmellow - see ASKDemod
 int Cmdaskrawdemod(const char *Cmd)
 {
@@ -1083,59 +990,6 @@ int PSKDemod(const char *Cmd, bool verbose)
        return 1;
 }
 
        return 1;
 }
 
-// Indala 26 bit decode
-// by marshmellow
-// optional arguments - same as CmdpskNRZrawDemod (clock & invert)
-int CmdIndalaDecode(const char *Cmd)
-{
-       int ans;
-       if (strlen(Cmd)>0){
-               ans = PSKDemod(Cmd, 0);
-       } else{ //default to RF/32
-               ans = PSKDemod("32", 0);
-       }
-
-       if (!ans){
-               if (g_debugMode) 
-                       PrintAndLog("Error1: %d",ans);
-               return 0;
-       }
-       uint8_t invert=0;
-       size_t size = DemodBufferLen;
-       int startIdx = indala26decode(DemodBuffer, &size, &invert);
-       if (startIdx < 0 || size > 224) {
-               if (g_debugMode)
-                       PrintAndLog("Error2: %d",ans);
-               return -1;
-       }
-       setDemodBuf(DemodBuffer, size, (size_t)startIdx);
-       if (invert)
-               if (g_debugMode)
-                       PrintAndLog("Had to invert bits");
-
-       PrintAndLog("BitLen: %d",DemodBufferLen);
-       //convert UID to HEX
-       uint32_t uid1, uid2, uid3, uid4, uid5, uid6, uid7;
-       uid1=bytebits_to_byte(DemodBuffer,32);
-       uid2=bytebits_to_byte(DemodBuffer+32,32);
-       if (DemodBufferLen==64) {
-               PrintAndLog("Indala UID=%s (%x%08x)", sprint_bin_break(DemodBuffer,DemodBufferLen,16), uid1, uid2);
-       } else {
-               uid3=bytebits_to_byte(DemodBuffer+64,32);
-               uid4=bytebits_to_byte(DemodBuffer+96,32);
-               uid5=bytebits_to_byte(DemodBuffer+128,32);
-               uid6=bytebits_to_byte(DemodBuffer+160,32);
-               uid7=bytebits_to_byte(DemodBuffer+192,32);
-               PrintAndLog("Indala UID=%s (%x%08x%08x%08x%08x%08x%08x)", 
-                   sprint_bin_break(DemodBuffer,DemodBufferLen,16), uid1, uid2, uid3, uid4, uid5, uid6, uid7);
-       }
-       if (g_debugMode){
-               PrintAndLog("DEBUG: printing demodbuffer:");
-               printDemodBuff();
-       }
-       return 1;
-}
-
 int CmdPSKNexWatch(const char *Cmd)
 {
        if (!PSKDemod("", false)) return 0;
 int CmdPSKNexWatch(const char *Cmd)
 {
        if (!PSKDemod("", false)) return 0;
@@ -1856,8 +1710,6 @@ static command_t CommandTable[] =
 {
        {"help",            CmdHelp,            1, "This help"},
        {"askedgedetect",   CmdAskEdgeDetect,   1, "[threshold] Adjust Graph for manual ask demod using the length of sample differences to detect the edge of a wave (use 20-45, def:25)"},
 {
        {"help",            CmdHelp,            1, "This help"},
        {"askedgedetect",   CmdAskEdgeDetect,   1, "[threshold] Adjust Graph for manual ask demod using the length of sample differences to detect the edge of a wave (use 20-45, def:25)"},
-       {"askgproxiidemod", CmdG_Prox_II_Demod, 1, "Demodulate a G Prox II tag from GraphBuffer"},
-       {"askvikingdemod",  CmdVikingDemod,     1, "Demodulate a Viking tag from GraphBuffer"},
        {"autocorr",        CmdAutoCorr,        1, "[window length] [g] -- Autocorrelation over window - g to save back to GraphBuffer (overwrite)"},
        {"biphaserawdecode",CmdBiphaseDecodeRaw,1, "[offset] [invert<0|1>] [maxErr] -- Biphase decode bin stream in DemodBuffer (offset = 0|1 bits to shift the decode start)"},
        {"bin2hex",         Cmdbin2hex,         1, "bin2hex <digits>     -- Converts binary to hexadecimal"},
        {"autocorr",        CmdAutoCorr,        1, "[window length] [g] -- Autocorrelation over window - g to save back to GraphBuffer (overwrite)"},
        {"biphaserawdecode",CmdBiphaseDecodeRaw,1, "[offset] [invert<0|1>] [maxErr] -- Biphase decode bin stream in DemodBuffer (offset = 0|1 bits to shift the decode start)"},
        {"bin2hex",         Cmdbin2hex,         1, "bin2hex <digits>     -- Converts binary to hexadecimal"},
@@ -1882,7 +1734,6 @@ static command_t CommandTable[] =
        {"norm",            CmdNorm,            1, "Normalize max/min to +/-128"},
        {"plot",            CmdPlot,            1, "Show graph window (hit 'h' in window for keystroke help)"},
        {"printdemodbuffer",CmdPrintDemodBuff,  1, "[x] [o] <offset> [l] <length> -- print the data in the DemodBuffer - 'x' for hex output"},
        {"norm",            CmdNorm,            1, "Normalize max/min to +/-128"},
        {"plot",            CmdPlot,            1, "Show graph window (hit 'h' in window for keystroke help)"},
        {"printdemodbuffer",CmdPrintDemodBuff,  1, "[x] [o] <offset> [l] <length> -- print the data in the DemodBuffer - 'x' for hex output"},
-       {"pskindalademod",  CmdIndalaDecode,    1, "[clock] [invert<0|1>] -- Demodulate an indala tag (PSK1) from GraphBuffer (args optional)"},
        {"psknexwatchdemod",CmdPSKNexWatch,     1, "Demodulate a NexWatch tag (nexkey, quadrakey) (PSK1) from GraphBuffer"},
        {"rawdemod",        CmdRawDemod,        1, "[modulation] ... <options> -see help (h option) -- Demodulate the data in the GraphBuffer and output binary"},  
        {"samples",         CmdSamples,         0, "[512 - 40000] -- Get raw samples for graph window (GraphBuffer)"},
        {"psknexwatchdemod",CmdPSKNexWatch,     1, "Demodulate a NexWatch tag (nexkey, quadrakey) (PSK1) from GraphBuffer"},
        {"rawdemod",        CmdRawDemod,        1, "[modulation] ... <options> -see help (h option) -- Demodulate the data in the GraphBuffer and output binary"},  
        {"samples",         CmdSamples,         0, "[512 - 40000] -- Get raw samples for graph window (GraphBuffer)"},
Impressum, Datenschutz