Domanda Mifare con password diverse per ogni tessera

megajump

Utente Bronze
6 Novembre 2019
40
4
10
34
Ciao a tutti, mi sono imbattuto in una tessera Mifare che usa password diverse per ogni tessera (lo so perchè ne ho due e usano password diverse), e volevo chiedere se a qualcuno è mai capitata una cosa del genere. Ma soprattutto volevo chiedere se qualcuno avesse idee su come potesse essere ricavata la password. Premetto che il mio è solo uno sforzo mentale visto che ho già ricavato le password e sono in grado di moficarne il contenuto senza problemi.

Quello che ho già scoperto è che la password viene derivata sulla base del numero di serie della chiave, per esserne sicuro ho utilizzato chiavi "magic tag" con le quali ho clonato la tessera e poi ho modificato il numero di serie mantendo il resto invariato. Ovviamente ho fatto anche il test inverso mantenendo il numero di serie corretto e modificando il "manufacturer code". Il resto dei dati cambia (contatori, date orari etc) quindi di sicuro non entrano nella password.

Il mio problema è che l'UID sono 4 byte ma la password è di 6 byte, quindi mi aspetto un qualche algoritmo usato per derivare le password dei settori protetti. La prima cosa che ho pensato è stata ad una semplice moltiplicazione e ho provato anche a fare un piccolo brute force senza risultati (e comunque non penso sia cosi stupido l'algoritmo)

Qualcuno ha idee su un possibile algoritmo?
Scusate se non posto i dump ma essendo le tessere registrate a mio nome non posso pubblicare i dati. E so che senza dump è ben più difficile la cosa ma ci provo lo stesso :)
 
Ultima modifica:
Ciao Megajump, algo & vingcard è lui che genera il settore pwds con l'uid della carta. Ho provato a trovarlo senza successo, rimane privato per il momento. Ora con un po' di tempo e pazienza?

