ADD: hf 14a read - now can detect the newer magic generation 1b. In output 1A (old version, where all hf mf c* commands works) 1B is the newer.

This commit is contained in:
iceman1001 2017-02-27 19:18:38 +01:00
parent 41611deef9
commit 8db18d2f15
2 changed files with 18 additions and 13 deletions

View file

@ -1358,25 +1358,29 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain){
}
void MifareCIdent(){
#define GEN_1A 1
#define GEN_1B 2
// variables
bool isOK = true;
uint8_t isGen = 0;
uint8_t receivedAnswer[1] = {0x00};
uint8_t receivedAnswerPar[1] = {0x00};
ReaderTransmitBitsPar(wupC1, 7, NULL, NULL);
if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) {
isOK = false;
goto OUT;
}
isGen |= GEN_1B;
ReaderTransmit(wupC2, sizeof(wupC2), NULL);
if(!ReaderReceive(receivedAnswer, receivedAnswerPar) || (receivedAnswer[0] != 0x0a)) {
isOK = false;
}
goto OUT;
}
isGen = GEN_1A;
OUT:
// removed the if, since some magic tags misbehavies and send an answer to it.
mifare_classic_halt(NULL, 0);
cmd_send(CMD_ACK,isOK,0,0,0,0);
cmd_send(CMD_ACK,isGen, 0, 0, 0, 0);
}
void OnSuccessMagic(){

View file

@ -390,21 +390,22 @@ int CmdHF14AReader(const char *Cmd) {
// try to see if card responses to "chinese magic backdoor" commands.
uint8_t isOK = 0;
uint8_t isGeneration = 0;
clearCommandBuffer();
c.cmd = CMD_MIFARE_CIDENT;
c.arg[0] = 0;
c.arg[1] = 0;
c.arg[2] = 0;
SendCommand(&c);
if (WaitForResponseTimeout(CMD_ACK, &resp, 1500))
isOK = resp.arg[0] & 0xff;
if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) {
isGeneration = resp.arg[0] & 0xff;
}
if ( isGeneration )
PrintAndLog("Answers to magic commands (GEN %s): YES", ((isGeneration & 0x2 )==2)?"1B":"1A");
PrintAndLog("Answers to magic commands (GEN1): %s", (isOK ? "YES" : "NO") );
// disconnect
SendCommand(&cDisconnect);
return select_status;
}