CHG: 'LF VISA2000' adding askedgedetection when decoding allows for some traces to be correct demodulated.

This commit is contained in:
iceman1001 2016-12-16 19:06:19 +01:00
parent 3375daee9e
commit 92014925d6
3 changed files with 12 additions and 3 deletions

View file

@ -26,8 +26,8 @@
#include "loclass/cipherutils.h" // for decimating samples in getsamples #include "loclass/cipherutils.h" // for decimating samples in getsamples
uint8_t DemodBuffer[MAX_DEMOD_BUF_LEN]; uint8_t DemodBuffer[MAX_DEMOD_BUF_LEN];
uint8_t g_debugMode=0; uint8_t g_debugMode = 0;
size_t DemodBufferLen=0; size_t DemodBufferLen = 0;
static int CmdHelp(const char *Cmd); static int CmdHelp(const char *Cmd);
int usage_data_printdemodbuf(void){ int usage_data_printdemodbuf(void){

View file

@ -30,6 +30,7 @@ int CmdG_Prox_II_Demod(const char *Cmd);
int Cmdaskrawdemod(const char *Cmd); int Cmdaskrawdemod(const char *Cmd);
int Cmdaskmandemod(const char *Cmd); int Cmdaskmandemod(const char *Cmd);
int AutoCorrelate(int window, bool SaveGrph, bool verbose); int AutoCorrelate(int window, bool SaveGrph, bool verbose);
int CmdAskEdgeDetect(const char *Cmd);
int CmdAutoCorr(const char *Cmd); int CmdAutoCorr(const char *Cmd);
int CmdBiphaseDecodeRaw(const char *Cmd); int CmdBiphaseDecodeRaw(const char *Cmd);
int CmdBitsamples(const char *Cmd); int CmdBitsamples(const char *Cmd);

View file

@ -48,10 +48,16 @@ static uint8_t visa_chksum( uint32_t id ) {
//see ASKDemod for what args are accepted //see ASKDemod for what args are accepted
int CmdVisa2kDemod(const char *Cmd) { int CmdVisa2kDemod(const char *Cmd) {
// save GraphBuffer - to restore it later
save_restoreGB(1);
CmdAskEdgeDetect("");
//ASK / Manchester //ASK / Manchester
bool st = TRUE; bool st = TRUE;
if (!ASKDemod_ext("64 0 0", FALSE, FALSE, 1, &st)) { if (!ASKDemod_ext("64 0 0", FALSE, FALSE, 1, &st)) {
if (g_debugMode) PrintAndLog("DEBUG: Error - Visa2k: ASK/Manchester Demod failed"); if (g_debugMode) PrintAndLog("DEBUG: Error - Visa2k: ASK/Manchester Demod failed");
save_restoreGB(0);
return 0; return 0;
} }
size_t size = DemodBufferLen; size_t size = DemodBufferLen;
@ -67,6 +73,7 @@ int CmdVisa2kDemod(const char *Cmd) {
else else
PrintAndLog("DEBUG: Error - Visa2k: ans: %d", ans); PrintAndLog("DEBUG: Error - Visa2k: ans: %d", ans);
} }
save_restoreGB(0);
return 0; return 0;
} }
setDemodBuf(DemodBuffer, 96, ans); setDemodBuf(DemodBuffer, 96, ans);
@ -82,10 +89,11 @@ int CmdVisa2kDemod(const char *Cmd) {
// test checksums // test checksums
if ( chk != calc ) { if ( chk != calc ) {
printf("DEBUG: error: Visa2000 checksum failed %x - %x\n", chk, calc); printf("DEBUG: error: Visa2000 checksum failed %x - %x\n", chk, calc);
save_restoreGB(0);
return 0; return 0;
} }
PrintAndLog("Visa2000 Tag Found: Card ID %u, Raw: %08X%08X%08X", raw2, raw1 ,raw2, raw3); PrintAndLog("Visa2000 Tag Found: Card ID %u, Raw: %08X%08X%08X", raw2, raw1 ,raw2, raw3);
save_restoreGB(0);
return 1; return 1;
} }