mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-19 21:03:48 -07:00
chg: step two for t55xx commnads
This commit is contained in:
parent
31b3689f0b
commit
4e7af352b4
3 changed files with 77 additions and 44 deletions
|
@ -430,8 +430,6 @@ int EPA_Setup()
|
||||||
// power up the field
|
// power up the field
|
||||||
iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD);
|
iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD);
|
||||||
|
|
||||||
iso14a_set_timeout(10500);
|
|
||||||
|
|
||||||
// select the card
|
// select the card
|
||||||
return_code = iso14443a_select_card(uid, &card_select_info, NULL);
|
return_code = iso14443a_select_card(uid, &card_select_info, NULL);
|
||||||
if (return_code != 1) {
|
if (return_code != 1) {
|
||||||
|
|
|
@ -76,29 +76,11 @@ int usage_t55xx_dump(){
|
||||||
|
|
||||||
static int CmdHelp(const char *Cmd);
|
static int CmdHelp(const char *Cmd);
|
||||||
|
|
||||||
/*
|
|
||||||
FSK1 / FSK1a
|
|
||||||
size = fskdemod(dest, size, 32, 0, 8, 10); // fsk1 RF/32
|
|
||||||
size = fskdemod(dest, size, 32, 1, 8, 10); // fsk1a RF/32
|
|
||||||
|
|
||||||
FSK2 / FSK2a
|
|
||||||
size = fskdemod(dest, size, 32, 0, 10, 8); // fsk2 RF/32
|
|
||||||
size = fskdemod(dest, size, 32, 1, 10, 8); // fsk2a RF/32
|
|
||||||
size = fskdemod(dest, size, 50, 1, 10, 8); // fsk2a RF/50
|
|
||||||
size = fskdemod(dest, size, 64, 1, 10, 8); // FSK2a RF/64
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
int CmdReadBlk(const char *Cmd)
|
int CmdReadBlk(const char *Cmd)
|
||||||
{
|
{
|
||||||
int invert = 0;
|
|
||||||
int clk = 0;
|
|
||||||
int block = -1;
|
int block = -1;
|
||||||
int password = 0xFFFFFFFF; //default to blank Block 7
|
int password = 0xFFFFFFFF; //default to blank Block 7
|
||||||
int errCnt;
|
|
||||||
size_t bitlen;
|
size_t bitlen;
|
||||||
int maxErr = 100;
|
|
||||||
//uint8_t askAmp = 0;
|
|
||||||
uint32_t blockData;
|
uint32_t blockData;
|
||||||
uint8_t bits[MAX_GRAPH_TRACE_LEN] = {0x00};
|
uint8_t bits[MAX_GRAPH_TRACE_LEN] = {0x00};
|
||||||
|
|
||||||
|
@ -139,32 +121,22 @@ int CmdReadBlk(const char *Cmd)
|
||||||
CmdSamples("12000");
|
CmdSamples("12000");
|
||||||
|
|
||||||
bitlen = getFromGraphBuf(bits);
|
bitlen = getFromGraphBuf(bits);
|
||||||
|
|
||||||
//errCnt = askrawdemod(bits, &bitlen, &clk, &invert, maxErr, askAmp);
|
|
||||||
errCnt = askmandemod(bits, &bitlen, &clk, &invert, maxErr);
|
|
||||||
|
|
||||||
//throw away static - allow 1 and -1 (in case of threshold command first)
|
|
||||||
if ( errCnt == -1 || bitlen < 16 ){
|
|
||||||
PrintAndLog("no data found");
|
|
||||||
if (g_debugMode)
|
|
||||||
PrintAndLog("errCnt: %d, bitlen: %d, clk: %d, invert: %d", errCnt, bitlen, clk, invert);
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
if (g_debugMode)
|
|
||||||
PrintAndLog("Using Clock: %d - invert: %d - Bits Found: %d", clk, invert, bitlen);
|
|
||||||
|
|
||||||
|
if ( !tryDemod(bits, bitlen) )
|
||||||
|
return 3;
|
||||||
|
|
||||||
//move bits back to DemodBuffer
|
//move bits back to DemodBuffer
|
||||||
setDemodBuf(bits, bitlen, 0);
|
setDemodBuf(bits, bitlen, 0);
|
||||||
printBitStream(bits,bitlen);
|
printBitStream(bits, bitlen);
|
||||||
|
|
||||||
// bits has the manchester encoded data.
|
// // bits has the manchester encoded data.
|
||||||
errCnt = manrawdecode(bits, &bitlen);
|
// errCnt = manrawdecode(bits, &bitlen);
|
||||||
if ( errCnt == -1 || bitlen < 16 ){
|
// if ( errCnt == -1 || bitlen < 32 ){
|
||||||
PrintAndLog("no data found");
|
// PrintAndLog("no data found");
|
||||||
if (g_debugMode)
|
// if (g_debugMode)
|
||||||
PrintAndLog("errCnt: %d, bitlen: %d, clk: %d, invert: %d", errCnt, bitlen, clk, invert);
|
// PrintAndLog("errCnt: %d, bitlen: %d, clk: %d, invert: %d", errCnt, bitlen, clk, invert);
|
||||||
return 4;
|
// return 4;
|
||||||
}
|
// }
|
||||||
|
|
||||||
blockData = PackBits(1, 32, bits);
|
blockData = PackBits(1, 32, bits);
|
||||||
|
|
||||||
|
@ -176,6 +148,69 @@ int CmdReadBlk(const char *Cmd)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
FSK1 / FSK1a
|
||||||
|
size = fskdemod(dest, size, 32, 0, 8, 10); // fsk1 RF/32
|
||||||
|
size = fskdemod(dest, size, 32, 1, 8, 10); // fsk1a RF/32
|
||||||
|
|
||||||
|
FSK2 / FSK2a
|
||||||
|
size = fskdemod(dest, size, 32, 0, 10, 8); // fsk2 RF/32
|
||||||
|
size = fskdemod(dest, size, 32, 1, 10, 8); // fsk2a RF/32
|
||||||
|
size = fskdemod(dest, size, 50, 1, 10, 8); // fsk2a RF/50
|
||||||
|
size = fskdemod(dest, size, 64, 1, 10, 8); // FSK2a RF/64
|
||||||
|
|
||||||
|
PSK1
|
||||||
|
errCnt = pskRawDemod(bits, &bitlen, 32, 0);
|
||||||
|
*/
|
||||||
|
bool tryDemod(uint8_t bits[], size_t bitlen) {
|
||||||
|
|
||||||
|
int invert = 0;
|
||||||
|
int clk = 0;
|
||||||
|
int errCnt, size;
|
||||||
|
int maxErr = 100;
|
||||||
|
uint8_t rflen, fchigh, fclow, dummy = 0;
|
||||||
|
uint16_t fcs=0;
|
||||||
|
|
||||||
|
// ASK - manchester demod
|
||||||
|
errCnt = askmandemod(bits, &bitlen, &clk, &invert, maxErr);
|
||||||
|
if ( analyseDemod(errCnt, bitlen, clk, invert) )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// FSK demod
|
||||||
|
fcs = countFC(bits, bitlen, &dummy);
|
||||||
|
if (fcs == 0){
|
||||||
|
fchigh = 10;
|
||||||
|
fclow = 8;
|
||||||
|
}else{
|
||||||
|
fchigh = (fcs >> 8) & 0xFF;
|
||||||
|
fclow = fcs & 0xFF;
|
||||||
|
}
|
||||||
|
//get bit clock length
|
||||||
|
rflen = detectFSKClk(bits, bitlen, fchigh, fclow);
|
||||||
|
rflen = (rflen == 0) ? 50 : rflen;
|
||||||
|
|
||||||
|
size = fskdemod(bits, bitlen, rflen, invert, fchigh, fclow);
|
||||||
|
if ( analyseDemod(size, bitlen, clk, invert) )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// PSK demod
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool analyseDemod( int errCnt, size_t bitlen, uint8_t clock, uint8_t invert){
|
||||||
|
if (g_debugMode)
|
||||||
|
PrintAndLog("ErrorCount: %d, Bits Found: %d, Clock: %d, invert: %d", errCnt, bitlen, clock, invert);
|
||||||
|
//PrintAndLog("Args invert: %d - Clock:%d - fchigh:%d - fclow: %d",invert,rfLen,fchigh, fclow);
|
||||||
|
|
||||||
|
//throw away static - allow 1 and -1 (in case of threshold command first)
|
||||||
|
if ( errCnt == -1 || bitlen < 32 ){
|
||||||
|
PrintAndLog("no success demod");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
int CmdWriteBlk(const char *Cmd)
|
int CmdWriteBlk(const char *Cmd)
|
||||||
{
|
{
|
||||||
int block = 8; //default to invalid block
|
int block = 8; //default to invalid block
|
||||||
|
|
|
@ -13,9 +13,7 @@
|
||||||
int CmdLFT55XX(const char *Cmd);
|
int CmdLFT55XX(const char *Cmd);
|
||||||
|
|
||||||
int CmdReadBlk(const char *Cmd);
|
int CmdReadBlk(const char *Cmd);
|
||||||
int CmdReadBlkPWD(const char *Cmd);
|
|
||||||
int CmdWriteBlk(const char *Cmd);
|
int CmdWriteBlk(const char *Cmd);
|
||||||
int CmdWriteBLkPWD(const char *Cmd);
|
|
||||||
int CmdReadTrace(const char *Cmd);
|
int CmdReadTrace(const char *Cmd);
|
||||||
int CmdInfo(const char *Cmd);
|
int CmdInfo(const char *Cmd);
|
||||||
int CmdIceFsk(const char *Cmd);
|
int CmdIceFsk(const char *Cmd);
|
||||||
|
@ -25,4 +23,6 @@ char * GetBitRateStr(uint32_t id);
|
||||||
char * GetSaferStr(uint32_t id);
|
char * GetSaferStr(uint32_t id);
|
||||||
char * GetModulationStr( uint32_t id);
|
char * GetModulationStr( uint32_t id);
|
||||||
uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bitstream);
|
uint32_t PackBits(uint8_t start, uint8_t len, uint8_t* bitstream);
|
||||||
|
bool tryDemod(uint8_t bits[], uint32_t bitlen);
|
||||||
|
bool analyseDemod( int errCnt, size_t bitlen, uint8_t clock, uint8_t invert);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue