*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;
PrintAndLog(" Hitag2 (2*)",htf);
PrintAndLog(" 21 <password> (password mode)",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);
return 1;
} break;