Discussione Credito/Contatore Mifare Classic 1K

se hai le key .. leggila e posta il dump
Alla fine sono riuscito a trovare le chiavi, solo il settore 2 contiene dati, ti anticipo è una carta che vengono aggiunti crediti ricaricando con soldi, su questa restano solo 2 crediti.
Vorrei una guida, o meglio in manuale da leggere per capire come sono scritti i settori e blocchi, per imparare a decifrarli. Dopo diverse ricerche non ho trovato nulla, anche perché non so cosa cercare. Potresti aiutarmi gentilmente 👍🏽
Allego settore 2 :
B76B10C032020402A33D908926198FAA
110B71C057A778CE5BCF63BFA36B7BF1
00000000000000000000000000000000
 
devi fare più dump aggiungendo un credito alla volta in modo da capire le differenze. così è difficile da capire
Fatto, ma credo sia tutto “crittografato” visto che cambia totalmente il primo blocco del settore 2, il secondo blocco cambia ad ogni ricarica, restando invariato per tutte le operazioni fini alla successiva ricarica.
 
Ultima modifica:
Sto analizzando una scheda mifare classic 1k e stavo cercando di decodificare il sistema di data, quando mi sono imbattuto in questo thread.

Ho fatto svariati dump ed è stato subito chiaro di quale parte tenesse conto di data e ora.
Ho paragonato i miei dump al format di Elliot_Alderson in pagina 6, ma direi che non corrisponde.

Metto i dump relativi all'orario, con data ed ora del display LCD. Purtroppo alcuni orari li ho persi.
Codice:
B7 5B 17 2F -> 2F175BB7 -> 0010111 1000 10111 0101 101110 110111 (23/08/2019 - 10.37)
B2 6C 19 2F -> 2F196CB2 -> 0010111 1000 11001 0110 110010 110010 (25/08/2019  - 12.45
E7 6C 19 2F -> 2F196CE7 -> 0010111 1000 11001 0110 110011 100111  |
0D 6D 19 2F -> 2F196D0D -> 0010111 1000 11001 0110 110100 001101 |______________12.49
52 7C 19 2F -> 2F197C52 -> 0010111 1000 11001 0111 110001 010010  |
7C 7C 19 2F -> 2F197C7C -> 0010111 1000 11001 0111 110001 111100 |
94 7C 19 2F -> 2F197C94 -> 0010111 1000 11001 0111 110010 010100  |
B0 7C 19 2F -> 2F197CB0 -> 0010111 1000 11001 0111 110010 110000 |
BB 7C 19 2F -> 2F197CBB -> 0010111 1000 11001 0111 110010 111011 (25/08/2019 - Pomeriggio - Perso orari
31 84 21 2F -> 2F218431 -> 0010111 1001 00001 1000 010000 110001  (01/09/2019)
26 61 23 2F -> 2F236126 -> 0010111 1001 00011 0110 000100 100110  (03/09/2019 - 11.17)

Questa mi sembra la suddivisione più sensata, poiché:
0010111 = 23; Siamo nel 2023 e non cambia mai, nemmeno con il passaggio al mese successivo.
1000/1001 = 8 e 9; Agosto e Settembre
10111/11001/00001/00011 = 23, 25, 1, 3; Corrispondono ai giorni in cui ho utilizzato la card.
Il resto della suddivisione, a mio parere, restituisce i valori più sensati, in termini di suddivisione del binario, ovvero:
-Per arrivare a 60 secondi ho bisogno di 6 bit
-Stessa cosa per arrivare a 60 minuti
-Con un orologio da 12 ore mi bastano 4 bit per arrivare a 1100
Da qui la mia suddivisione in 4/6/6, la quale, però, riportata in decimale non corrisponde minimamente agli orari che mi sono segnato.


A questo punto devo anche dire che non è possibile determinare su che orario lavori la macchina, perché i dump restituiscono "23" in testa che sarebbe in linea con l'anno corrente, ma sul display LCD c'è scritto 2019. Giorno e mese sono corretti. L'ora, inoltre, secondo il display è indietro di 75 minuti, ma nei dump non trovo orari compatibili né con quelli dell'ora reale né con l'ora errata della macchina.
Che stia sbagliando la suddivisione?

Edit:
Nell'angolo della card c'è stampato "230519" e pensavo fosse il numero di carta o qualcosa di simile.
Andando a prendere il primo dump, scheda acquistata con il credito e non usata, si trova il valore seguente:
3C 5A B3 2E -> 2EB35A3C -> 0010111 0101 10011 0101 101000 111100 -> 23 5 19 5 40 60
Quindi è plausibile pensare che sia stata creata in quella data e quindi avere ulteriore conferma che almeno la parte Y-M-D sia corretta.
 
Ciao a tutti,
ho una mifare classic in cui il credito è memorizzato nel settore 1 in questa forma:
  • credito attuale
  • credito precedente
  • backup credito attuale

Dopo aver effettuato varie operazioni, ho ottenuto questi dump:
14.0€: 01008C000078057316B20D0001000074 -> 29/09/2023
12.5€: 02007D0000E2043D9B93080002E803E6 -> 29/09/2023
5.5€: 03007D000026023DDBF3080003BC029D -> 29/09/2023 19:07
5.0€: 08007D0000F401459B730900030A0004 -> 05/10/2023
4.9€: 09007D0000EA01459B730900030A00FB -> 05/10/2023
4.7€: 0B007D0000D60166B3730C00030A0025 -> 06/10/2023
4.6€: 0C007D0000CC0166B3730C00030A001C -> 06/10/2023
4.5€: 0D007D0000C20166B3B30C00030A0053 -> 06/10/2023

Le mie analisi hanno portato a questi risultato:
  • I primi 2 byte (probabilmente i primi 4) sono il contatore incrementale delle operazioni
  • Il terzo byte potrebbe essere un’indicazione se l’operazione è ricarica (8C) oppure è utilizzo (7D)
  • I byte 6 e 7 rappresentano il credito
  • I byte 8, 9, 10, 11 dovrebbero rappresentare la data/ora dell'operazione
  • I bytes 12, 13, 14, 15 dovrebbero rappresentare la macchinetta utilizzata per l'operazione
  • Il byte 16 rappresenta il checksum (non sono sicuro sia solo l'ultimo byte o anche il 15)
Purtroppo non riesco a trovare una relazione per il calcolo del checksum. Qualcuno potrebbe aiutarmi a capire come calcolarlo? Grazie!
 
Screenshot_20231107_131435_yumekan.android.devcalc.jpg
ciao puoi usare un app che si chiama devcalc n base all'importo che scegli ti da il valore
 
Ciao, Sulla base dei dati che hai postato il checksum è una somma

L' ultimo BYTE è la somma di tutti i precedenti +0x21
Se lo applichi torna su tutti i tuoi dump