+ uint8_t uid[8];\r
+ uint8_t memBlock[16];\r
+ uint8_t blockNo = 0;\r
+ int res;\r
+ memset(memBlock, 0x00, sizeof(memBlock));\r
+\r
+ if (strlen(Cmd) < 1 || param_getchar(Cmd, 0) == 'h') {\r
+ PrintAndLog("Usage: hf mf csetblk <block number> <block data (32 hex symbols)>");\r
+ PrintAndLog("sample: hf mf csetblk 1 01020304050607080910111213141516");\r
+ PrintAndLog("Set block data for magic Chinese card (only works with!!!)");\r
+ PrintAndLog("If you want wipe card then add 'w' into command line. \n");\r
+ return 0;\r
+ } \r
+\r
+ blockNo = param_get8(Cmd, 0);\r
+ if (blockNo >= 32 * 4 + 8 * 16) {\r
+ PrintAndLog("Block number must be in [0..255] as in MIFARE classic.");\r
+ return 1;\r
+ }\r
+\r
+ if (param_gethex(Cmd, 1, memBlock, 32)) {\r
+ PrintAndLog("block data must include 32 HEX symbols");\r
+ return 1;\r
+ }\r
+\r
+ PrintAndLog("--block number:%02x data:%s", blockNo, sprint_hex(memBlock, 16));\r
+\r
+ res = mfCSetBlock(blockNo, memBlock, uid, 0);\r
+ if (res) {\r
+ PrintAndLog("Can't write block. error=%d", res);\r
+ return 1;\r
+ }\r
+ \r
+ PrintAndLog("UID:%s", sprint_hex(uid, 4));\r