libnfc supports UUID writable cards and even has some dedicated tools for them.
However it doesn't work with some of the cards found on eBay that are even simpler to use. Sector 0 is unlocked and can be written without any additional commands. libnfc requires a small patch to get it working.
Following has been tested under ArchLinux with modified libnfc 1.5.1, mfoc 0.10.2 and a SCL3711 dongle.
The patch is fairly simple, open libnfc-1.5.1/utils/nfc-mfclassic.c and comment 2 lines (it was lines 384 and 385 for me):
// Try to write the trailer
if (nfc_initiator_mifare_cmd (pnd, MC_WRITE, uiBlock, &mp) == false) {
printf ("failed to write trailer block %d \n", uiBlock);
bFailure = true;
}
} else {
// The first block 0x00 is read only, skip this
// COMMENT THIS if (uiBlock == 0 && ! write_block_zero)
// COMMENT THIS continue;
Recompile and install.
I manually have to remove the pn533 module in order to get libnfc to work. This needs to be done everytime you re-plug the SCL3711 dongle.
# sudo rmmod pn533
# nfc-list
nfc-list uses libnfc 1.5.1 (r1175)
Connected to NFC device: SCM Micro / SCL3711-NFC&RW - PN533 v2.7 (0x07)
1 ISO14443A passive target(s) found:
ATQA (SENS_RES): 00 04
UID (NFCID1): 00 00 00 00
SAK (SEL_RES): 08
# mfoc -P 500 -O blank-chinese.dmp
Now remove the chinese card and put the card you want to copy and dump it
# nfc-list
nfc-list uses libnfc 1.5.1 (r1175)
Connected to NFC device: SCM Micro / SCL3711-NFC&RW - PN533 v2.7 (0x07)
1 ISO14443A passive target(s) found:
ATQA (SENS_RES): 00 04
UID (NFCID1): 9b 97 4f 19
SAK (SEL_RES): 08
# mfoc -P 500 -O cardtocopy.dmp
Put the chinese card back and clone the card
# nfc-mfclassic w b cardtocopy.dmp blank-chinese.dmp
or
# nfc-mfclassic w a cardtocopy.dmp blank-chinese.dmp
# nfc-list
nfc-list uses libnfc 1.5.1 (r1175)
Connected to NFC device: SCM Micro / SCL3711-NFC&RW - PN533 v2.7 (0x07)
1 ISO14443A passive target(s) found:
ATQA (SENS_RES): 00 04
UID (NFCID1): 9b 97 4f 19
SAK (SEL_RES): 08
# nfc-mfclassic w b blank-chinese.dmp cardtocopy.dmp
or
# nfc-mfclassic w a blank-chinese.dmp cardtocopy.dmp
Cool, going to try this soon. You should try using a default unadjusted nfc-mfclassic too, with a capital W parameter it should attempt to write the UUID too. Haven't tested it with my SCL3711 yet.