lf improvements

fix noralsy demod bug (st should be true)
fix sprint_bin_break bug (didn't print last bit)
add a function to save/restore demodbuffer
remove redundant countFC call in PSKDemod
clean up pskclockdetect functions
fix indala26decode bug (end of data sometimes not correct)
improve PSK detection / demodulation
improve NRZ detection
improve t55xx commands & fix a few bugs
add t55xx page1 detection - added it to lf search
added experimental t55xx testmode write
This commit is contained in:
marshmellow42 2017-04-04 11:52:10 -04:00
parent 6a772a1273
commit b97311b1bd
13 changed files with 466 additions and 238 deletions

View file

@ -863,16 +863,25 @@ int CheckChipType(char cmdp) {
//check for em4x05/em4x69 chips first
save_restoreGB(1);
save_restoreDB(1);
if ((!offline && (cmdp != '1')) && EM4x05Block0Test(&wordData)) {
PrintAndLog("\nValid EM4x05/EM4x69 Chip Found\nTry lf em 4x05... commands\n");
save_restoreGB(0);
save_restoreDB(0);
return 1;
}
//TODO check for t55xx chip...
if ((!offline && (cmdp != '1')) && tryDetectP1(true)) {
PrintAndLog("\nValid T55xx Chip Found\nTry lf t55xx ... commands\n");
save_restoreGB(0);
save_restoreDB(0);
return 1;
}
save_restoreGB(0);
return 1;
save_restoreDB(0);
return 0;
}
//by marshmellow
@ -924,7 +933,7 @@ int CmdLFfind(const char *Cmd)
return 1;
}
ans=CmdCOTAGRead("");
if (ans>0){
if (ans>0) {
PrintAndLog("\nValid COTAG ID Found!");
return 1;
}
@ -932,6 +941,8 @@ int CmdLFfind(const char *Cmd)
return 0;
}
// TODO test for modulation then only test formats that use that modulation
ans=CmdFSKdemodIO("");
if (ans>0) {
PrintAndLog("\nValid IO Prox ID Found!");
@ -980,13 +991,13 @@ int CmdLFfind(const char *Cmd)
return CheckChipType(cmdp);
}
ans=CmdFdxDemod("");
ans=CmdFdxDemod(""); //biphase
if (ans>0) {
PrintAndLog("\nValid FDX-B ID Found!");
return CheckChipType(cmdp);
}
ans=EM4x50Read("", false);
ans=EM4x50Read("", false); //ask
if (ans>0) {
PrintAndLog("\nValid EM4x50 ID Found!");
return 1;
@ -1016,7 +1027,7 @@ int CmdLFfind(const char *Cmd)
return CheckChipType(cmdp);
}
ans=CmdIndalaDecode("");
ans=CmdIndalaDecode(""); //psk
if (ans>0) {
PrintAndLog("\nValid Indala ID Found!");
return CheckChipType(cmdp);
@ -1029,14 +1040,14 @@ int CmdLFfind(const char *Cmd)
}
PrintAndLog("\nNo Known Tags Found!\n");
if (testRaw=='u' || testRaw=='U'){
if (testRaw=='u' || testRaw=='U') {
ans=CheckChipType(cmdp);
//test unknown tag formats (raw mode)0
PrintAndLog("\nChecking for Unknown tags:\n");
ans=AutoCorrelate(4000, false, false);
if (ans > 0) PrintAndLog("Possible Auto Correlation of %d repeating samples",ans);
ans=GetFskClock("",false,false);
if (ans != 0){ //fsk
if (ans != 0) { //fsk
ans=FSKrawDemod("",true);
if (ans>0) {
PrintAndLog("\nUnknown FSK Modulated Tag Found!");