From 219a334de5f6af339e6d9a9ca0ea215c4565e778 Mon Sep 17 00:00:00 2001 From: "thijsbreman@gmail.com" Date: Thu, 18 Oct 2012 10:01:13 +0000 Subject: [PATCH] added: readed blocks (password mode) into tag.sectors[]. 'lf hitag sim' simulates the readed blocks. --- armsrc/hitag2.c | 28 +++++++++++++++++++--------- client/cmdlfhitag.c | 2 +- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/armsrc/hitag2.c b/armsrc/hitag2.c index 59f29eae..37eb211c 100644 --- a/armsrc/hitag2.c +++ b/armsrc/hitag2.c @@ -477,16 +477,26 @@ bool hitag2_password(byte_t* rx, const size_t rxlen, byte_t* tx, size_t* txlen) *txlen = 32; memcpy(tx,password,4); bPwd = true; + memcpy(tag.sectors[blocknr],rx,4); + blocknr++; } else { - if (blocknr > 7) { - DbpString("Read succesful!"); - // We are done... for now - return false; - } - *txlen = 10; - tx[0] = 0xc0 | (blocknr << 3) | ((blocknr^7) >> 2); - tx[1] = ((blocknr^7) << 6); - blocknr++; + + if(blocknr == 1){ + //store password in block1, the TAG answers with Block3, but we need the password in memory + memcpy(tag.sectors[blocknr],tx,4); + }else{ + memcpy(tag.sectors[blocknr],rx,4); + } + + blocknr++; + if (blocknr > 7) { + DbpString("Read succesful!"); + // We are done... for now + return false; + } + *txlen = 10; + tx[0] = 0xc0 | (blocknr << 3) | ((blocknr^7) >> 2); + tx[1] = ((blocknr^7) << 6); } } break; diff --git a/client/cmdlfhitag.c b/client/cmdlfhitag.c index bdabe5e4..c852544c 100644 --- a/client/cmdlfhitag.c +++ b/client/cmdlfhitag.c @@ -199,7 +199,7 @@ int CmdLFHitagReader(const char *Cmd) { PrintAndLog(" Hitag2 (2*)",htf); PrintAndLog(" 21 (password mode)",htf); PrintAndLog(" 22 (authentication)",htf); - PrintAndLog(" 23 (authentication)",htf); + PrintAndLog(" 23 (authentication) key is in format: ISK high + ISK low",htf); PrintAndLog(" 25 (test recorded authentications)",htf); return 1; } break; -- 2.39.2