mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 22:03:42 -07:00
CHG: "hf 14 sim t 7" ie NTAG simulation, now reads the emulator memory for read commands. this means you need to load the emulatormemory before... if you want it answer more correct..
This commit is contained in:
parent
36f84d4748
commit
5e42846302
1 changed files with 17 additions and 16 deletions
|
@ -949,9 +949,6 @@ void SimulateIso14443aTag(int tagType, int flags, int uid_2nd, byte_t* data)
|
||||||
|
|
||||||
uint8_t sak;
|
uint8_t sak;
|
||||||
|
|
||||||
uint8_t blockzeros[512];
|
|
||||||
memset(blockzeros, 0x00, sizeof(blockzeros));
|
|
||||||
|
|
||||||
// PACK response to PWD AUTH for EV1/NTAG
|
// PACK response to PWD AUTH for EV1/NTAG
|
||||||
uint8_t response8[4];
|
uint8_t response8[4];
|
||||||
|
|
||||||
|
@ -1157,11 +1154,10 @@ void SimulateIso14443aTag(int tagType, int flags, int uid_2nd, byte_t* data)
|
||||||
} else if(receivedCmd[0] == 0x30) { // Received a (plain) READ
|
} else if(receivedCmd[0] == 0x30) { // Received a (plain) READ
|
||||||
uint8_t block = receivedCmd[1];
|
uint8_t block = receivedCmd[1];
|
||||||
if ( tagType == 7 ) {
|
if ( tagType == 7 ) {
|
||||||
|
uint8_t start = 4 * block;
|
||||||
|
|
||||||
if ( block < 4 ) {
|
if ( block < 4 ) {
|
||||||
//NTAG 215
|
//NTAG 215
|
||||||
uint8_t start = 4 * block;
|
|
||||||
|
|
||||||
uint8_t blockdata[50] = {
|
uint8_t blockdata[50] = {
|
||||||
data[0],data[1],data[2], 0x88 ^ data[0] ^ data[1] ^ data[2],
|
data[0],data[1],data[2], 0x88 ^ data[0] ^ data[1] ^ data[2],
|
||||||
data[3],data[4],data[5],data[6],
|
data[3],data[4],data[5],data[6],
|
||||||
|
@ -1173,11 +1169,12 @@ void SimulateIso14443aTag(int tagType, int flags, int uid_2nd, byte_t* data)
|
||||||
0x00,0x00,0x00,0x00,
|
0x00,0x00,0x00,0x00,
|
||||||
0x00,0x00};
|
0x00,0x00};
|
||||||
AppendCrc14443a(blockdata+start, 16);
|
AppendCrc14443a(blockdata+start, 16);
|
||||||
|
EmSendCmdEx( blockdata+start, MAX_MIFARE_FRAME_SIZE, false);
|
||||||
EmSendCmdEx( blockdata+start, 18, false);
|
|
||||||
} else {
|
} else {
|
||||||
AppendCrc14443a(blockzeros, 16);
|
uint8_t emdata[MAX_MIFARE_FRAME_SIZE];
|
||||||
EmSendCmdEx(blockzeros,18,false);
|
emlGetMemBt( emdata, start, 16);
|
||||||
|
AppendCrc14443a(emdata, 16);
|
||||||
|
EmSendCmdEx(emdata, sizeof(emdata), false);
|
||||||
}
|
}
|
||||||
p_response = NULL;
|
p_response = NULL;
|
||||||
|
|
||||||
|
@ -1188,10 +1185,15 @@ void SimulateIso14443aTag(int tagType, int flags, int uid_2nd, byte_t* data)
|
||||||
p_response = NULL;
|
p_response = NULL;
|
||||||
}
|
}
|
||||||
} else if(receivedCmd[0] == 0x3A) { // Received a FAST READ (ranged read) -- just returns all zeros.
|
} else if(receivedCmd[0] == 0x3A) { // Received a FAST READ (ranged read) -- just returns all zeros.
|
||||||
uint8_t len = (receivedCmd[2] - receivedCmd[1] ) * 4;
|
|
||||||
AppendCrc14443a(blockzeros,len);
|
uint8_t emdata[MAX_FRAME_SIZE];
|
||||||
EmSendCmdEx(blockzeros,len+2,false);
|
int start = receivedCmd[1] * 4;
|
||||||
|
int len = (receivedCmd[2] - receivedCmd[1]) * 4;
|
||||||
|
emlGetMemBt( emdata, start, len);
|
||||||
|
AppendCrc14443a(emdata, len);
|
||||||
|
EmSendCmdEx(emdata, len+2, false);
|
||||||
p_response = NULL;
|
p_response = NULL;
|
||||||
|
|
||||||
} else if(receivedCmd[0] == 0x3C && tagType == 7) { // Received a READ SIGNATURE --
|
} else if(receivedCmd[0] == 0x3C && tagType == 7) { // Received a READ SIGNATURE --
|
||||||
// ECC data, taken from a NTAG215 amiibo token. might work. LEN: 32, + 2 crc
|
// ECC data, taken from a NTAG215 amiibo token. might work. LEN: 32, + 2 crc
|
||||||
uint8_t data[] = {0x56,0x06,0xa6,0x4f,0x43,0x32,0x53,0x6f,
|
uint8_t data[] = {0x56,0x06,0xa6,0x4f,0x43,0x32,0x53,0x6f,
|
||||||
|
@ -1199,12 +1201,11 @@ void SimulateIso14443aTag(int tagType, int flags, int uid_2nd, byte_t* data)
|
||||||
0xcf,0xd3,0x61,0x36,0xca,0x5f,0xbb,0x05,
|
0xcf,0xd3,0x61,0x36,0xca,0x5f,0xbb,0x05,
|
||||||
0xce,0x21,0x24,0x5b,0xa6,0x7a,0x79,0x07,
|
0xce,0x21,0x24,0x5b,0xa6,0x7a,0x79,0x07,
|
||||||
0x00,0x00};
|
0x00,0x00};
|
||||||
AppendCrc14443a(data, sizeof(data));
|
AppendCrc14443a(data, sizeof(data)-2);
|
||||||
EmSendCmdEx(data,sizeof(data),false);
|
EmSendCmdEx(data,sizeof(data),false);
|
||||||
p_response = NULL;
|
p_response = NULL;
|
||||||
} else if(receivedCmd[0] == 0x39 && tagType == 7) { // Received a READ COUNTER --
|
} else if(receivedCmd[0] == 0x39 && tagType == 7) { // Received a READ COUNTER --
|
||||||
uint8_t data[] = {0x00,0x00,0x00,0x14,0xa5};
|
uint8_t data[] = {0x00,0x00,0x00,0x14,0xa5};
|
||||||
//AppendCrc14443a(data, sizeof(data));
|
|
||||||
EmSendCmdEx(data,sizeof(data),false);
|
EmSendCmdEx(data,sizeof(data),false);
|
||||||
p_response = NULL;
|
p_response = NULL;
|
||||||
} else if(receivedCmd[0] == 0x3E && tagType == 7) { // Received a CHECK_TEARING_EVENT --
|
} else if(receivedCmd[0] == 0x3E && tagType == 7) { // Received a CHECK_TEARING_EVENT --
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue