mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2024-11-10 17:49:32 +08:00
Add auth comments
This commit is contained in:
parent
835a8a3b03
commit
5913ee670a
1 changed files with 10 additions and 2 deletions
|
@ -401,6 +401,7 @@ static bool hitag2_password(uint8_t *rx, const size_t rxlen, uint8_t *tx, size_t
|
|||
|
||||
// Received UID, tag password
|
||||
case 32: {
|
||||
// stage 1, got UID
|
||||
if (!bPwd) {
|
||||
bPwd = true;
|
||||
bAuthenticating = true;
|
||||
|
@ -408,6 +409,7 @@ static bool hitag2_password(uint8_t *rx, const size_t rxlen, uint8_t *tx, size_t
|
|||
*txlen = 32;
|
||||
}
|
||||
else {
|
||||
// stage 2, got config byte+password TAG, discard as will read later
|
||||
if (bAuthenticating) {
|
||||
bAuthenticating = false;
|
||||
if (write) {
|
||||
|
@ -417,6 +419,7 @@ static bool hitag2_password(uint8_t *rx, const size_t rxlen, uint8_t *tx, size_t
|
|||
break;
|
||||
}
|
||||
}
|
||||
// stage 2+, got data block
|
||||
else {
|
||||
memcpy(tag.sectors[blocknr], rx, 4);
|
||||
blocknr++;
|
||||
|
@ -496,19 +499,22 @@ static bool hitag2_crypto(uint8_t *rx, const size_t rxlen, uint8_t *tx, size_t *
|
|||
}
|
||||
// Received UID, crypto tag answer
|
||||
case 32: {
|
||||
// stage 1, got UID
|
||||
if (!bCrypto) {
|
||||
uint64_t ui64key = key[0] | ((uint64_t)key[1]) << 8 | ((uint64_t)key[2]) << 16 | ((uint64_t)key[3]) << 24 | ((uint64_t)key[4]) << 32 | ((uint64_t)key[5]) << 40;
|
||||
uint32_t ui32uid = rx[0] | ((uint32_t)rx[1]) << 8 | ((uint32_t)rx[2]) << 16 | ((uint32_t)rx[3]) << 24;
|
||||
Dbprintf("hitag2_crypto: key=0x%x%x uid=0x%x", (uint32_t)((REV64(ui64key)) >> 32), (uint32_t)((REV64(ui64key)) & 0xffffffff), REV32(ui32uid));
|
||||
cipher_state = _hitag2_init(REV64(ui64key), REV32(ui32uid), 0);
|
||||
// PRN
|
||||
memset(tx, 0x00, 4);
|
||||
// Secret data
|
||||
memset(tx + 4, 0xff, 4);
|
||||
hitag2_cipher_transcrypt(&cipher_state, tx + 4, 4, 0);
|
||||
*txlen = 64;
|
||||
bCrypto = true;
|
||||
bAuthenticating = true;
|
||||
} else {
|
||||
// Check if we received answer tag (at)
|
||||
// stage 2, got config byte+password TAG, discard as will read later
|
||||
if (bAuthenticating) {
|
||||
bAuthenticating = false;
|
||||
if (write) {
|
||||
|
@ -517,7 +523,9 @@ static bool hitag2_crypto(uint8_t *rx, const size_t rxlen, uint8_t *tx, size_t *
|
|||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
// stage 2+, got data block
|
||||
else {
|
||||
// Store the received block
|
||||
memcpy(tag.sectors[blocknr], rx, 4);
|
||||
blocknr++;
|
||||
|
|
Loading…
Reference in a new issue