W tym poście chciałbym opisać w jaki sposób odczytać kartę Desfire EV1 za pomocą czytnika Proxmark3.
[Źródło: https://www.mifare.net/en/]
Podstawowe operacje na kartach już opisywałem we wcześniejszym poście. Tutaj dla przypomnienia:
Do odczytu danych wykorzystuje wersje oprogramowania:
iceman-32-20191107-a23414fe51fda58290fc6869b3c51bcf11088fc1
Dostępne, gotowe wersje oprogramowania można pobrać pod tym linkiem:
Nowsze wersje oferują więcej możliwości, niestety mam problem z wgraniem obrazu dla wersji 512:
Zablokowana część pamięci flash nie pozwala na wgranie obrazu w pełnej wersji. W celu odblokowania części pamięci należy zewrzeć ze sobą piny 54 i 55 mikrokontoroleta AT91SAM7S512 i podłączyć zasilanie do płytki. Wykonanie takiego zabiegu spowoduje odblokowanie pamięci flash oraz jej całkowite wyczyszczenie. Wobec tego po zwarciu jedyna możliwość wgrania oprogramowania jest interfejs JTAG. Niestety układ AT91 zastosowany w tym projekcie nie może zostać zaprogramowany za pomocą posiadanego przeze mnie Atmel ICE (chyba). Nie jest on też dostępny w układach w programem Atmel Studio 7 czy 6.2.
W Internecie można znaleźć sposób jak wykorzystać Raspberry Pi oraz biblioteki OpenOCD. Więc z braku lepszego hardwar'u pewnie spróbuję tym sposobem (link: https://github.com/r0b2g1t/Flash-Proxmark3-with-RPi).
Poniżej opis możliwości wersji 32 bitowej.
Sprawdzenie wersji sprzętowej czytnika Proxmark3:
- pm3 --> hw version
- hw version
- Proxmark3 RFID instrument
- [ CLIENT ]
- client: iceman build for RDV40 with flashmem; smartcard;
- [ ARM ]
- bootrom: iceman/master/ice_v3.1.0-980-gbacf8aff 2018-08-04 13:36:38
- os: iceman/master/ice_v3.1.0-980-gbacf8aff 2018-08-04 13:36:42
- [ FPGA ]
- LF image built for 2s30vq100 on 2017/10/25 at 19:50:50
- HF image built for 2s30vq100 on 2018/ 7/28 at 18:36:55
- [ Hardware ]
- --= uC: AT91SAM7S512 Rev B
- --= Embedded Processor: ARM7TDMI
- --= Nonvolatile Program Memory Size: 512K bytes, Used: 237459 bytes (45%) Free: 286829 bytes (55%)
- --= Second Nonvolatile Program Memory Size: None
- --= Internal SRAM Size: 64K bytes
- --= Architecture Identifier: AT91SAM7Sxx Series
- --= Nonvolatile Program Memory Type: Embedded Flash Memory
Sprawdzanie anten:
- pm3 --> hw tune
- hw tune
- [=] measuring antenna characteristics, please wait...
- ....
- [+] LF antenna: 26.77 V - 125.00 kHz
- [+] LF antenna: 33.85 V - 134.00 kHz
- [+] LF optimal: 35.41 V - 130.43 kHz
- [+] LF antenna is OK
- [+] HF antenna: 33.96 V - 13.56 MHz
- [+] HF antenna is OK
- [+] Displaying LF tuning graph. Divisor 89 is 134khz, 95 is 125khz.
Wyszukanie taga:
- pm3 --> hf search
- hf search
- UID : 04 1F 35 5A 6A 68 80
- ATQA : 03 44
- SAK : 20 [1]
- TYPE : NXP MIFARE DESFire 4k | DESFire EV1 2k/4k/8k | Plus 2k/4k SL3 | JCOP 31/41
- MANUFACTURER : NXP Semiconductors Germany
- ATS : 06 75 77 81 02 80 02 F0
- - TL : length is 6 bytes
- - T0 : TA1 is present, TB1 is present, TC1 is present, FSCI is 5 (FSC = 64)
- - TA1 : different divisors are supported, DR: [2, 4, 8], DS: [2, 4, 8]
- - TB1 : SFGI = 1 (SFGT = 8192/fc), FWI = 8 (FWT = 1048576/fc)
- - TC1 : NAD is NOT supported, CID is supported
- [=] Answers to magic commands: NO
- [+] Valid ISO14443-A Tag Found
Wyświetlenie informacji o karcie i podstawowej konfiguracji:
- pm3 --> hf mfdes info
- hf mfdes info
- -- Desfire Information --------------------------------------
- -------------------------------------------------------------
- UID : 04 1F 35 5A 6A 68 80
- Batch number : B9 0C 22 49 70
- Production date : week 27, 2022
- -----------------------------------------------------------
- Hardware Information
- Vendor Id : NXP Semiconductors Germany
- Type : 0x01
- Subtype : 0x01
- Version : 1.0 (Desfire EV1)
- Storage size : 0x16 (2048 bytes)
- Protocol : 0x05 (ISO 14443-3, 14443-4)
- -----------------------------------------------------------
- Software Information
- Vendor Id : NXP Semiconductors Germany
- Type : 0x01
- Subtype : 0x01
- Version : 1.4
- storage size : 0x16 (2048 bytes)
- Protocol : 0x05 (ISO 14443-3, 14443-4)
- -------------------------------------------------------------
- CMK - PICC, Card Master Key settings
- [0x08] Configuration changeable : YES
- [0x04] CMK required for create/delete : NO
- [0x02] Directory list access with CMK : NO
- [0x01] CMK is changeable : YES
- Max number of keys : 174
- Master key Version : 0 (0x00)
- ----------------------------------------------------------
- [0x0A] Authenticate : YES
- [0x1A] Authenticate ISO : YES
- [0xAA] Authenticate AES : NO
- ----------------------------------------------------------
- Available free memory on card : 224 bytes
Wyświetlenie listy dostępnych aplikacji:
- pm3 --> hf mfdes enum
- hf mfdes enum
- -- Desfire Enumerate Applications ---------------------------
- -------------------------------------------------------------
- Aid 0 : 89 32 45
- AMK - Application Master Key settings
- [!] Can't read Application Master key settings
- [!] Can't read Application Master key version. Trying all keys
- [!] Can't get file ids
- [!] Can't get ISO file ids
- Aid 1 : 12 34 73
- AMK - Application Master Key settings
- [!] Can't read Application Master key settings
- [!] Can't read Application Master key version. Trying all keys
- [!] Can't get file ids
- [!] Can't get ISO file ids
- Aid 2 : 00 00 13
- AMK - Application Master Key settings
- [!] Can't read Application Master key settings
- [!] Can't read Application Master key version. Trying all keys
- [!] Can't get file ids
- [!] Can't get ISO file ids
- -------------------------------------------------------------
Teraz wykonujemy autentykacje dostępu do karty:
- pm3 --> hf mfdes auth
- hf mfdes auth
- Usage: hf mfdes auth <1|2|3> <1|2|3|4> <keyno> <key>
- Auth modes
- 1 = normal, 2 = iso, 3 = aes
- Crypto
- 1 = DES 2 = 3DES 3 = 3K3DES 4 = AES
- Examples:
- hf mfdes auth 1 1 0 11223344
- hf mfdes auth 3 4 0 404142434445464748494a4b4c4d4e4f
- //-------------------------------------------------------------------
- //Mode normal, Crypto 3DES, klucz 0
- pm3 --> hf mfdes auth 1 2 0 00000000000000000000000000000000
- hf mfdes auth 1 2 0 00000000000000000000000000000000
- 3DES selected
- Key :00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- SESSION :00 00 00 00 65 AA E4 09 00 00 00 00 15 CE FC BD
I teraz właściwie możliwości odczytu karty desfire się zakończyły. Nie udaje mi się uzyskać żadnych dodatkowych informacji z karty oraz odczytać informacji z aplikacji. Oczywiście jeśli chodzi o testowaną wersję 32 bitową. Pewnie dla wersji standardowej będzie można uzyskać znaczniej więcej informacji.