mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-23 06:25:28 -07:00
hf mf csetuid with fill sectors works.
This commit is contained in:
parent
0a3e6a5448
commit
2c07d7265f
2 changed files with 12 additions and 7 deletions
|
@ -455,9 +455,9 @@ int mfCSetUID(uint8_t *uid, uint8_t *atqa, uint8_t *sak, uint8_t *oldUID, bool w
|
||||||
uint8_t oldblock0[16] = {0x00};
|
uint8_t oldblock0[16] = {0x00};
|
||||||
uint8_t block0[16] = {0x00};
|
uint8_t block0[16] = {0x00};
|
||||||
uint8_t block1[16] = {0x00};
|
uint8_t block1[16] = {0x00};
|
||||||
uint8_t blockK[16] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 77, 0x8F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
uint8_t blockK[16] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x77, 0x8F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
||||||
uint8_t blockt[16] = {0x00};
|
uint8_t blockt[16] = {0x00};
|
||||||
int old, gen = 0, res;
|
int gen = 0, res;
|
||||||
|
|
||||||
gen = mfCIdentify();
|
gen = mfCIdentify();
|
||||||
|
|
||||||
|
@ -468,9 +468,9 @@ int mfCSetUID(uint8_t *uid, uint8_t *atqa, uint8_t *sak, uint8_t *oldUID, bool w
|
||||||
cmdParams = CSETBLOCK_SINGLE_OPER | CSETBLOCK_MAGIC_1B;
|
cmdParams = CSETBLOCK_SINGLE_OPER | CSETBLOCK_MAGIC_1B;
|
||||||
}
|
}
|
||||||
|
|
||||||
old = mfCGetBlock(0, oldblock0, cmdParams);
|
res = mfCGetBlock(0, oldblock0, cmdParams);
|
||||||
|
|
||||||
if (old == 0) {
|
if (res == 0) {
|
||||||
memcpy(block0, oldblock0, 16);
|
memcpy(block0, oldblock0, 16);
|
||||||
PrintAndLog("old block 0: %s", sprint_hex(block0,16));
|
PrintAndLog("old block 0: %s", sprint_hex(block0,16));
|
||||||
} else {
|
} else {
|
||||||
|
@ -500,19 +500,24 @@ int mfCSetUID(uint8_t *uid, uint8_t *atqa, uint8_t *sak, uint8_t *oldUID, bool w
|
||||||
if (wantFill) {
|
if (wantFill) {
|
||||||
int blockNo = 1;
|
int blockNo = 1;
|
||||||
|
|
||||||
while (blockNo < 16) {
|
printf("write blocks ");
|
||||||
|
while (blockNo < 64) {
|
||||||
if ((blockNo + 1) % 4) {
|
if ((blockNo + 1) % 4) {
|
||||||
res = mfCSetBlock(blockNo, block1, blockt, false, cmdParams);
|
res = mfCSetBlock(blockNo, block1, blockt, false, cmdParams);
|
||||||
} else {
|
} else {
|
||||||
res = mfCSetBlock(blockNo, blockk, blockt, false, cmdParams);
|
res = mfCSetBlock(blockNo, blockK, blockt, false, cmdParams);
|
||||||
|
printf(".");
|
||||||
}
|
}
|
||||||
if (res) {
|
if (res) {
|
||||||
|
printf("\n");
|
||||||
PrintAndLog("Can't set block %d. Error: %s", blockNo, res);
|
PrintAndLog("Can't set block %d. Error: %s", blockNo, res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
blockNo++;
|
blockNo++;
|
||||||
}
|
}
|
||||||
|
printf("\n");
|
||||||
|
PrintAndLog("64 blocks writed successfully.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -33,7 +33,7 @@ extern int mfCheckKeys (uint8_t blockNo, uint8_t keyType, bool clear_trace, uint
|
||||||
extern int mfEmlGetMem(uint8_t *data, int blockNum, int blocksCount);
|
extern int mfEmlGetMem(uint8_t *data, int blockNum, int blocksCount);
|
||||||
extern int mfEmlSetMem(uint8_t *data, int blockNum, int blocksCount);
|
extern int mfEmlSetMem(uint8_t *data, int blockNum, int blocksCount);
|
||||||
|
|
||||||
extern int mfCSetUID(uint8_t *uid, uint8_t *atqa, uint8_t *sak, uint8_t *oldUID, bool wantWipe);
|
extern int mfCSetUID(uint8_t *uid, uint8_t *atqa, uint8_t *sak, uint8_t *oldUID, bool wantWipe, bool wantFill);
|
||||||
extern int mfCSetBlock(uint8_t blockNo, uint8_t *data, uint8_t *uid, bool wantWipe, uint8_t params);
|
extern int mfCSetBlock(uint8_t blockNo, uint8_t *data, uint8_t *uid, bool wantWipe, uint8_t params);
|
||||||
extern int mfCGetBlock(uint8_t blockNo, uint8_t *data, uint8_t params);
|
extern int mfCGetBlock(uint8_t blockNo, uint8_t *data, uint8_t params);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue