mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-29 19:18:35 -07:00
lf search use new psk, small demod adjustments
adjust thresholds for ask, fsk, io, psk based on more sample testing adjust indala decode to set clock to 32 if no input (autodetect not always correct)
This commit is contained in:
parent
c12512e99a
commit
ac3ba7ee69
3 changed files with 49 additions and 41 deletions
|
@ -870,8 +870,12 @@ int PSKnrzDemod(const char *Cmd){
|
|||
// optional arguments - same as CmdpskNRZrawDemod (clock & invert)
|
||||
int CmdIndalaDecode(const char *Cmd)
|
||||
{
|
||||
int ans;
|
||||
if (strlen(Cmd)>0)
|
||||
ans=PSKnrzDemod(Cmd);
|
||||
else
|
||||
ans=PSKnrzDemod("32");
|
||||
|
||||
int ans=PSKnrzDemod(Cmd);
|
||||
if (ans < 0){
|
||||
PrintAndLog("Error1: %d",ans);
|
||||
return 0;
|
||||
|
|
|
@ -559,18 +559,32 @@ int CmdLFfind(const char *Cmd)
|
|||
ans=CmdSamples("20000");
|
||||
}
|
||||
if (GraphTraceLen<1000) return 0;
|
||||
PrintAndLog("NOTE: some demods output possible binary\n if it finds something that looks like a tag");
|
||||
PrintAndLog("Checking for known tags:");
|
||||
|
||||
ans=Cmdaskmandemod("");
|
||||
if (ans>0) return 1;
|
||||
if (ans>0) {
|
||||
PrintAndLog("Valid EM410x ID Found!");
|
||||
return 1;
|
||||
}
|
||||
ans=CmdFSKdemodHID("");
|
||||
if (ans>0) return 1;
|
||||
if (ans>0) {
|
||||
PrintAndLog("Valid HID Prox ID Found!");
|
||||
return 1;
|
||||
}
|
||||
ans=CmdFSKdemodIO("");
|
||||
if (ans>0) return 1;
|
||||
if (ans>0) {
|
||||
PrintAndLog("Valid IO Prox ID Found!");
|
||||
return 1;
|
||||
}
|
||||
//add psk and indala
|
||||
ans=CmdIndalaDemod("");
|
||||
if (ans>0) return 1;
|
||||
ans=CmdIndalaDemod("224");
|
||||
if (ans>0) return 1;
|
||||
ans=CmdIndalaDecode("");
|
||||
if (ans>0) {
|
||||
PrintAndLog("Valid Indala ID Found!");
|
||||
return 1;
|
||||
}
|
||||
// ans=CmdIndalaDemod("224");
|
||||
// if (ans>0) return 1;
|
||||
PrintAndLog("No Known Tags Found!\n");
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -300,7 +300,7 @@ int askrawdemod(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 < 134)){ //throw away static high has to be more than 6 on graph. noise <= -10 here
|
||||
// PrintAndLog("no data found");
|
||||
return -2;
|
||||
}
|
||||
|
@ -407,21 +407,11 @@ size_t fsk_wave_demod(uint8_t * dest, size_t size, uint8_t fchigh, uint8_t fclow
|
|||
{
|
||||
uint32_t last_transition = 0;
|
||||
uint32_t idx = 1;
|
||||
uint32_t maxVal=0;
|
||||
//uint32_t maxVal=0;
|
||||
if (fchigh==0) fchigh=10;
|
||||
if (fclow==0) fclow=8;
|
||||
// we do care about the actual theshold value as sometimes near the center of the
|
||||
// wave we may get static that changes direction of wave for one value
|
||||
// if our value is too low it might affect the read. and if our tag or
|
||||
// antenna is weak a setting too high might not see anything. [marshmellow]
|
||||
if (size<100) return 0;
|
||||
for(idx=1; idx<100; idx++){
|
||||
if(maxVal<dest[idx]) maxVal = dest[idx];
|
||||
}
|
||||
// set close to the top of the wave threshold with 25% margin for error
|
||||
// less likely to get a false transition up there.
|
||||
// (but have to be careful not to go too high and miss some short waves)
|
||||
uint8_t threshold_value = (uint8_t)(((maxVal-128)*.75)+128);
|
||||
//set the threshold close to 0 (graph) to avoid static
|
||||
uint8_t threshold_value = 134; //(uint8_t)(((maxVal-128)*.75)+128);
|
||||
|
||||
// sync to first lo-hi transition, and threshold
|
||||
|
||||
|
@ -573,7 +563,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 = 140;
|
||||
static const uint8_t THRESHOLD = 134;
|
||||
uint32_t idx=0;
|
||||
//make sure buffer has data
|
||||
if (size < 66) return -1;
|
||||
|
@ -707,8 +697,8 @@ int DetectpskNRZClock(uint8_t dest[], size_t size, int clock)
|
|||
low = dest[i];
|
||||
}
|
||||
}
|
||||
peak=(int)(((peak-128)*.90)+128);
|
||||
low= (int)(((low-128)*.90)+128);
|
||||
peak=(int)(((peak-128)*.75)+128);
|
||||
low= (int)(((low-128)*.75)+128);
|
||||
//PrintAndLog("DEBUG: peak: %d, low: %d",peak,low);
|
||||
int ii;
|
||||
uint8_t clkCnt;
|
||||
|
@ -720,7 +710,7 @@ int DetectpskNRZClock(uint8_t dest[], size_t size, int clock)
|
|||
//test each valid clock from smallest to greatest to see which lines up
|
||||
for(clkCnt=0; clkCnt < 6; ++clkCnt){
|
||||
if (clk[clkCnt] == 32){
|
||||
tol=0;
|
||||
tol=1;
|
||||
}else{
|
||||
tol=0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue