mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-03-20 12:07:05 +08:00
ADD: adding a presco demod, given 0x10D as preamble, .. *work in progress*
This commit is contained in:
parent
3b920280db
commit
4469412e88
3 changed files with 47 additions and 7 deletions
|
@ -74,19 +74,44 @@ int GetPrescoBits(uint32_t sitecode, uint32_t usercode, uint8_t *prescoBits) {
|
||||||
if (bitLen != 88) return 0;
|
if (bitLen != 88) return 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
//see ASKDemod for what args are accepted
|
||||||
|
int CmdPrescoDemod(const char *Cmd) {
|
||||||
|
if (!ASKDemod(Cmd, false, false, 1)) {
|
||||||
|
if (g_debugMode) PrintAndLog("ASKDemod failed");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
size_t size = DemodBufferLen;
|
||||||
|
//call lfdemod.c demod for Viking
|
||||||
|
int ans = PrescoDemod(DemodBuffer, &size);
|
||||||
|
if (ans < 0) {
|
||||||
|
if (g_debugMode) PrintAndLog("Error Presco_Demod %d", ans);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//got a good demod
|
||||||
|
uint32_t raw1 = bytebits_to_byte(DemodBuffer+ans, 32);
|
||||||
|
uint32_t raw2 = bytebits_to_byte(DemodBuffer+ans+32, 32);
|
||||||
|
uint32_t cardid = bytebits_to_byte(DemodBuffer+ans+24, 32);
|
||||||
|
PrintAndLog("Presco Tag Found: Card ID %08X", cardid);
|
||||||
|
PrintAndLog("Raw: %08X%08X", raw1,raw2);
|
||||||
|
setDemodBuf(DemodBuffer+ans, 64, 0);
|
||||||
|
|
||||||
|
// uint32_t sitecode = 0, usercode = 0;
|
||||||
|
// GetWiegandFromPresco(id, &sitecode, &usercode);
|
||||||
|
// PrintAndLog8("SiteCode %d | UserCode %d", sitecode, usercode);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//see ASKDemod for what args are accepted
|
//see ASKDemod for what args are accepted
|
||||||
int CmdPrescoRead(const char *Cmd) {
|
int CmdPrescoRead(const char *Cmd) {
|
||||||
PrintAndLog("Number: 123456789 --> Sitecode 30 | usercode 8665");
|
// Presco Number: 123456789 --> Sitecode 30 | usercode 8665
|
||||||
// GetWiegandFromPresco("123456789");
|
|
||||||
|
|
||||||
// read lf silently
|
// read lf silently
|
||||||
//CmdLFRead("s");
|
CmdLFRead("s");
|
||||||
// get samples silently
|
// get samples silently
|
||||||
//getSamples("30000",false);
|
getSamples("30000",false);
|
||||||
// demod and output viking ID
|
// demod and output Presco ID
|
||||||
//return CmdVikingDemod(Cmd);
|
return CmdPrescoDemod(Cmd);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int CmdPrescoClone(const char *Cmd) {
|
int CmdPrescoClone(const char *Cmd) {
|
||||||
|
|
|
@ -677,6 +677,20 @@ int VikingDemod_AM(uint8_t *dest, size_t *size) {
|
||||||
return (int) startIdx;
|
return (int) startIdx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// find presco preamble 0x10D in already demoded data
|
||||||
|
int PrescoDemod(uint8_t *dest, size_t *size) {
|
||||||
|
//make sure buffer has data
|
||||||
|
if (*size < 64*2) return -2;
|
||||||
|
|
||||||
|
size_t startIdx = 0;
|
||||||
|
uint8_t preamble[] = {1,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0};
|
||||||
|
uint8_t errChk = preambleSearch(dest, preamble, sizeof(preamble), size, &startIdx);
|
||||||
|
if (errChk == 0) return -4; //preamble not found
|
||||||
|
//return start position
|
||||||
|
return (int) startIdx;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Ask/Biphase Demod then try to locate an ISO 11784/85 ID
|
// Ask/Biphase Demod then try to locate an ISO 11784/85 ID
|
||||||
// BitStream must contain previously askrawdemod and biphasedemoded data
|
// BitStream must contain previously askrawdemod and biphasedemoded data
|
||||||
int FDXBdemodBI(uint8_t *dest, size_t *size)
|
int FDXBdemodBI(uint8_t *dest, size_t *size)
|
||||||
|
|
|
@ -53,5 +53,6 @@ int indala26decode(uint8_t *bitStream, size_t *size, uint8_t *invert);
|
||||||
int ParadoxdemodFSK(uint8_t *dest, size_t *size, uint32_t *hi2, uint32_t *hi, uint32_t *lo);
|
int ParadoxdemodFSK(uint8_t *dest, size_t *size, uint32_t *hi2, uint32_t *hi, uint32_t *lo);
|
||||||
int PyramiddemodFSK(uint8_t *dest, size_t *size);
|
int PyramiddemodFSK(uint8_t *dest, size_t *size);
|
||||||
int VikingDemod_AM(uint8_t *dest, size_t *size);
|
int VikingDemod_AM(uint8_t *dest, size_t *size);
|
||||||
|
int PrescoDemod(uint8_t *dest, size_t *size);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue