mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 05:43:48 -07:00
Some more nasty bugs fixed in the lf t55xx manchester_decode method.
ADD: a little function to see if GraphBuffer is not used.
This commit is contained in:
parent
db297e69e1
commit
c6be64da09
7 changed files with 54 additions and 34 deletions
20
client/ui.c
20
client/ui.c
|
@ -95,14 +95,14 @@ void SetLogFilename(char *fn)
|
|||
logfilename = fn;
|
||||
}
|
||||
|
||||
int manchester_decode( int * data, const size_t len, uint8_t * dataout){
|
||||
int manchester_decode( int * data, const size_t len, uint8_t * dataout, size_t dataoutlen){
|
||||
|
||||
int bitlength = 0;
|
||||
int i, clock, high, low, startindex;
|
||||
low = startindex = 0;
|
||||
high = 1;
|
||||
uint8_t * bitStream = (uint8_t* ) malloc(sizeof(uint8_t) * len);
|
||||
memset(bitStream, 0x00, len);
|
||||
uint8_t * bitStream = (uint8_t* ) malloc(sizeof(uint8_t) * dataoutlen);
|
||||
memset(bitStream, 0x00, dataoutlen);
|
||||
|
||||
/* Detect high and lows */
|
||||
for (i = 0; i < len; i++) {
|
||||
|
@ -116,12 +116,12 @@ int manchester_decode( int * data, const size_t len, uint8_t * dataout){
|
|||
clock = GetT55x7Clock( data, len, high );
|
||||
startindex = DetectFirstTransition(data, len, high);
|
||||
|
||||
PrintAndLog(" Clock : %d", clock);
|
||||
//PrintAndLog(" Clock : %d", clock);
|
||||
|
||||
if (high != 1)
|
||||
bitlength = ManchesterConvertFrom255(data, len, bitStream, high, low, clock, startindex);
|
||||
bitlength = ManchesterConvertFrom255(data, len, bitStream, dataoutlen, high, low, clock, startindex);
|
||||
else
|
||||
bitlength= ManchesterConvertFrom1(data, len, bitStream, clock, startindex);
|
||||
bitlength= ManchesterConvertFrom1(data, len, bitStream, dataoutlen, clock, startindex);
|
||||
|
||||
memcpy(dataout, bitStream, bitlength);
|
||||
free(bitStream);
|
||||
|
@ -192,7 +192,7 @@ int manchester_decode( int * data, const size_t len, uint8_t * dataout){
|
|||
return i;
|
||||
}
|
||||
|
||||
int ManchesterConvertFrom255(const int * data, const size_t len, uint8_t * dataout, int high, int low, int clock, int startIndex){
|
||||
int ManchesterConvertFrom255(const int * data, const size_t len, uint8_t * dataout, int dataoutlen, int high, int low, int clock, int startIndex){
|
||||
|
||||
int i, j, z, hithigh, hitlow, bitIndex, startType;
|
||||
i = 0;
|
||||
|
@ -205,7 +205,7 @@ int manchester_decode( int * data, const size_t len, uint8_t * dataout){
|
|||
int firstST = 0;
|
||||
|
||||
// i = clock frame of data
|
||||
for (; i < (int)(len / clock); i++)
|
||||
for (; i < (int)(len/clock); i++)
|
||||
{
|
||||
hithigh = 0;
|
||||
hitlow = 0;
|
||||
|
@ -261,11 +261,13 @@ int manchester_decode( int * data, const size_t len, uint8_t * dataout){
|
|||
|
||||
if ( firstST == 4)
|
||||
break;
|
||||
if ( bitIndex >= dataoutlen-1 )
|
||||
break;
|
||||
}
|
||||
return bitIndex;
|
||||
}
|
||||
|
||||
int ManchesterConvertFrom1(const int * data, const size_t len, uint8_t * dataout, int clock, int startIndex){
|
||||
int ManchesterConvertFrom1(const int * data, const size_t len, uint8_t * dataout,int dataoutlen, int clock, int startIndex){
|
||||
|
||||
PrintAndLog(" Path B");
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue