From: iceman1001 Date: Mon, 30 Mar 2015 19:11:37 +0000 (+0200) Subject: Merge branch 'master' of https://github.com/Proxmark/proxmark3 X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/commitdiff_plain/02d352fea75385d80b49a7ab8703692ae307f073 Merge branch 'master' of https://github.com/Proxmark/proxmark3 Conflicts: armsrc/iclass.c armsrc/lfops.c client/cmdlf.c common/lfdemod.c include/usb_cmd.h --- 02d352fea75385d80b49a7ab8703692ae307f073 diff --cc armsrc/iclass.c index f62d45de,7b4daa36..e5bd4f42 --- a/armsrc/iclass.c +++ b/armsrc/iclass.c @@@ -1683,8 -1691,7 +1692,7 @@@ void ReaderIClass(uint8_t arg0) set_tracing(TRUE); setupIclassReader(); - size_t datasize = 0; - while(!BUTTON_PRESS()) + while(!BUTTON_PRESS()) { if(!tracing) { @@@ -1710,22 -1742,22 +1743,22 @@@ //Then we can 'ship' back the 8 * 5 bytes of data, // with 0xFF:s in block 3 and 4. - LED_B_ON(); - //Send back to client, but don't bother if we already sent this - if(memcmp(last_csn, card_data, 8) != 0) + LED_B_ON(); + //Send back to client, but don't bother if we already sent this + if(memcmp(last_csn, card_data, 8) != 0) { - - if(!get_cc || (get_cc && read_status == 2)) + // If caller requires that we get CC, continue until we got it + if( (arg0 & read_status & FLAG_ICLASS_READER_CC) || !(arg0 & FLAG_ICLASS_READER_CC)) { - cmd_send(CMD_ACK,read_status,0,0,card_data,datasize); + cmd_send(CMD_ACK,result_status,0,0,card_data,sizeof(card_data)); if(abort_after_read) { LED_A_OFF(); return; } - //Save that we already sent this.... - memcpy(last_csn, card_data, 8); + //Save that we already sent this.... + memcpy(last_csn, card_data, 8); } - //If 'get_cc' was specified and we didn't get a CC, we'll just keep trying... + } LED_B_OFF(); } diff --cc client/graph.c index 190dfe8f,190dfe8f..f4acc579 --- a/client/graph.c +++ b/client/graph.c @@@ -146,7 -146,7 +146,7 @@@ uint8_t GetPskCarrier(const char str[] } //uint8_t countPSK_FC(uint8_t *BitStream, size_t size) -- carrier = countPSK_FC(grph,size); ++ carrier = countFC(grph,size,0); // Only print this message if we're not looping something if (printAns){ PrintAndLog("Auto-detected PSK carrier rate: %d", carrier); @@@ -232,8 -232,8 +232,7 @@@ uint8_t fskClocks(uint8_t *fc1, uint8_ uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0}; size_t size = getFromGraphBuf(BitStream); if (size==0) return 0; -- uint8_t dummy = 0; -- uint16_t ans = countFC(BitStream, size, &dummy); ++ uint16_t ans = countFC(BitStream, size, 1); if (ans==0) { if (verbose) PrintAndLog("DEBUG: No data found"); return 0; diff --cc common/ldscript.common index f1b63550,f1b63550..c1a48dfc --- a/common/ldscript.common +++ b/common/ldscript.common @@@ -14,6 -14,6 +14,7 @@@ MEMOR bootphase1 : ORIGIN = 0x00100000, LENGTH = 0x200 /* Phase 1 bootloader: Copies real bootloader to RAM */ bootphase2 : ORIGIN = 0x00100200, LENGTH = 0x2000 - 0x200 /* Main bootloader code, stored in Flash, executed from RAM */ fpgaimage : ORIGIN = 0x00102000, LENGTH = 96k - 0x2000 /* Place where the FPGA image will end up */ ++ //osimage : ORIGIN = 0x00118000, LENGTH = 256K - 96k /* Place where the main OS will end up */ osimage : ORIGIN = 0x00118000, LENGTH = 256K - 96k /* Place where the main OS will end up */ ram : ORIGIN = 0x00200000, LENGTH = 64K - 0x20 /* RAM, minus small common area */ commonarea : ORIGIN = 0x00200000 + 64K - 0x20, LENGTH = 0x20 /* Communication between bootloader and main OS */ diff --cc common/lfdemod.h index 46e2bdd5,46e2bdd5..15121cbf --- a/common/lfdemod.h +++ b/common/lfdemod.h @@@ -19,7 -19,7 +19,6 @@@ int DetectASKClock(uint8_t dest[], size uint8_t DetectCleanAskWave(uint8_t dest[], size_t size, int high, int low); int askmandemod(uint8_t *BinStream, size_t *size, int *clk, int *invert, int maxErr); uint8_t Em410xDecode(uint8_t *BitStream, size_t *size, size_t *startIdx, uint32_t *hi, uint64_t *lo); --//uint64_t Em410xDecode(uint8_t *BitStream, size_t *size, size_t *startIdx); int ManchesterEncode(uint8_t *BitStream, size_t size); int manrawdecode(uint8_t *BitStream, size_t *size); int BiphaseRawDecode(uint8_t * BitStream, size_t *size, int offset, int invert); @@@ -34,20 -34,20 +33,16 @@@ void psk1TOpsk2(uint8_t *BitStream, siz void psk2TOpsk1(uint8_t *BitStream, size_t size); int DetectNRZClock(uint8_t dest[], size_t size, int clock); int indala26decode(uint8_t *bitStream, size_t *size, uint8_t *invert); --void pskCleanWave(uint8_t *bitStream, size_t size); int PyramiddemodFSK(uint8_t *dest, size_t *size); int AWIDdemodFSK(uint8_t *dest, size_t *size); size_t removeParity(uint8_t *BitStream, size_t startIdx, uint8_t pLen, uint8_t pType, size_t bLen); --uint16_t countFC(uint8_t *BitStream, size_t size, uint8_t *mostFC); ++uint16_t countFC(uint8_t *BitStream, size_t size, uint8_t fskAdj); uint8_t detectFSKClk(uint8_t *BitStream, size_t size, uint8_t fcHigh, uint8_t fcLow); int getHiLo(uint8_t *BitStream, size_t size, int *high, int *low, uint8_t fuzzHi, uint8_t fuzzLo); int ParadoxdemodFSK(uint8_t *dest, size_t *size, uint32_t *hi2, uint32_t *hi, uint32_t *lo); uint8_t preambleSearch(uint8_t *BitStream, uint8_t *preamble, size_t pLen, size_t *size, size_t *startIdx); uint8_t parityTest(uint32_t bits, uint8_t bitLen, uint8_t pType); --uint8_t justNoise(uint8_t *BitStream, size_t size); --uint8_t countPSK_FC(uint8_t *BitStream, size_t size); int pskRawDemod(uint8_t dest[], size_t *size, int *clock, int *invert); int DetectPSKClock(uint8_t dest[], size_t size, int clock); --void askAmp(uint8_t *BitStream, size_t size); #endif diff --cc include/usb_cmd.h index b6caf94f,62c3d949..74d494c2 --- a/include/usb_cmd.h +++ b/include/usb_cmd.h @@@ -204,8 -198,12 +204,12 @@@ typedef struct //Iclass reader flags -#define FLAG_ICLASS_READER_ONLY_ONCE 0x01 +#define FLAG_ICLASS_READER_ONLY_ONCE 0x01 - #define FLAG_ICLASS_READER_GET_CC 0x02 + #define FLAG_ICLASS_READER_CC 0x02 + #define FLAG_ICLASS_READER_CSN 0x04 + #define FLAG_ICLASS_READER_CONF 0x08 + #define FLAG_ICLASS_READER_AA 0x10 + // CMD_DEVICE_INFO response packet has flags in arg[0], flag definitions: