]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - common/lfdemod.c
Add PACE replay functionality
[proxmark3-svn] / common / lfdemod.c
index c0f2bb71265ee4ffcce67f5da4be77527eb71321..f13a567c6fe8cda87b1cf70248cd201603fe023f 100644 (file)
@@ -526,7 +526,7 @@ int ParadoxdemodFSK(uint8_t *dest, size_t *size, uint32_t *hi2, uint32_t *hi, ui
        return (int)startIdx;
 }
 
        return (int)startIdx;
 }
 
-uint32_t bytebits_to_byte(uint8_tsrc, size_t numbits)
+uint32_t bytebits_to_byte(uint8_t *src, size_t numbits)
 {
        uint32_t num = 0;
        for(int i = 0 ; i < numbits ; i++)
 {
        uint32_t num = 0;
        for(int i = 0 ; i < numbits ; i++)
@@ -538,13 +538,12 @@ uint32_t bytebits_to_byte(uint8_t* src, size_t numbits)
 }
 
 //least significant bit first
 }
 
 //least significant bit first
-uint32_t bytebits_to_byteLSBF(uint8_tsrc, size_t numbits)
+uint32_t bytebits_to_byteLSBF(uint8_t *src, size_t numbits)
 {
        uint32_t num = 0;
        for(int i = 0 ; i < numbits ; i++)
        {
 {
        uint32_t num = 0;
        for(int i = 0 ; i < numbits ; i++)
        {
-               num = (num << 1) | (*src);
-               src++;
+               num = (num << 1) | *(src + (numbits-(i+1)));
        }
        return num;
 }
        }
        return num;
 }
@@ -581,7 +580,7 @@ int IOdemodFSK(uint8_t *dest, size_t size)
 
 // by marshmellow
 // takes a array of binary values, start position, length of bits per parity (includes parity bit),
 
 // by marshmellow
 // takes a array of binary values, start position, length of bits per parity (includes parity bit),
-//   Parity Type (1 for odd 0 for even), and binary Length (length to run) 
+//   Parity Type (1 for odd; 0 for even; 2 for just drop it), and binary Length (length to run) 
 size_t removeParity(uint8_t *BitStream, size_t startIdx, uint8_t pLen, uint8_t pType, size_t bLen)
 {
        uint32_t parityWd = 0;
 size_t removeParity(uint8_t *BitStream, size_t startIdx, uint8_t pLen, uint8_t pType, size_t bLen)
 {
        uint32_t parityWd = 0;
@@ -593,7 +592,9 @@ size_t removeParity(uint8_t *BitStream, size_t startIdx, uint8_t pLen, uint8_t p
                }
                j--;
                // if parity fails then return 0
                }
                j--;
                // if parity fails then return 0
-               if (parityTest(parityWd, pLen, pType) == 0) return -1;
+               if (pType != 2) {
+                       if (parityTest(parityWd, pLen, pType) == 0) return -1;
+               }
                bitCnt+=(pLen-1);
                parityWd = 0;
        }
                bitCnt+=(pLen-1);
                parityWd = 0;
        }
@@ -604,7 +605,7 @@ size_t removeParity(uint8_t *BitStream, size_t startIdx, uint8_t pLen, uint8_t p
 
 // Ask/Biphase Demod then try to locate an ISO 11784/85 ID
 // BitStream must contain previously askrawdemod and biphasedemoded data
 
 // Ask/Biphase Demod then try to locate an ISO 11784/85 ID
 // BitStream must contain previously askrawdemod and biphasedemoded data
-int ISO11784demodBI(uint8_t *dest, size_t *size)
+int FDXBdemodBI(uint8_t *dest, size_t *size)
 {
        //make sure buffer has enough data
        if (*size < 128) return -1;
 {
        //make sure buffer has enough data
        if (*size < 128) return -1;
Impressum, Datenschutz