mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-20 13:23:25 -07:00
fix buffer length bugs
adjust lf search a little as to when the chiptype check happens
This commit is contained in:
parent
0aed2199a4
commit
f1004b345e
2 changed files with 10 additions and 8 deletions
|
@ -40,7 +40,7 @@ void setDemodBuf(uint8_t *buff, size_t size, size_t startIdx)
|
||||||
if (buff == NULL)
|
if (buff == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( size >= MAX_DEMOD_BUF_LEN)
|
if ( size + startIdx >= MAX_DEMOD_BUF_LEN)
|
||||||
size = MAX_DEMOD_BUF_LEN;
|
size = MAX_DEMOD_BUF_LEN;
|
||||||
|
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
@ -65,11 +65,12 @@ bool getDemodBuf(uint8_t *buff, size_t *size) {
|
||||||
// option '1' to save DemodBuffer any other to restore
|
// option '1' to save DemodBuffer any other to restore
|
||||||
void save_restoreDB(uint8_t saveOpt)
|
void save_restoreDB(uint8_t saveOpt)
|
||||||
{
|
{
|
||||||
static uint8_t SavedDB[MAX_GRAPH_TRACE_LEN];
|
static uint8_t SavedDB[MAX_DEMOD_BUF_LEN];
|
||||||
static size_t SavedDBlen;
|
static size_t SavedDBlen;
|
||||||
static bool DB_Saved = false;
|
static bool DB_Saved = false;
|
||||||
|
|
||||||
if (saveOpt==1) { //save
|
if (saveOpt==1) { //save
|
||||||
|
|
||||||
memcpy(SavedDB, DemodBuffer, sizeof(DemodBuffer));
|
memcpy(SavedDB, DemodBuffer, sizeof(DemodBuffer));
|
||||||
SavedDBlen = DemodBufferLen;
|
SavedDBlen = DemodBufferLen;
|
||||||
DB_Saved=true;
|
DB_Saved=true;
|
||||||
|
@ -322,7 +323,7 @@ int Cmdmandecoderaw(const char *Cmd)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (DemodBufferLen==0) return 0;
|
if (DemodBufferLen==0) return 0;
|
||||||
uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0};
|
uint8_t BitStream[MAX_DEMOD_BUF_LEN]={0};
|
||||||
int high=0,low=0;
|
int high=0,low=0;
|
||||||
for (;i<DemodBufferLen;++i){
|
for (;i<DemodBufferLen;++i){
|
||||||
if (DemodBuffer[i]>high) high=DemodBuffer[i];
|
if (DemodBuffer[i]>high) high=DemodBuffer[i];
|
||||||
|
@ -388,7 +389,7 @@ int CmdBiphaseDecodeRaw(const char *Cmd)
|
||||||
PrintAndLog("DemodBuffer Empty - run 'data rawdemod ar' first");
|
PrintAndLog("DemodBuffer Empty - run 'data rawdemod ar' first");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0};
|
uint8_t BitStream[MAX_DEMOD_BUF_LEN]={0};
|
||||||
size = sizeof(BitStream);
|
size = sizeof(BitStream);
|
||||||
if ( !getDemodBuf(BitStream, &size) ) return 0;
|
if ( !getDemodBuf(BitStream, &size) ) return 0;
|
||||||
errCnt=BiphaseRawDecode(BitStream, &size, offset, invert);
|
errCnt=BiphaseRawDecode(BitStream, &size, offset, invert);
|
||||||
|
@ -419,7 +420,7 @@ int ASKbiphaseDemod(const char *Cmd, bool verbose)
|
||||||
int offset=0, clk=0, invert=0, maxErr=0;
|
int offset=0, clk=0, invert=0, maxErr=0;
|
||||||
sscanf(Cmd, "%i %i %i %i", &offset, &clk, &invert, &maxErr);
|
sscanf(Cmd, "%i %i %i %i", &offset, &clk, &invert, &maxErr);
|
||||||
|
|
||||||
uint8_t BitStream[MAX_DEMOD_BUF_LEN];
|
uint8_t BitStream[MAX_GRAPH_TRACE_LEN];
|
||||||
size_t size = getFromGraphBuf(BitStream);
|
size_t size = getFromGraphBuf(BitStream);
|
||||||
//invert here inverts the ask raw demoded bits which has no effect on the demod, but we need the pointer
|
//invert here inverts the ask raw demoded bits which has no effect on the demod, but we need the pointer
|
||||||
int errCnt = askdemod(BitStream, &size, &clk, &invert, maxErr, 0, 0);
|
int errCnt = askdemod(BitStream, &size, &clk, &invert, maxErr, 0, 0);
|
||||||
|
|
|
@ -1066,7 +1066,7 @@ int CmdLFfind(const char *Cmd)
|
||||||
ans=FSKrawDemod("",true);
|
ans=FSKrawDemod("",true);
|
||||||
if (ans>0) {
|
if (ans>0) {
|
||||||
PrintAndLog("\nUnknown FSK Modulated Tag Found!");
|
PrintAndLog("\nUnknown FSK Modulated Tag Found!");
|
||||||
return 1;
|
return CheckChipType(cmdp);;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool st = true;
|
bool st = true;
|
||||||
|
@ -1074,15 +1074,16 @@ int CmdLFfind(const char *Cmd)
|
||||||
if (ans>0) {
|
if (ans>0) {
|
||||||
PrintAndLog("\nUnknown ASK Modulated and Manchester encoded Tag Found!");
|
PrintAndLog("\nUnknown ASK Modulated and Manchester encoded Tag Found!");
|
||||||
PrintAndLog("\nif it does not look right it could instead be ASK/Biphase - try 'data rawdemod ab'");
|
PrintAndLog("\nif it does not look right it could instead be ASK/Biphase - try 'data rawdemod ab'");
|
||||||
return 1;
|
return CheckChipType(cmdp);;
|
||||||
}
|
}
|
||||||
ans=CmdPSK1rawDemod("");
|
ans=CmdPSK1rawDemod("");
|
||||||
if (ans>0) {
|
if (ans>0) {
|
||||||
PrintAndLog("Possible unknown PSK1 Modulated Tag Found above!\n\nCould also be PSK2 - try 'data rawdemod p2'");
|
PrintAndLog("Possible unknown PSK1 Modulated Tag Found above!\n\nCould also be PSK2 - try 'data rawdemod p2'");
|
||||||
PrintAndLog("\nCould also be PSK3 - [currently not supported]");
|
PrintAndLog("\nCould also be PSK3 - [currently not supported]");
|
||||||
PrintAndLog("\nCould also be NRZ - try 'data nrzrawdemod'");
|
PrintAndLog("\nCould also be NRZ - try 'data nrzrawdemod'");
|
||||||
return 1;
|
return CheckChipType(cmdp);;
|
||||||
}
|
}
|
||||||
|
ans = CheckChipType(cmdp);
|
||||||
PrintAndLog("\nNo Data Found!\n");
|
PrintAndLog("\nNo Data Found!\n");
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue