Kako berejo ID kodo Mifare, NFC in 125kHz čitalniki in na kaj moramo biti pozorni

Formati branja ID kod RFID čipov in nasveti za pretvorbo

15. September 2022
Za potrebe identifikacije oseb ali predmetov, zelo pogosto uporabljamo identifikacijske številke, ki so zapisane v RFID čipu. Te kode so shranjene v dvojiški oz. binarni obliki (BIN), torej v obliki enic in ničel. Ko čip preberemo, običajno vidimo na zaslonu desetiško (DEC) ali šestnajstiško (HEX) vrednost. Čitalniki lahko isti zapis interpretirajo na različne načine oziroma, ga pred prikazom na zaslonu še dodatno obdelajo, tako, da obrnejo zaporedje bitov ali bajtov ali obrnejo hkrati zaporedje bitov ter bajtov.  V tem članku razlagamo o tem kako si lahko pomagate, če se prikazana vrednost, ki jo poda čitalnik ne ujema s kodami, v sistemu ali tabeli, in podajamo razlago kako berejo ID kodo Mifare, NFC in 125kHz čitalniki.

Zelo pogosto uporabljeni čipi tipa Mifare Classic imajo vpisano 4-bajtno ID kodo, kar pomeni, da je vprogramiranih 32 bitov, torej 32 mestna binarna koda sestavljena in 1 in 0. 

Pogosti format branja ID kode v primeru Mifare čitalnikov je 8 HEX ali desetiški format 10 DEC.

Za potrebe analize je potrebno prebrano kodo pretvoriti v izvorno obliko v dvojiškem sistemu. Pri tem si lahko pomagamo z brezplačnim orodjem:
https://www.rapidtables.com/convert/number/hex-to-binary.html

Če je v čipu vpisana 8 mestna koda FFFF FFFF, 

je to v binarnem zapisu:  1111111111111111 1111111111111111

To isto kodo lahko preberemo tudi v desetiškem formatu 

in iz FFFFFFFF dobimo 4294967295

Preprost čitalnik, ki bere v formatu 10 DEC je R80C:
https://www.mave.si/citalniki/r80c-citalnik-rfid-cipov-frekvence-13-56-mhz.html

Če potrebujemo drugačni izpis, sta uporabna spodnja dva čitalnika, ki imata priložen CD s konfiguratorjem:

Soliden čitalnik z možnostjo spreminjanja formatov in načina delovanja :
https://www.mave.si/citalniki/syris-rd200-m1-citalnik-mifare-in-nfc-kartic.html

Še boljši čitalnik - dolga razdalja branja, možnost spreminjanja formatov in načina delovanja, več podprtih protokolov:
https://www.mave.si/citalniki/syris-rd300-h1-g-univerzalni-citalnik-za-nfc-mifare-in-icode-standarde.html


Spodnji primeri kažejo kakšna je povezava med kodo, ki jo poda nek čitalnik in kodo, ki jo je za isto kartico podal nek drugi čitalnik.

1. Primer analize korelacije med odčitkom dveh različnih čitalnikov, kjer je kartica ista 

1 čitalnik 1E4BF5AE
2 čitalnik  508294574

Vidimo, da nam drugi čitalnik poda desetiško vrednost, torej dovolj je, da šestnajstiško kodo pretvorimo v DEC kodo in dobimo: 508294574

To zna narediti tudi Excel s funkcijo HEX2DEC.

Tu je zanimivo, da je koda 9 mestna, čeprav bi morala biti 10 mestna in očitno nam je drugi čitalnik porezal začetno nulo. Celotna DEC koda je torej 0508294574.


2. Primer analize korelacije med odčitkom dveh različnih čitalnikov, kjer je kartica ista: 

1 čitalnik 1E4BF5AE
2 čitalnik AEF54B1E

Vidimo, da nam oba čitalnika podata 8 mestno šestnajstiško vrednost in že na prvi pogled je 
jasno, da se po dva znaka ponavljata ampak na različnih mestih

1 čitalnik 1E 4B F5 AE
2 čitalnik AE F5 4B 1E

Iz tega vidimo, da je drugi čitalnik uporabil funkcijo Reverse Byte in je obrnil vrstni red bajtov iz prve vrstice. 
Iz 1E 4B F5 AE smo dobili AE F5 4B 1E

To pretvorbo si lahko naredimo v Excelu s par preprostimi funkcijami =MID(A1;1;2)... 

3. Primer analize korelacije med odčitkom dveh različnih čitalnikov, kjer je kartica ista je malo bolj kompleksen in zahteva nekaj več korakov.

1 čitalnik 1E4BF5AE
2 čitalnik 78D2AF75

Za analozo tega kompleksnejšega primera moramo oba odčitka najprej pretvoriti v izvorni dvojiški način, torej BIN format in primerjati posamezne dele kode.

1 čitalnik  1E 4B F5 AE          
                                             1E              4B               F5                AE
                                          00011110   01001011    11110101    10101110


2 čitalnik  78 D2 AF 75
                                              78              D2             AF                75
                                          01111000  11010010    10101111    01110101

Sedaj vidimo, da še ni neke vidne korelacije med obema odčitkoma in poskusimo postopoma pretvoriti prvi odčitek, da dobimo drugega.

Prvemu odčitku naredimo funkcijo reverse bit, torej prepišemo posamezna znake od desne proti levi.

Torej iz 
1E4BF5AE                                                   1E              4B               F5               AE
BIN:                                                        00011110   01001011    11110101    10101110


z Reverse bit dobimo:                       01110101         10101111   11010010       01111000
To je v HEX:                                             75                    AF                D2                  78
                                          
Sedaj smo že bližji odčitku, ki ga iščemo in potrebno je narediti še funkcijo Reverse Byte, torej prepisati po dva znaka iz desne proti levi in dobimo: 78 D2 AF 75


Ko pretvarjamo različne formate odčitkov ali ko raziskujemo razne težave z branjem čipov, moramo poznati še nekaj dejstev.

Lastnosti ID kod v primeru NFC čipov

NFC čipi tipa NTAG ali Mifare DESFire imajo ID kodo dolžine 7 bajtov, torej je vprogramiranih 56 enk in ničel. To kodo lahko vidimo na zaslonu kot 14 mestno šestnajstiško kodo ali 17 mestno desetiško kodo.

Primer 14 mestna koda  FFFFFFFFFFFFFF je 17 mestna decimalna koda 72057594037927935.

Mobilni telefoni in druge NFC naprave prikazujejo kodo v formatu 14 HEX Reverse Byte.

Torej koda 04 01 EA F2 90 5B 81 je v čipu zapisana kot 81 5B 90 F2 EA 01 04.


Podvojena ID koda NFC čipa? Primer, ki dela preglavice tudi najboljšim razvojnikom

Če bi isto NFC nalepko prebrali z navadnim RFID čitalnikom, ki je narejen za branje le 4-bajtne kode, bi dobili zgolj 81 5B 90 F2.

Če nas kdo vpraša ali je mogoče, da imata dve NFC nalepki enako ID kodo, je odgovor ne, saj proizvajalec čipov pravi, da so kode edinstvene (UID - Unique ID), se pa tudi našim strankam pogosto zgodi, da zaradi napačnega branja naredijo v bazo vpis delnih kod, torej le 8 mest in ti delni vpisi se lahko ponovijo.

Rešitev te težave torej predstavlja uporaba čitalnika, ki prebere celotno 7-bajtno kodo.

NFC čitalniki za branje ID kode čipa

Najboljši čitalnik - dolga razdalja branja, možnost spreminjanja formatov in načina delovanja:
https://www.mave.si/citalniki/syris-rd300-h1-g-univerzalni-citalnik-za-nfc-mifare-in-icode-standarde.html

Soliden čitalnik z možnostjo spreminjanja formatov in načina delovanja :
https://www.mave.si/citalniki/syris-rd200-m1-citalnik-mifare-in-nfc-kartic.html

Preprosti simulator tipkovnice, brez konfiguratorja:
https://www.mave.si/citalniki/r80uf-nfc-citalec-keyboad-emulator-za-uid.html

NFC čitalnik za razvijalce, ki uporablja API ukaze:
https://www.mave.si/citalniki/nfc-citalnik-acr-1252u.html

Kakšno kodo pa imajo vprogramirano 125 kHz čipi?

125 kHz čipi tipa EM4200 in TK4100 imajo vprogramirano 40 bitno ID kodo čipa, ki jo lahko preberemo kot 10 mestno HEX kodo ali 

125 kHz kartica s celotno 10 mestno HEX kodo 84C2A6E195 ima vpisano BIN kodo:
1000010011000010101001101110000110010101

in to lahko preberemo kot desetiško kodo: 570201399701 - torej 12 mest DEC

Običajni 125 kHz čitalniki berejo v formatu 8H-10D torej preberejo le prvih 8 znakov in jih pretvorijo v desetiški format. 

Na ta način iz C2A6E195 dobimo 3265716629.

Najboljši čitalnik za branje ID kode 125 kHz čipa - dolga razdalja branja, možnost spreminjanja formatov in načina delovanja:
https://www.mave.si/citalniki/syris-rd200-lf-za-rfid-cipe-na-125-khz-in-134-khz.html

Preprosti simulator tipkovnice, brez konfiguratorja:
https://www.mave.si/citalniki/r80d-rfid-citalnik-125-khz-cipov.html

Čitalci ki dajo ID kodo na COM vrata običajno nimajo možnosti nastavljanja formata ID kode ampak se le to lahko kasneje programsko pretvori.

Ti čitalci so:
https://www.mave.si/citalniki.html#p=415,284

V primeru vprašanj smo na razpolago na info@mave.si ali telefonski številki  041 884 124.

Strokovni članki

Vsi članki