mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-12-30 20:23:46 +08:00
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:
parent
41611deef9
commit
8db18d2f15
2 changed files with 18 additions and 13 deletions
|
@ -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(){
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue