Merge r486 from the libfreefare-desfire branch.
This commit is contained in:
parent
7a08464e14
commit
f425ae30c6
1 changed files with 5 additions and 16 deletions
|
@ -28,14 +28,6 @@
|
||||||
|
|
||||||
#define MIN(a,b) ((a < b) ? a: b)
|
#define MIN(a,b) ((a < b) ? a: b)
|
||||||
|
|
||||||
/*
|
|
||||||
* This define is used to convert ( SectorNumber, BlockOffset ) couple in
|
|
||||||
* BlockNumber
|
|
||||||
* e.g. If you want 4th block in sector 0x01 (trailer block of 0x01):
|
|
||||||
* BLOCK(0x01, 3) will return 0x07.
|
|
||||||
*/
|
|
||||||
#define BLOCK( S, B ) ( ( S < 32 )?( ( S * 4 ) + B ):( ( 32 * 4 ) + ( ( ( S - 32 ) * 16 ) + B ) ) )
|
|
||||||
|
|
||||||
MifareClassicKey default_keys[] = {
|
MifareClassicKey default_keys[] = {
|
||||||
{ 0xff,0xff,0xff,0xff,0xff,0xff },
|
{ 0xff,0xff,0xff,0xff,0xff,0xff },
|
||||||
{ 0xd3,0xf7,0xd3,0xf7,0xd3,0xf7 },
|
{ 0xd3,0xf7,0xd3,0xf7,0xd3,0xf7 },
|
||||||
|
@ -102,16 +94,11 @@ fix_mad_trailer_block (MifareTag tag, MifareClassicSectorNumber sector, MifareCl
|
||||||
{
|
{
|
||||||
MifareClassicBlock block;
|
MifareClassicBlock block;
|
||||||
mifare_classic_trailer_block (&block, mad_key_a, 0x0, 0x1, 0x1, 0x6, 0x00, default_keyb);
|
mifare_classic_trailer_block (&block, mad_key_a, 0x0, 0x1, 0x1, 0x6, 0x00, default_keyb);
|
||||||
if (mifare_classic_authenticate (tag, BLOCK( sector, 0 ), key, key_type) < 0) {
|
if (mifare_classic_authenticate (tag, mifare_classic_sector_last_block (sector), key, key_type) < 0) {
|
||||||
perror ("mifare_classic_authenticate");
|
perror ("fix_mad_trailer_block mifare_classic_authenticate");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
/*
|
if (mifare_classic_write (tag, mifare_classic_sector_last_block (sector), block) < 0) {
|
||||||
* WARN: Using BLOCK( sector, 3 ) selects trailer block only for sector <
|
|
||||||
* 32. In actual case, this is not a problem: we only call this function
|
|
||||||
* for sector 0x00 (0) and 0x10 (16).
|
|
||||||
*/
|
|
||||||
if (mifare_classic_write (tag, BLOCK( sector, 3 ), block) < 0) {
|
|
||||||
perror ("mifare_classic_write");
|
perror ("mifare_classic_write");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -165,6 +152,7 @@ main(int argc, char *argv[])
|
||||||
error = 1;
|
error = 1;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
/* fallthrough */
|
||||||
case CLASSIC_1K:
|
case CLASSIC_1K:
|
||||||
if (!search_sector_key (tags[i], 0x00, &key_00, &key_00_type)) {
|
if (!search_sector_key (tags[i], 0x00, &key_00, &key_00_type)) {
|
||||||
error = 1;
|
error = 1;
|
||||||
|
@ -193,6 +181,7 @@ main(int argc, char *argv[])
|
||||||
memcpy (&key_10, &default_keyb, sizeof (MifareClassicKey));
|
memcpy (&key_10, &default_keyb, sizeof (MifareClassicKey));
|
||||||
key_10_type = MFC_KEY_B;
|
key_10_type = MFC_KEY_B;
|
||||||
}
|
}
|
||||||
|
/* fallthrough */
|
||||||
case CLASSIC_1K:
|
case CLASSIC_1K:
|
||||||
if (key_00_type != MFC_KEY_B) {
|
if (key_00_type != MFC_KEY_B) {
|
||||||
if( 0 != fix_mad_trailer_block( tags[i], 0x00, key_00, key_00_type )) {
|
if( 0 != fix_mad_trailer_block( tags[i], 0x00, key_00, key_00_type )) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue