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
The current 1.7x libnfc includes support for these cards, so the patch is not necessary. But even then, original NXP Mifare Classic cards can't be cloned. While all sectors (including 0) are cloned ok, the clone still behaves differently compared to the original. For example, it reports an SAK of "08", while the clone reports "88" (because "88" is in sector 0). Any modern reader will be able to tell that the card is cloned, so don't bother.