-int mfCSetUID(uint8_t *uid, uint8_t *oldUID, int wantWipe) {\r
- uint8_t block0[16];\r
- memset(block0, 0, 16);\r
+int mfCSetUID(uint8_t *uid, uint8_t *atqa, uint8_t *sak, uint8_t *oldUID, bool wantWipe) {\r
+ uint8_t oldblock0[16] = {0x00};\r
+ uint8_t block0[16] = {0x00};\r
+\r
+ int old = mfCGetBlock(0, oldblock0, CSETBLOCK_SINGLE_OPER);\r
+ if (old == 0) {\r
+ memcpy(block0, oldblock0, 16);\r
+ PrintAndLog("old block 0: %s", sprint_hex(block0,16));\r
+ } else {\r
+ PrintAndLog("Couldn't get old data. Will write over the last bytes of Block 0.");\r
+ }\r
+\r
+ // fill in the new values\r
+ // UID\r