added: readed blocks (password mode) into tag.sectors[]. 'lf hitag sim' simulates the readed blocks.

This commit is contained in:
thijsbreman@gmail.com 2012-10-18 10:01:13 +00:00
commit 219a334de5
2 changed files with 20 additions and 10 deletions

View file

@ -477,16 +477,26 @@ bool hitag2_password(byte_t* rx, const size_t rxlen, byte_t* tx, size_t* txlen)
*txlen = 32; *txlen = 32;
memcpy(tx,password,4); memcpy(tx,password,4);
bPwd = true; bPwd = true;
memcpy(tag.sectors[blocknr],rx,4);
blocknr++;
} else { } else {
if (blocknr > 7) {
DbpString("Read succesful!"); if(blocknr == 1){
// We are done... for now //store password in block1, the TAG answers with Block3, but we need the password in memory
return false; memcpy(tag.sectors[blocknr],tx,4);
} }else{
*txlen = 10; memcpy(tag.sectors[blocknr],rx,4);
tx[0] = 0xc0 | (blocknr << 3) | ((blocknr^7) >> 2); }
tx[1] = ((blocknr^7) << 6);
blocknr++; 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; } break;

View file

@ -199,7 +199,7 @@ int CmdLFHitagReader(const char *Cmd) {
PrintAndLog(" Hitag2 (2*)",htf); PrintAndLog(" Hitag2 (2*)",htf);
PrintAndLog(" 21 <password> (password mode)",htf); PrintAndLog(" 21 <password> (password mode)",htf);
PrintAndLog(" 22 <nr> <ar> (authentication)",htf); PrintAndLog(" 22 <nr> <ar> (authentication)",htf);
PrintAndLog(" 23 <key> (authentication)",htf); PrintAndLog(" 23 <key> (authentication) key is in format: ISK high + ISK low",htf);
PrintAndLog(" 25 (test recorded authentications)",htf); PrintAndLog(" 25 (test recorded authentications)",htf);
return 1; return 1;
} break; } break;