mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-14 10:37:23 -07:00
Small lf bug fixes and threshold adjustments
adjusted lf demod thresholds based on additional testing fixed bug in hid bit length calc in cmddata.c fixed bugs in lf search
This commit is contained in:
parent
ae6ead3dc8
commit
84871873a4
3 changed files with 73 additions and 47 deletions
|
@ -19,7 +19,7 @@ uint64_t Em410xDecode(uint8_t *BitStream, size_t size)
|
|||
//no arguments needed - built this way in case we want this to be a direct call from "data " cmds in the future
|
||||
// otherwise could be a void with no arguments
|
||||
//set defaults
|
||||
int high=0, low=128;
|
||||
int high=0, low=255;
|
||||
uint64_t lo=0;
|
||||
|
||||
uint32_t i = 0;
|
||||
|
@ -84,7 +84,7 @@ uint64_t Em410xDecode(uint8_t *BitStream, size_t size)
|
|||
int askmandemod(uint8_t *BinStream, size_t *size, int *clk, int *invert)
|
||||
{
|
||||
int i;
|
||||
int high = 0, low = 128;
|
||||
int high = 0, low = 255;
|
||||
*clk=DetectASKClock(BinStream, *size, *clk); //clock default
|
||||
|
||||
if (*clk<8) *clk =64;
|
||||
|
@ -100,7 +100,7 @@ int askmandemod(uint8_t *BinStream, size_t *size, int *clk, int *invert)
|
|||
else if (BinStream[i] < low)
|
||||
low = BinStream[i];
|
||||
}
|
||||
if ((high < 158) ){ //throw away static
|
||||
if ((high < 129) ){ //throw away static (anything < 1 graph)
|
||||
//PrintAndLog("no data found");
|
||||
return -2;
|
||||
}
|
||||
|
@ -283,7 +283,7 @@ int askrawdemod(uint8_t *BinStream, size_t *size, int *clk, int *invert)
|
|||
{
|
||||
uint32_t i;
|
||||
// int invert=0; //invert default
|
||||
int high = 0, low = 128;
|
||||
int high = 0, low = 255;
|
||||
*clk=DetectASKClock(BinStream, *size, *clk); //clock default
|
||||
uint8_t BitStream[502] = {0};
|
||||
|
||||
|
@ -300,7 +300,8 @@ int askrawdemod(uint8_t *BinStream, size_t *size, int *clk, int *invert)
|
|||
else if (BinStream[i] < low)
|
||||
low = BinStream[i];
|
||||
}
|
||||
if ((high < 134)){ //throw away static high has to be more than 6 on graph. noise <= -10 here
|
||||
if ((high < 129)){ //throw away static high has to be more than 0 on graph.
|
||||
//noise <= -10 here
|
||||
// PrintAndLog("no data found");
|
||||
return -2;
|
||||
}
|
||||
|
@ -410,8 +411,8 @@ size_t fsk_wave_demod(uint8_t * dest, size_t size, uint8_t fchigh, uint8_t fclow
|
|||
//uint32_t maxVal=0;
|
||||
if (fchigh==0) fchigh=10;
|
||||
if (fclow==0) fclow=8;
|
||||
//set the threshold close to 0 (graph) to avoid static
|
||||
uint8_t threshold_value = 134; //(uint8_t)(((maxVal-128)*.75)+128);
|
||||
//set the threshold close to 0 (graph) or 128 std to avoid static
|
||||
uint8_t threshold_value = 123;
|
||||
|
||||
// sync to first lo-hi transition, and threshold
|
||||
|
||||
|
@ -471,7 +472,7 @@ size_t aggregate_bits(uint8_t *dest, size_t size, uint8_t rfLen, uint8_t maxCons
|
|||
if ( dest[idx-1]==1 ) {
|
||||
n=myround2((float)(n+1)/((float)(rfLen)/(float)fclow));
|
||||
} else {// 0->1 crossing
|
||||
n=myround2((float)(n+1)/((float)(rfLen-2)/(float)fchigh)); //-2 for fudge factor
|
||||
n=myround2((float)(n+1)/((float)(rfLen-1)/(float)fchigh)); //-1 for fudge factor
|
||||
}
|
||||
if (n == 0) n = 1;
|
||||
|
||||
|
@ -563,7 +564,7 @@ uint32_t bytebits_to_byte(uint8_t* src, size_t numbits)
|
|||
|
||||
int IOdemodFSK(uint8_t *dest, size_t size)
|
||||
{
|
||||
static const uint8_t THRESHOLD = 134;
|
||||
static const uint8_t THRESHOLD = 129;
|
||||
uint32_t idx=0;
|
||||
//make sure buffer has data
|
||||
if (size < 66) return -1;
|
||||
|
@ -607,7 +608,7 @@ int DetectASKClock(uint8_t dest[], size_t size, int clock)
|
|||
{
|
||||
int i=0;
|
||||
int peak=0;
|
||||
int low=128;
|
||||
int low=255;
|
||||
int clk[]={16,32,40,50,64,100,128,256};
|
||||
int loopCnt = 256; //don't need to loop through entire array...
|
||||
if (size<loopCnt) loopCnt = size;
|
||||
|
@ -679,7 +680,7 @@ int DetectpskNRZClock(uint8_t dest[], size_t size, int clock)
|
|||
{
|
||||
int i=0;
|
||||
int peak=0;
|
||||
int low=128;
|
||||
int low=255;
|
||||
int clk[]={16,32,40,50,64,100,128,256};
|
||||
int loopCnt = 2048; //don't need to loop through entire array...
|
||||
if (size<loopCnt) loopCnt = size;
|
||||
|
@ -763,7 +764,7 @@ int DetectpskNRZClock(uint8_t dest[], size_t size, int clock)
|
|||
void pskCleanWave(uint8_t *bitStream, size_t size)
|
||||
{
|
||||
int i;
|
||||
int low=128;
|
||||
int low=255;
|
||||
int high=0;
|
||||
int gap = 4;
|
||||
// int loopMax = 2048;
|
||||
|
@ -805,8 +806,7 @@ int indala26decode(uint8_t *bitStream, size_t *size, uint8_t *invert)
|
|||
{
|
||||
//26 bit 40134 format (don't know other formats)
|
||||
int i;
|
||||
int long_wait;
|
||||
long_wait = 29;//29 leading zeros in format
|
||||
int long_wait=29;//29 leading zeros in format
|
||||
int start;
|
||||
int first = 0;
|
||||
int first2 = 0;
|
||||
|
@ -828,7 +828,6 @@ int indala26decode(uint8_t *bitStream, size_t *size, uint8_t *invert)
|
|||
// did not find start sequence
|
||||
return -1;
|
||||
}
|
||||
//found start once now test length by finding next one
|
||||
// Inverting signal if needed
|
||||
if (first == 1) {
|
||||
for (i = start; i < *size; i++) {
|
||||
|
@ -838,6 +837,7 @@ int indala26decode(uint8_t *bitStream, size_t *size, uint8_t *invert)
|
|||
}else *invert=0;
|
||||
|
||||
int iii;
|
||||
//found start once now test length by finding next one
|
||||
for (ii=start+29; ii <= *size - 250; ii++) {
|
||||
first2 = bitStream[ii];
|
||||
for (iii = ii; iii < ii + long_wait; iii++) {
|
||||
|
@ -873,7 +873,7 @@ int pskNRZrawDemod(uint8_t *dest, size_t *size, int *clk, int *invert)
|
|||
int clk2 = DetectpskNRZClock(dest, *size, *clk);
|
||||
*clk=clk2;
|
||||
uint32_t i;
|
||||
uint8_t high=0, low=128;
|
||||
uint8_t high=0, low=255;
|
||||
uint32_t gLen = *size;
|
||||
if (gLen > 1280) gLen=1280;
|
||||
// get high
|
||||
|
@ -889,7 +889,7 @@ int pskNRZrawDemod(uint8_t *dest, size_t *size, int *clk, int *invert)
|
|||
int lastBit = 0; //set first clock check
|
||||
uint32_t bitnum = 0; //output counter
|
||||
uint8_t tol = 0; //clock tolerance adjust - waves will be accepted as within the clock if they fall + or - this value + clock from last valid wave
|
||||
if (*clk==32)tol=2; //clock tolerance may not be needed anymore currently set to + or - 1 but could be increased for poor waves or removed entirely
|
||||
if (*clk==32) tol = 2; //clock tolerance may not be needed anymore currently set to + or - 1 but could be increased for poor waves or removed entirely
|
||||
uint32_t iii = 0;
|
||||
uint8_t errCnt =0;
|
||||
uint32_t bestStart = *size;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue