text
[RRG-proxmark3.git] / doc / magic_cards_notes.md
bloba5056d6fa77f409f1b2a3f87e1706e17508cc837
1 # Notes on Magic Cards, aka UID changeable
2 This document is based mostly on information posted on http://www.proxmark.org/forum/viewtopic.php?pid=35372#p35372
4 Useful docs:
5 * [AN10833 MIFARE Type Identification Procedure](https://www.nxp.com/docs/en/application-note/AN10833.pdf)
7 - [ISO14443A](#iso14443a)
8   * [Identifying broken ISO14443A magic](#identifying-broken-iso14443a-magic)
9 - [MIFARE Classic](#mifare-classic)
10   * [MIFARE Classic block0](#mifare-classic-block0)
11   * [MIFARE Classic Gen1A aka UID](#mifare-classic-gen1a-aka-uid)
12   * [MIFARE Classic Gen1B](#mifare-classic-gen1b)
13   * [MIFARE Classic DirectWrite aka Gen2 aka CUID](#mifare-classic-directwrite-aka-gen2-aka-cuid)
14   * [MIFARE Classic DirectWrite, FUID version aka 1-write](#mifare-classic-directwrite-fuid-version-aka-1-write)
15   * [MIFARE Classic DirectWrite, UFUID version](#mifare-classic-directwrite-ufuid-version)
16   * [MIFARE Classic, other versions](#mifare-classic-other-versions)
17   * [MIFARE Classic APDU aka Gen3](#mifare-classic-apdu-aka-gen3)
18   * [MIFARE Classic Super](#mifare-classic-super)
19 - [MIFARE Ultralight](#mifare-ultralight)
20   * [MIFARE Ultralight blocks 0..2](#mifare-ultralight-blocks-02)
21   * [MIFARE Ultralight Gen1A](#mifare-ultralight-gen1a)
22   * [MIFARE Ultralight DirectWrite](#mifare-ultralight-directwrite)
23   * [MIFARE Ultralight EV1 DirectWrite](#mifare-ultralight-ev1-directwrite)
24   * [MIFARE Ultralight C Gen1A](#mifare-ultralight-c-gen1a)
25   * [MIFARE Ultralight C DirectWrite](#mifare-ultralight-c-directwrite)
26 - [NTAG](#ntag)
27   * [NTAG213 DirectWrite](#ntag213-directwrite)
28   * [NTAG21x](#ntag21x)
29 - [DESFire](#desfire)
30   * ["DESFire" APDU, 7b UID](#desfire-apdu-7b-uid)
31   * ["DESFire" APDU, 4b UID](#desfire-apdu-4b-uid)
32 - [ISO14443B](#iso14443b)
33   * [ISO14443B magic](#iso14443b-magic)
34 - [ISO15693](#iso15693)
35   * [ISO15693 magic](#iso15693-magic)
38 # ISO14443A
40 ## Identifying broken ISO14443A magic
42 When a magic card configuration is really messed up and the card is not labeled, it may be hard to find out which type of card it is.
44 Here are some tips if the card doesn't react or gives error on a simple `hf 14a reader`:
46 Let's force a 4b UID anticollision and see what happens:
47 ```
48 hf 14a config --atqa force --bcc ignore --cl2 skip --rats skip
49 hf 14a reader
50 ```
51 It it responds, we know it's a TypeA card. But maybe it's a 7b UID, so let's force a 7b UID anticollision:
52 ```
53 hf 14a config --atqa force --bcc ignore --cl2 force --cl3 skip --rats skip
54 hf 14a reader
55 ```
56 At this stage, you know if it's a TypeA 4b or 7b card and you can check further on this page how to reconfigure different types of cards.
58 To restore anticollision config of the Proxmark3:
60 ```
61 hf 14a config --std
62 ```
63 # MIFARE Classic
65 Referred as M1, S50 (1k), S70 (4k)
67 ## MIFARE Classic block0
69 UID 4b: (actually NUID as there are no more "unique" IDs on 4b)
71 ```
72 11223344440804006263646566676869
73 ^^^^^^^^                         UID
74         ^^                       BCC
75           ^^                     SAK(*)
76             ^^^^                 ATQA
77                 ^^^^^^^^^^^^^^^^ Manufacturer data
78 (*) some cards have a different SAK in their anticollision and in block0: +0x80 in the block0 (e.g. 08->88, 18->98)
79 ```
82 Computing BCC on UID 11223344: `hf analyse lcr -d 11223344` = `44`
84 UID 7b:
86 ```
87 04112233445566884400c82000000000
88 ^^                               Manufacturer byte
89 ^^^^^^^^^^^^^^                   UID
90               ^^                 SAK(*)
91                 ^^^^             ATQA
92                     ^^^^^^^^^^^^ Manufacturer data
93 (*) all? cards have a different SAK in their anticollision and in block0: +0x80 in the block0 (e.g. 08->88, 18->98)
94 ```
96 ## MIFARE Classic Gen1A aka UID
98 ### Identify
101 hf 14a info
103 [+] Magic capabilities : Gen 1a
106 ### Magic commands
108 * Wipe: `40(7)`, `41` (use 2000ms timeout)
109 * Read: `40(7)`, `43`, `30xx`+crc
110 * Write: `40(7)`, `43`, `A0xx`+crc, `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`+crc
112 ### Characteristics
114 * UID: Only 4b versions
115 * ATQA:
116   * all cards play blindly the block0 ATQA bytes, beware!
117 * SAK:
118   * some cards play blindly the block0 SAK byte, beware!
119   * some cards use a fix "08" in anticollision, no matter the block0
120   * some cards use a fix "08" in anticollision, unless SAK in block0 has most significant bit "80" set, in which case SAK="88"
121 * BCC:
122   * all cards play blindly the block0 BCC byte, beware!
123 * ATS:
124   * no card with ATS
126 #### MIFARE Classic Gen1A flavour 1
128 * SAK: play blindly the block0 SAK byte, beware!
129 * PRNG: static 01200145
130 * Wipe: filled with 0xFF
132 #### MIFARE Classic Gen1A flavour 2
134 * SAK: play blindly the block0 SAK byte, beware!
135 * PRNG: static 01200145
136 * Wipe: filled with 0x00
138 #### MIFARE Classic Gen1A flavour 3
140 * SAK: 08
141 * PRNG: static 01200145
142 * Wipe: filled with 0xFF
144 #### MIFARE Classic Gen1A flavour 4
146 * SAK: 08
147 * PRNG: weak
148 * Wipe: timeout, no wipe
150 #### MIFARE Classic Gen1A flavour 5
152 * SAK: 08
153 * PRNG: weak
154 * Wipe: reply ok but no wipe performed
156 #### MIFARE Classic Gen1A flavour 6
158 * SAK: 08 or 88 if block0_SAK most significant bit is set
159 * PRNG: weak
160 * Wipe: timeout, no wipe
162 #### MIFARE Classic Gen1A flavour 7
164 * SAK: 08 or 88 if block0_SAK most significant bit is set
165 * PRNG: weak
166 * Wipe: filled with 0x00
168 ### Proxmark3 commands
171 hf mf csetuid
172 hf mf cwipe
173 hf mf csetblk
174 hf mf cgetblk
175 hf mf cgetsc
176 hf mf cload 
177 hf mf csave
178 hf mf cview
181 When "soft-bricked" (by writing invalid data in block0), these ones may help:
184 # MFC Gen1A 1k:
185 hf mf cwipe -u 11223344 -a 0004 -s 08
186 # MFC Gen1A 4k:
187 hf mf cwipe -u 11223344 -a 0044 -s 18
189 or just fixing block0:
191 # MFC Gen1A 1k:
192 hf mf csetuid -u 11223344 -a 0004 -s 08
193 # MFC Gen1A 4k:
194 hf mf csetuid -u 11223344 -a 0044 -s 18
198 script run hf_mf_magicrevive
201 To execute commands manually:
203 hf 14a raw -a -k -b 7       40
204 hf 14a raw    -k            43
205 hf 14a raw    -k -c         A000
206 hf 14a raw       -c -t 1000 11223344440804006263646566676869
208 wipe:
210 hf 14a raw -a -k -b 7       40
211 hf 14a raw -t 1000          41
214 ### libnfc commands
217 nfc-mfsetuid
218 nfc-mfclassic R a u mydump
219 nfc-mfclassic W a u mydump
222 ## MIFARE Classic Gen1B
224 Similar to Gen1A, but supports directly read/write after command 40
226 ### Identify
229 hf 14a info
231 [+] Magic capabilities : Gen 1b
234 ### Magic commands
236 * Read: `40(7)`, `30xx`
237 * Write: `40(7)`, `A0xx`+crc, `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`+crc
239 ## MIFARE Classic DirectWrite aka Gen2 aka CUID
241 (also referred as MCT compatible by some sellers)
243 ### Identify
246 hf 14a info
248 [+] Magic capabilities : Gen 2 / CUID
251 Not all Gen2 cards can be identified with `hf 14a info`, only those replying to RATS.
253 To identify the other ones, you've to try to write to block0 and see if it works...
255 ### Magic commands
257 Android compatible
259 * issue regular write to block0
261 ### Characteristics
263 * UID: 4b and 7b versions
264 * ATQA:
265   * some cards play blindly the block0 ATQA bytes, beware!
266   * some cards use a fix ATQA in anticollision, no matter the block0. Including all 7b.
267 * SAK:
268   * some cards play blindly the block0 SAK byte, beware!
269   * some cards use a fix "08" or "18" in anticollision, no matter the block0. Including all 7b.
270 * BCC:
271   * some cards play blindly the block0 BCC byte, beware!
272   * some cards compute a proper BCC in anticollision. Including all 7b computing their BCC0 and BCC1.
273 * ATS:
274   * some cards don't reply to RATS
275   * some reply with an ATS
277 #### MIFARE Classic DirectWrite flavour 1
279 * UID 4b
280 * ATQA: play blindly the block0 ATQA bytes, beware!
281 * SAK: play blindly the block0 SAK byte, beware!
282 * BCC: play blindly the block0 BCC byte, beware!
283 * ATS: no
284 * PRNG: weak
286 #### MIFARE Classic DirectWrite flavour 2
288 * UID 4b
289 * ATQA: fixed
290 * SAK: fixed
291 * BCC: computed
292 * ATS: 0978009102DABC1910F005
293 * PRNG: weak
295 #### MIFARE Classic DirectWrite flavour 3
297 * UID 4b
298 * ATQA: play blindly the block0 ATQA bytes, beware!
299 * SAK: fixed
300 * BCC: play blindly the block0 BCC byte, beware!
301 * ATS: no
302 * PRNG: weak
304 #### MIFARE Classic DirectWrite flavour 4
306 * UID 7b
307 * ATQA: fixed
308 * SAK: fixed
309 * BCC: computed
310 * ATS: 0978009102DABC1910F005
311 * PRNG: static 00000000
313 #### MIFARE Classic DirectWrite flavour 5
315 * UID 4b
316 * ATQA: fixed
317 * SAK: play blindly the block0 SAK byte, beware!
318 * BCC: computed
319 * ATS: no
320 * PRNG: weak
322 #### MIFARE Classic DirectWrite flavour 6
324 **TODO** need more info
326 * UID 7b
327 * ATS: 0D780071028849A13020150608563D
329 ### Proxmark3 commands
332 hf mf wrbl --blk 0 -k FFFFFFFFFFFF -d 11223344440804006263646566676869
334 hf mf wipe --gen2
337 When "soft-bricked" (by writing invalid data in block0), these ones may help:
340 hf 14a config -h
343 e.g. for 4b UID:
346 hf 14a config --atqa force --bcc ignore --cl2 skip --rats skip
347 hf mf wrbl --blk 0 -k FFFFFFFFFFFF -k 11223344440804006263646566676869 # for 1k
348 hf mf wrbl --blk 0 -k FFFFFFFFFFFF -k 11223344441802006263646566676869 # for 4k
349 hf 14a config --std
350 hf 14a reader
353 e.g. for 7b UID:
356 hf 14a config --atqa force --bcc ignore --cl2 force --cl3 skip --rats skip
357 hf mf wrbl --blk 0 -k FFFFFFFFFFFF -k 04112233445566084400626364656667 # for 1k
358 hf mf wrbl --blk 0 -k FFFFFFFFFFFF -k 04112233445566184200626364656667 # for 4k
359 hf 14a config --std
360 hf 14a reader
362 ## MIFARE Classic DirectWrite, FUID version aka 1-write
364 Same as MIFARE Classic DirectWrite, but block0 can be written only once.
366 Initial UID is AA55C396
368 ### Identify
370 Only possible before personalization.
373 hf 14a info
375 [+] Magic capabilities : Write Once / FUID
378 ## MIFARE Classic DirectWrite, UFUID version
380 Same as MIFARE Classic DirectWrite, but block0 can be locked with special command.
382 ### Identify
384 **TODO**
386 ### Proxmark3 commands
388 To lock definitively block0:
390 hf 14a raw -a -k -b 7 40
391 hf 14a raw    -k      43
392 hf 14a raw    -k -c   e000
393 hf 14a raw       -c   85000000000000000000000000000008
396 ## MIFARE Classic, other versions
398 **TODO**
400 * ZXUID, EUID, ICUID ?
401 * Some cards exhibit a specific SAK=28 ??
403 ## MIFARE Classic APDU aka Gen3
405 ### Identify
408 hf 14a info
410 [+] Magic capabilities : Gen 3 / APDU
413 ### Magic commands
415 Android compatible
417 * issue special APDUs
420 cla  ins p1  p2  len
421  90  F0  CC  CC  10 <block0>  - write block 0
422  90  FB  CC  CC  07 <uid>     - change uid (independently of block0 data)
423  90  FD  11  11  00           - lock permanently
425 It seems the length byte gets ignored anyway.
427 Note: it seems some cards only accept the "change UID" command.
429 It accepts direct read of block0 (and only block0) without prior auth.
431 Writing to block 0 has some side-effects:
433 * It changes also the UID. Changing the UID *does not* change block 0.
434 * ATQA and SAK bytes are automatically replaced by fixed values.
435 * On 4-byte UID cards, BCC byte is automatically corrected.
437 ### Characteristics
439 * UID: 4b and 7b versions
440 * ATQA/SAK: fixed
441 * BCC: auto
442 * ATS: none
444 ### Proxmark3 commands
447 # change just UID:
448 hf mf gen3uid
449 # write block0:
450 hf mf gen3blk
451 # lock (uid/block0?) forever:
452 hf mf gen3freeze
454 See also
456 script run hf_mf_gen3_writer -h
459 Equivalent:
461 # change just UID:
462 hf 14a raw -s -c  -t 2000  90FBCCCC07 11223344556677
463 # read block0:
464 hf 14a raw -s -c 3000
465 # write block0:
466 hf 14a raw -s -c  -t 2000  90F0CCCC10 041219c3219316984200e32000000000
467 # lock (uid/block0?) forever:
468 hf 14a raw -s -c 90FD111100
471 ## MIFARE Classic Super
473 It behaves like DirectWrite but records reader auth attempts.
475 To change UID: same commands as for MFC DirectWrite
477 To do reader-only attack: at least two versions exist.
479 * type 1: https://github.com/nfc-tools/nfc-supercard for card with ATS: 0978009102DABC1910F005
480 * type 2: https://github.com/netscylla/super-card/blob/master/libnfc-1.7.1/utils/nfc-super.c for ??
482 ### Identify
484 Only type 1 at the moment:
487 hf 14a info
489 [+] Magic capabilities : super card
492 # MIFARE Ultralight
494 ## MIFARE Ultralight blocks 0..2
497 SN0  SN1  SN2  BCC0
498 SN3  SN4  SN5  SN6
499 BCC1 Int  LCK0 LCK1
502 UID is made of SN0..SN6 bytes
504 Computing BCC0 on UID 04112233445566: `analyse lcr -d 88041122` = `bf`
506 Computing BCC1 on UID 04112233445566: `analyse lcr -d 33445566` = `44`
508 Int is internal, typically 0x48
510 Anticol shortcut (CL1/3000) is supported for UL, ULC, NTAG except NTAG I2C
513 ## MIFARE Ultralight Gen1A
515 ### Identify
517 **TODO**
519 ### Characteristics
521 #### Magic commands
523 **TODO**
525 #### UID
527 Only 7b versions
529 #### SAK, ATQA, BCC, ATS
531 **TODO** need more tests
533 ### Proxmark3 commands
536 script run hf_mfu_setuid -h
539 When "soft-bricked" (by writing invalid data in block0), these ones may help:
542 hf 14a config -h
543 script run hf_mf_magicrevive -u
546 ## MIFARE Ultralight DirectWrite
548 ### Identify
551 hf 14a info
553 [+] Magic capabilities : Gen 2 / CUID
556 It seems so far that all MFUL DW have an ATS.
558 ### Magic commands
560 Issue three regular MFU write commands in a row to write first three blocks.
562 ### Characteristics
564 * UID: Only 7b versions
565 * ATQA:
566   * all cards play fix ATQA
567 * SAK:
568   * all cards play fix SAK
569 * BCC:
570   * some cards play blindly the block0 BCC0 and block2 BCC1 bytes, beware!
571   * some cards compute proper BCC0 and BCC1 in anticollision
572 * ATS:
573   * all cards reply with an ATS
575 #### MIFARE Ultralight DirectWrite flavour 1
577 * BCC: computed
578 * ATS: 0A78008102DBA0C119402AB5
579 * Anticol shortcut (CL1/3000): fails
581 #### MIFARE Ultralight DirectWrite flavour 2
583 * BCC: play blindly the block0 BCC0 and block2 BCC1 bytes, beware!
584 * ATS: 850000A00A000AB00000000000000000184D
585 * Anticol shortcut (CL1/3000): succeeds
587 ### Proxmark3 commands
590 hf mfu setuid -h
593 Equivalent: don't use `hf mfu wrbl` as you need to write three blocks in a row, but do, with proper BCCx:
596 hf 14a raw -s -c -k a2 00 041122bf 
597 hf 14a raw    -c -k a2 01 33445566
598 hf 14a raw    -c    a2 02 44480000
601 When "soft-bricked" (by writing invalid data in block0), these ones may help:
604 hf 14a config -h
607 E.g.:
609 hf 14a config --atqa force --bcc ignore --cl2 force --cl3 skip --rats skip
610 hf mfu setuid --uid 04112233445566
611 hf 14a config --std
612 hf 14a reader
615 ### libnfc commands
618 nfc-mfultralight -h
620 See `--uid` and `--full`
622 ### Android
624 * MIFARE++ Ultralight
626 ## MIFARE Ultralight EV1 DirectWrite
628 Similar to MFUL DirectWrite
630 ### Identify
633 hf 14a info
635 [+] Magic capabilities : Gen 2 / CUID
638 ### Characteristics
640 * UID: Only 7b versions
641 * ATQA:
642   * all cards play fix ATQA
643 * SAK:
644   * all cards play fix SAK
645 * BCC:
646   * cards play blindly the block0 BCC0 and block2 BCC1 bytes, beware!
647 * ATS:
648   * all cards reply with an ATS
650 #### MIFARE Ultralight EV1 DirectWrite flavour 1
652 * BCC: play blindly the block0 BCC0 and block2 BCC1 bytes, beware!
653 * ATS: 850000A000000AC30004030101000B0341DF
655 #### MIFARE Ultralight EV1 DirectWrite flavour 2
657 * BCC: play blindly the block0 BCC0 and block2 BCC1 bytes, beware!
658 * ATS: 850000A00A000AC30004030101000B0316D7
660 ## MIFARE Ultralight C Gen1A
662 Similar to MFUL Gen1A
664 ## MIFARE Ultralight C DirectWrite
666 Similar to MFUL DirectWrite
668 ### Identify
671 hf 14a info
673 [+] Magic capabilities : Gen 2 / CUID
676 ### Characteristics
678 * UID: Only 7b versions
679 * ATQA:
680   * all cards play fix ATQA
681 * SAK:
682   * all cards play fix SAK
683 * BCC:
684   * cards compute proper BCC0 and BCC1 in anticollision
685 * ATS:
686   * all cards reply with an ATS
688 #### MIFARE Ultralight C DirectWrite flavour 1
690 * BCC: computed
691 * ATS: 0A78008102DBA0C119402AB5
692 * Anticol shortcut (CL1/3000): fails
694 # NTAG
696 ## NTAG213 DirectWrite
698 Similar to MFUL DirectWrite
700 ### Identify
703 hf 14a info
705 [+] Magic capabilities : Gen 2 / CUID
708 ### Characteristics
710 * UID: Only 7b versions
711 * ATQA:
712   * all cards play fix ATQA
713 * SAK:
714   * all cards play fix SAK
715 * BCC:
716   * cards play blindly the block0 BCC0 and block2 BCC1 bytes, beware!
717 * ATS:
718   * all cards reply with an ATS
720 #### NTAG213 DirectWrite flavour 1
722 * BCC: play blindly the block0 BCC0 and block2 BCC1 bytes, beware!
723 * ATS: 0A78008102DBA0C119402AB5
724 * Anticol shortcut (CL1/3000): succeeds
726 ## NTAG21x
728 ### Identify
731 hf 14a info
733 [+] Magic capabilities : NTAG21x
736 ### Characteristics
738 Emulates fully NTAG213, 213F, 215, 216, 216F
740 Emulates partially  UL EV1 48k/128k, NTAG210, NTAG212, NTAGI2C 1K/2K, NTAGI2C 1K/2K PLUS
742 Anticol shortcut (CL1/3000): fails
744 ### Proxmark3 commands
747 script run hf_mfu_magicwrite -h
750 # DESFire
752 ## "DESFire" APDU, 7b UID
754 ### Identify
756 **TODO**
758 ### Magic commands
760 Android compatible
762 * issue special APDUs
764 ### Characteristics
766 * ATQA: 0344
767 * SAK: 20
768 * ATS: 0675338102005110 or 06757781028002F0
770 Only mimics DESFire anticollision (but wrong ATS), no further DESFire support
772 ### Proxmark commands
774 UID 04112233445566
776 hf 14a raw -s -c 0200ab00000704112233445566
778 or equivalently
780 hf 14a apdu -s 00ab00000704112233445566
783 ### libnfc commands
786 pn53x-tamashell
787 4a0100
788 420200ab00000704112233445566
790 ## "DESFire" APDU, 4b UID
792 ### Magic commands
794 Android compatible
796 * issue special APDUs
798 ### Characteristics
800 * ATQA: 0008 ??? This is not DESFire, 0008/20 doesn't match anything
801 * SAK: 20
802 * ATS: 0675338102005110 or 06757781028002F0
804 Only mimics DESFire anticollision (but wrong ATS), no further DESFire support
806 ### Proxmark commands
808 UID 04112233445566
810 hf 14a raw -s -c 0200ab00000411223344
812 or equivalently
814 hf 14a apdu -s 00ab00000411223344
817 It accepts longer UID but that doesn't affect BCC/ATQA/SAK
819 ### pn53x-tamashell commands
821 4a0100
822 420200ab00000411223344
825 ### Remarks
827 The same effect (with better ATQA!) can be obtained with a MFC Gen1A that uses SAK defined in block0:
830 hf mf csetblk --blk 0 -d 1122334444204403A1A2A3A4A5A6A7A8
831 hf 14a info
832 [+]  UID: 11 22 33 44 
833 [+] ATQA: 03 44
834 [+]  SAK: 20 [1]
835 [+] Possible types:
836 [+]    MIFARE DESFire MF3ICD40
839 # ISO14443B
841 ## ISO14443B magic
843 No such card is available.
845 Some vendor allow to specify an ID (PUPI) when ordering a card.
847 # ISO15693
849 ## ISO15693 magic
851 ### Identify
853 **TODO**
855 ### Proxmark3 commands
857 Always set a UID starting with `E0`.
860 hf 15 csetuid E011223344556677
862 or (ignore errors):
864 script run hf_15_magic -u E004013344556677