re, quando guardo i miei dump nel blk 4 c'è sempre lo stesso valore.
"blocchi": {
"0": "66AF272AC4880400C851002000000018",
"1": "000000000000000000000000000000000",
"2": "00000000000000000000000000000000",
"3": "FFFFFFFFFFFFFF078069FFFFFFFFFFFF",
"4": "4DB200000000000000000000000000000"
forse un vantaggio?. Uid 4 byte + 4D B2= 6 byte da scavare.

re, scusa, ho appena guardato in un autolavaggio mifare chiave e non ho lo stesso risultato, quindi ho detto qualcosa di stupido.
"4": "00000F000000D0E800000000000000D9",
Deve esserci una funzione UID PWDGEN
 
Ho proseguito nella ricerca e ho qualche novità...
Confrontando i dati delle due card in mio possess ho scoperto che le password di una stessa card hanno una relazione tra di loro e possono essere derivate le une dalle altre con un semplice XOR con valori fissi.
Scoperta questa relazione tra le password basata su XOR ho pensato di provare ad emulare card con UID semplici composti per la maggiora parte da ZERI per capire se lo XOR venisse usato anche per derivare la password dagli UID ma non ho avuto fortuna (sarebbe stato troppo facile), sono però riuscito a costruire 3 card valide giocando con l'emulatore.
Guardando gli UID e le password delle 3 card qui sotto vi vengono idee su come potrebbe essere calcolata la password partendo dall'UID? So che la cosa è praticamente impossibile ma magari guardando i numeri a qualcuno viene in mente qualche idea.
Le tessera sono tutte testate e valide, per generarle ho emulato una tessera vuota con l'UID che volevo, l'ho inserita nel lettore e ho catturato i log di accesso, decodificata una password dai log ho configurato la card con le altre password corrette sfruttando gli XOR

(Durante le prove con l'emulatore ho scoperto che viene fatto un accesso con password anche allo slot3 nonostante lo slot nelle card originali ha password standard FFFFFFFFFFFF, magari non serve a nulla ma boh)

Relazione tra le password della stessa card:
Codice:
pwdA slot7  XOR pwdA slot11 = 03 85 64 9A 45 CE
pwdB slot7  XOR pwdB slot11 = 03 80 91 FF C7 8B

pwdA slot7  XOR pwdB slot7  = 10 7B 94 22 59 24
pwdA slot11 XOR pwdB slot11 = 10 7E 61 47 DB 61


Dump card generate tramite emulazione:
Codice:
card 0 slot  0: 00 00 00 00 00 08 04 00 00 00 00 00 00 00 00 00
card 0 slot  3: 9F 39 B6 7E 0B 64
card 0 slot  7: 8E F0 AC B0 E6 7B 78 77 88 00 9E 8B 38 92 BF 5F
card 0 slot 11: 8D 75 C8 2A A3 B5 08 77 8F 00 9D 0B A9 6D 78 D4

card 1 slot  0: 00 00 00 01 01 08 04 00 00 00 00 00 00 00 00 00
card 1 slot  3: B4 A1 8F E1 F5 1F
card 1 slot  7: A5 68 95 2F 18 00 78 77 88 00 B5 13 01 0D 41 24
card 1 slot 11: A6 ED F1 B5 5D CE 08 77 8F 00 B6 93 90 F2 86 AF

card 2 slot  0: 00 00 00 02 02 08 04 00 00 00 00 00 00 00 00 00
card 2 slot  3: 6A A0 57 8D 6C 56          
card 2 slot  7: 7B 69 4D 43 81 49 78 77 88 00 6B 12 D9 61 D8 6D
card 2 slot 11: 78 EC 29 D9 C4 87 08 77 8F 00 68 92 48 9E 1F E6
 
Ciao Megajump, da parte mia sto anche cercando di averlo provato senza successo con lo script dei tasti di diversificazione che non è adatto a me, perché esce solo con una chiave con aes e una chiave 3des. Continuo la mia ricerca, buon divertimento giorno.
 
Ciao, ecco un meccanismo per mifare classic 1k per il calcolo delle chiavi.

spesso nel mio dump la chiave --blk 0 = a0a1a2a3a4a5 questa chiave deve essere utilizzata per calcolare le altre chiavi in base all'ACL dei settori di scrittura e lettura.
 

Allegati

  • Screenshot 2023-12-07 at 12-33-14 key_diversification - mifare classic_en.pdf.png
    Screenshot 2023-12-07 at 12-33-14 key_diversification - mifare classic_en.pdf.png
    149 KB · Visualizzazioni: 14
Buonasera, ecco il risultato con lo script disponibile sopra, per me ha provato con due badge diversi senza successo, i tasti non corrispondono per niente ai miei tasti che ho.
AES version
Masterkey: 00112233445566778899AABBCCDDEEFF
UID: 8DA09C8D
Sector: 00
Subkey 1: FBC9F75C9413C041DFEE452D3F0706D1
Subkey 2: F793EEB928278083BFDC8A5A7E0E0D25
Message: 018DA09C8D0080000000000000000000F793EEB928278083BFDC8A5A7E0E0D25
Diversified key: 36D5B6407A26

3DES version
Masterkey: 00112233445566778899AABBCCDDEEFF
UID: 8DA09C8D
Sector: 00
Trailer Block: 03
Mifare key: A0A1A2A3A4A5
Message: A0A1A2A329059F8D
Diversified key: CCBD5702C7C9
 
Ci
Ciao, ecco un meccanismo per mifare classic 1k per il calcolo delle chiavi.

spesso nel mio dump la chiave --blk 0 = a0a1a2a3a4a5 questa chiave deve essere utilizzata per calcolare le altre chiavi in base all'ACL dei settori di scrittura e lettura.

la chiave a0a1a2a3a4a5 è la chiave di default usata per il "MIFARE Application Directory (MAD)" qui trovi maggiori informazioni: https://www.nxp.com/docs/en/application-note/AN10787.pdf
nel mio caso di sicuro non usano il MAD perchè tutta la tessera è vuota e sono usati solo un paio di blocchi per salvare dei contatori

sto guadando lo script che hai linkato sopra, sembra interessante ma dubito che abbiano usato come MasterKey quella dell'esempio e farlo con un brute force la vedo lunga, molto molto molto lunga
 
Ultima modifica:
Ciao Megajump, ho un tasto Mad nel mio blk 0 che punta al blk 4 con dati che non capisco.
Mac indica il settore 4
[=] ---------------- Listing ----------------
[=] 00 MAD v1
[=] 01 [0000] free
[=] 02 [0000] free
[=] 03 [0000] free
[=] 04 [2EC0] (unknown)
[=] 05 [0000] free
[=] 06 [0000] free
[=] 07 [0000] free
[=] 08 [0000] free
[=] 09 [0000] free
[=] 10 [0000] free
[=] 11 [0000] free
[=] 12 [0000] free
[=] 13 [0000] free
[=] 14 [0000] free
[=] 15 [0000] free
Mac indica il settore 4
[=] -------------- AID 0x2ec0 ---------------
[016] 0F E1 00 00 06 00 00 00 00 00 00 00 00 00 00 00
[017] 00 00 00 00 80 FF FF 68 00 00 00 00 00 00 00 00
[018] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

"4": "00000300140000000001000000000000",
"5": "0A0B170A0B1700010000000000000000", 12/11/2023 settore 01 nero 02 data e decremento 01
"6": "00030000000000000000000000000000",
[=] 00 MAD v1
[=] 01 [0000] free
[=] 02 [0000] free
[=] 03 [0000] free
[=] 04 [C02E] Compelete system for lockers, access control & electr. payment [Ojmar S. A.]
[=] 05 [0000] free


[=] -------- Card Holder Info 0x0004 --------
[!] no Card Holder Info data

"A0A1A2A3A4A5787788C18627C10A7014", key A & B ACL " 787788C1" data"C1= GPB" settore 00
"A0A1A2A3A4A50F00FFAA00008627C10A, key A & B ACL "0F00FFAA" data "AA=GPB ???" settore 04

Grazie per il riferimento al documento ma avevo già cercato, altrimenti ci sono anche AN1305 e AN1304.Continuo la mia ricerca sulla diversificazione chiave e sull'analisi dei dati del settore 4 di MAD, se vuoi provare lo script dal vivo inserisci semplicemente l'uid e il settore che desideri.
buona giornata

mad = C02E Compelete system for lockers, access control & electr. payment [Ojmar S. A.] = i.e.big endian