X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/0df669a29847cb0db5fc45389b52ee64ce7f15d7..22a6a62fbb92560ceb8f2014de9f5f417bf0a0f3:/client/cmddata.c diff --git a/client/cmddata.c b/client/cmddata.c index 87cf4bac..3b9c3a66 100644 --- a/client/cmddata.c +++ b/client/cmddata.c @@ -1457,66 +1457,79 @@ int CmdFSKdemodPyramid(const char *Cmd) return 1; } -// ISO11784/85 demod (aka animal tag) BIPHASE rf/32, with preamble of 00000000001 (128bits) -// 8 databits 1 parity +// ISO11784/85 demod (aka animal tag) BIPHASE, inverted, rf/32, with preamble of 00000000001 (128bits) +// 8 databits + 1 parity (1) // CIITT 16 chksum // NATIONAL CODE, ICAR database // COUNTRY CODE (ISO3166) // FLAG (animal/non-animal) +/* +38 IDbits +10 country code +1 extra app bit +14 reserved bits +1 animal bit +16 ccitt CRC chksum over 64bit ID CODE. +24 appli bits. + +-- sample: 985121004515220 + +Now is nibble shifting, byte shifting. +*/ int CmdIso11784demodBI(const char *Cmd){ - - if (!ASKbiphaseDemod(Cmd, FALSE)){ - if (g_debugMode) PrintAndLog("ASKbiphaseDemod failed 1st try"); + + int invert = 1; + int clk = 32; + int errCnt = 0; + uint8_t BitStream[MAX_DEMOD_BUF_LEN]; + size_t size = getFromGraphBuf(BitStream); + + errCnt = askdemod(BitStream, &size, &clk, &invert, 0, 0, 0); + if ( errCnt<0 ) { + if (g_debugMode) PrintAndLog("DEBUG: no data found %d, clock: 32", errCnt); return 0; } - size_t size = DemodBufferLen; - int ans = ISO11784demodBI(DemodBuffer, &size); - if (ans < 0){ - if (g_debugMode) PrintAndLog("Error ISO11784Demod"); + errCnt = BiphaseRawDecode(BitStream, &size, 0, 1); + if (errCnt < 0){ + if (g_debugMode) PrintAndLog("Error BiphaseRawDecode: %d", errCnt); return 0; - } + } - //size = removeParity(BitStream, idx+11, 9, 1, 104); + int preambleIndex = ISO11784demodBI(BitStream, &size); + if (preambleIndex < 0){ + if (g_debugMode) PrintAndLog("Error ISO11784Demod , no startmarker found :: %d",preambleIndex); + return 0; + } + PrintAndLog("startmarker %d; Size %d", preambleIndex, size); + //got a good demod - uint32_t ByteStream[13] = {0x00}; - uint8_t xorKey=0; - uint8_t keyCnt=0; - uint8_t bitCnt=0; - uint8_t ByteCnt=0; - size_t startIdx = ans + 11; //start after preamble - for (size_t idx = 0; idx