From: Iceman Date: Tue, 3 Jan 2017 18:19:38 +0000 (+0100) Subject: Merge pull request #63 from micolous/log-nonce X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/0b63a0fe2a0edb955a646038eec455720f884f86?hp=59152dcb05df24432f711e7032b9c9cf6050ec47 Merge pull request #63 from micolous/log-nonce nonce2key: printf->PrintAndLog --- diff --git a/armsrc/lfops.c b/armsrc/lfops.c index 8e9c03a6..90b8d0b3 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -400,6 +400,17 @@ void SimulateTagLowFrequency(int period, int gap, int ledcontrol) FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_EDGE_DETECT); //FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_EDGE_DETECT | FPGA_LF_EDGE_DETECT_READER_FIELD); //FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_EDGE_DETECT | FPGA_LF_EDGE_DETECT_TOGGLE_MODE ); + + // set frequency, get values from 'lf config' command + sample_config *sc = getSamplingConfig(); + + if ( (sc->divisor == 1) || (sc->divisor < 0) || (sc->divisor > 255) ) + FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 88); //134.8Khz + else if (sc->divisor == 0) + FpgaSendCommand(FPGA_CMD_SET_DIVISOR, 95); //125Khz + else + FpgaSendCommand(FPGA_CMD_SET_DIVISOR, sc->divisor); + SetAdcMuxFor(GPIO_MUXSEL_LOPKD); AT91C_BASE_PIOA->PIO_PER = GPIO_SSC_DOUT | GPIO_SSC_CLK; diff --git a/client/cmdhficlass.c b/client/cmdhficlass.c index b5fa46f0..1caeebb8 100644 --- a/client/cmdhficlass.c +++ b/client/cmdhficlass.c @@ -769,7 +769,7 @@ int CmdHFiClassReader_Dump(const char *Cmd) { if (have_debit_key) memcpy(tag_data+(3*8),div_key,8); if (have_credit_key) memcpy(tag_data+(4*8),c_div_key,8); - printf("Num of bytes: %d\n", gotBytes); + printf("Num of bytes: %lu\n", gotBytes); // print the dump printf("------+--+-------------------------+\n"); diff --git a/client/cmdlfawid.c b/client/cmdlfawid.c index fefc6e0a..8e6e4073 100644 --- a/client/cmdlfawid.c +++ b/client/cmdlfawid.c @@ -115,7 +115,6 @@ static bool sendTry(uint8_t fmtlen, uint32_t fc, uint32_t cn, uint32_t delay, ui return TRUE; } - int CmdAWIDDemodFSK(const char *Cmd) { int findone = 0; if (Cmd[0] == 'h' || Cmd[0] == 'H') return usage_lf_awid_fskdemod(); diff --git a/client/cmdlfjablotron.c b/client/cmdlfjablotron.c index ee4b3957..7852508d 100644 --- a/client/cmdlfjablotron.c +++ b/client/cmdlfjablotron.c @@ -82,16 +82,12 @@ int CmdJablotronDemod(const char *Cmd) { int ans = JablotronDemod(DemodBuffer, &size); if (ans < 0){ if (g_debugMode){ - // if (ans == -5) - // PrintAndLog("DEBUG: Error - Jablotron not enough samples"); if (ans == -1) PrintAndLog("DEBUG: Error - Jablotron too few bits found"); - // else if (ans == -2) - // PrintAndLog("DEBUG: Error - Jablotron problem during ASK/Biphase demod"); - else if (ans == -3) - PrintAndLog("DEBUG: Error - Jablotron Size not correct: %d", size); - else if (ans == -4) + else if (ans == -2) PrintAndLog("DEBUG: Error - Jablotron preamble not found"); + else if (ans == -3) + PrintAndLog("DEBUG: Error - Jablotron size not correct: %d", size); else if (ans == -5) PrintAndLog("DEBUG: Error - Jablotron checksum failed"); else diff --git a/client/cmdlfnedap.c b/client/cmdlfnedap.c index 52cc7359..ab34d8ff 100644 --- a/client/cmdlfnedap.c +++ b/client/cmdlfnedap.c @@ -298,7 +298,7 @@ int CmdLFNedapSim(const char *Cmd) { } int CmdLFNedapChk(const char *Cmd){ - + //301600714021BE uint8_t data[256] = { 0x30, 0x16, 0x00, 0x71, 0x40, 0x21, 0xBE}; int len = 0; param_gethex_ex(Cmd, 0, data, &len); @@ -313,7 +313,7 @@ int CmdLFNedapChk(const char *Cmd){ uint8_t cl = 0x1D, ch = 0x1D, carry = 0; uint8_t al, bl, temp; - for (int i = len; i >=0; --i){ + for (int i =len; i >= 0; --i){ al = data[i]; for (int j = 8; j > 0; --j) { @@ -340,7 +340,7 @@ int CmdLFNedapChk(const char *Cmd){ } } - PrintAndLog("Nedap checksum: [ 0x21, 0xBE ] %x", ((ch << 8) | cl) ); + PrintAndLog("Nedap checksum: 0x%X", ((ch << 8) | cl) ); return 0; } diff --git a/client/default_keys.dic b/client/default_keys.dic index 1302e11a..3fbbc4dc 100644 --- a/client/default_keys.dic +++ b/client/default_keys.dic @@ -7,7 +7,8 @@ b0b1b2b3b4b5, aabbccddeeff, 4d3a99c351dd, 1a982c7e459a, -d3f7d3f7d3f7, +d3f7d3f7d3f7,// key A Wien +5a1b85fce20a,// key B Wien 714c5c886e97, 587ee5f9350f, a0478cc39091, @@ -91,6 +92,7 @@ fc00018778f7,--VästtrafikenKeyA, RKFÖstgötaTrafikenKeyA 85fed980ea5a,-- hotel system 314B49474956,--VIGIK1KeyA 564c505f4d41,--VIGIK1KeyB +ba5b895da162,--VIGIK1KeyB # # Data from: http://irq5.io/2013/04/13/decoding-bcard-conference-badges/ f4a9ef2afc6d,--BCARD KeyB diff --git a/client/lualibs/mf_default_keys.lua b/client/lualibs/mf_default_keys.lua index d4815153..86fd1f14 100644 --- a/client/lualibs/mf_default_keys.lua +++ b/client/lualibs/mf_default_keys.lua @@ -10,7 +10,8 @@ local _keys = { 'aabbccddeeff', '4d3a99c351dd', '1a982c7e459a', - 'd3f7d3f7d3f7', + 'd3f7d3f7d3f7', -- key A Wien + '5a1b85fce20a', -- key B Wien '714c5c886e97', '587ee5f9350f', 'a0478cc39091', diff --git a/common/lfdemod.c b/common/lfdemod.c index 64e6775c..c35ce561 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -677,7 +677,6 @@ int IOdemodFSK(uint8_t *dest, size_t size) int VikingDemod_AM(uint8_t *dest, size_t *size) { //make sure buffer has data if (*size < 64*2) return -2; - size_t startIdx = 0; uint8_t preamble[] = {1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; uint8_t errChk = preambleSearch(dest, preamble, sizeof(preamble), size, &startIdx); @@ -693,7 +692,7 @@ int VikingDemod_AM(uint8_t *dest, size_t *size) { if ( checkCalc != 0xA8 ) return -5; if (*size != 64) return -6; //return start position - return (int) startIdx; + return (int)startIdx; } // by iceman @@ -706,7 +705,7 @@ int Visa2kDemod_AM(uint8_t *dest, size_t *size) { if (errChk == 0) return -2; //preamble not found if (*size != 96) return -3; //wrong demoded size //return start position - return (int) startIdx; + return (int)startIdx; } // by iceman // find Noralsy preamble in already demoded data @@ -718,7 +717,7 @@ int NoralsyDemod_AM(uint8_t *dest, size_t *size) { if (errChk == 0) return -2; //preamble not found if (*size != 96) return -3; //wrong demoded size //return start position - return (int) startIdx; + return (int)startIdx; } // find presco preamble 0x10D in already demoded data int PrescoDemod(uint8_t *dest, size_t *size) { @@ -729,54 +728,41 @@ int PrescoDemod(uint8_t *dest, size_t *size) { if (errChk == 0) return -2; //preamble not found if (*size != 128) return -3; //wrong demoded size //return start position - return (int) startIdx; + return (int)startIdx; } // Ask/Biphase Demod then try to locate an ISO 11784/85 ID // BitStream must contain previously askrawdemod and biphasedemoded data -int FDXBdemodBI(uint8_t *dest, size_t *size) -{ - //make sure buffer has enough data - if (*size < 128) return -1; - +int FDXBdemodBI(uint8_t *dest, size_t *size) { + if (*size < 128*2) return -1; //make sure buffer has enough data size_t startIdx = 0; uint8_t preamble[] = {0,0,0,0,0,0,0,0,0,0,1}; - uint8_t errChk = preambleSearch(dest, preamble, sizeof(preamble), size, &startIdx); if (errChk == 0) return -2; //preamble not found + if (*size != 128) return -3; //wrong demoded size + //return start position return (int)startIdx; } // ASK/Diphase fc/64 (inverted Biphase) // Note: this i s not a demod, this is only a detection // the parameter *dest needs to be demoded before call +// 0xFFFF preamble, 64bits int JablotronDemod(uint8_t *dest, size_t *size){ - //make sure buffer has enough data - if (*size < 64) return -1; - + if (*size < 64*2) return -1; //make sure buffer has enough data size_t startIdx = 0; - // 0xFFFF preamble, 64bits - uint8_t preamble[] = { - 1,1,1,1, - 1,1,1,1, - 1,1,1,1, - 1,1,1,1, - 0 - }; - + uint8_t preamble[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0}; uint8_t errChk = preambleSearch(dest, preamble, sizeof(preamble), size, &startIdx); - if (errChk == 0) return -4; //preamble not found - if (*size != 64) return -3; + if (errChk == 0) return -2; //preamble not found + if (*size != 64) return -3; // wrong demoded size uint8_t checkchksum = 0; for (int i=16; i < 56; i += 8) { checkchksum += bytebits_to_byte(dest+startIdx+i,8); } checkchksum ^= 0x3A; - uint8_t crc = bytebits_to_byte(dest+startIdx+56, 8); - - if ( checkchksum != crc ) return -5; + if ( checkchksum != crc ) return -5; return (int)startIdx; }