Orodha ya maudhui:

Kutumia Mifare Ultralight C Pamoja na RC522 kwenye Arduino: 3 Hatua
Kutumia Mifare Ultralight C Pamoja na RC522 kwenye Arduino: 3 Hatua

Video: Kutumia Mifare Ultralight C Pamoja na RC522 kwenye Arduino: 3 Hatua

Video: Kutumia Mifare Ultralight C Pamoja na RC522 kwenye Arduino: 3 Hatua
Video: Мобильная POS-машина S4 2024, Julai
Anonim
Kutumia Mifare Ultralight C Pamoja na RC522 kwenye Arduino
Kutumia Mifare Ultralight C Pamoja na RC522 kwenye Arduino

Kutumia teknolojia ya RFID kutambua wamiliki wa kadi au kuidhinisha kufanya kitu (kufungua mlango nk) ni njia ya kawaida. Kwa matumizi ya DIY moduli ya RC522 inatumiwa sana kwani ni ya bei rahisi na nambari nyingi zipo kwa moduli hii.

Mara nyingi, UID ya kadi hutumiwa kutambua mwenye kadi, na kadi za Mifare Classic zinatumika kwani ni za bei rahisi na mara nyingi hujumuishwa wakati wa kununua moduli ya RC522.

Lakini kama unaweza kujua, mfumo wa Mifare Classic umedukuliwa kwa miaka kadhaa na haizingatiwi kuwa salama tena. Mfumo wa usimbuaji fiche Crypto1 unaotumiwa na kadi za Kawaida unaweza kushinda na zinaandikwa tena kadi ambapo data ya UID inaweza kuchapishwa tena (kadi za uchawi).

Kwa hivyo kwa matumizi yoyote yanayofaa ya usalama matumizi ya kadi za Mifare Classic haifai! Hiyo inatumika kwa (wengi) mifumo ya NTAG na Mifare Ultralight

Kwa hivyo chaguo ni kutumia mfumo wa kitaalam au kujaribu kutumia mfumo salama zaidi wa RFID. Mifumo inayopatikana ni Mifare Ultralight C, Mifare DESFire na Mifare Plus. Kwa kuwa kuna mifumo mingi ya kitaalam inayotumia mifumo salama zaidi, kwa jamii ya DIY hakuna suluhisho (kuna suluhisho moja la Teensy msingi DESFire, ambalo linategemea bodi ya kuzuka ya PN523). Kwa kuongeza kadi za DESFire ni ghali sana. Kwa hivyo changamoto ilikuwa kutafuta suluhisho bora na rahisi.

Suluhisho lililowasilishwa hutoa ufikiaji kamili kwa kadi za bei rahisi za Mifare Ultralight "C" kwa kutumia moduli ya bei rahisi ya Kichina ya RC522 DIY. Kulingana na nambari hii, Mifare Ultralight C salama inaweza kutumika katika matumizi ya DIY.

Hatua ya 1: Masharti

Masharti
Masharti

Ingawa RC522 imeundwa vizuri, katika hali nyingi inajengwa vibaya kwani vifaa vingine havina kipimo. Hii inasababisha sifa mbaya ya moduli kwamba ina unyeti mdogo na sio kila aina ya kadi zitatambuliwa. Hasa Mifare Ultralight C haitajulikana wala haitawezekana kusoma kadi.

Shida kuu ni uainishaji wa inductors L1 na L2. Kama ilivyoelezwa kwenye https://ham.marsik.org/2017/04/using-cheap-rc522-nfc-reader-to-read.html. Kwa kuchukua tu inductors kwa wale wanaofaa. FERROCORE CW1008-2200 ghafla RC522 inaonyesha uwezo wake halisi ni nini.

Kwa hivyo kabla ya kujaribu nambari uliyopewa, LAZIMA UWABadilishe watangulizi. Haitafanya kazi na waingizaji waliosanikishwa mapema!

Asili ya yote haya ni kwamba kadi za Ultralight C zina nguvu njaa. Nishati hii hutolewa na uwanja wa RC522 RF. Kwa sababu ya utaftaji wa chini wa inductors, uwanja wa nishati hauna nguvu ya kutosha kuwezesha Ultralight C. Kadi zingine kama Mifare Classic zinahitaji nguvu kidogo na kwa hivyo hufanya kazi vizuri.

Hatua ya 2: Inafanyaje Kazi?

Inafanyaje kazi?
Inafanyaje kazi?
Inafanyaje kazi?
Inafanyaje kazi?
Inafanyaje kazi?
Inafanyaje kazi?
Inafanyaje kazi?
Inafanyaje kazi?

Kwa hivyo baada ya kurekebisha moduli ya RC522, unawezaje kutumia Mifare Ulralight C kwa programu yako?

Ujanja ni kwamba, Mifare Ultralight C inasaidia uthibitishaji wa nenosiri kulingana na kipengee cha 3DES. Kwa kutumia nenosiri hili, yaliyomo kwenye kadi yanaweza kufanywa "kusoma tu" au kuonekana kabisa kwa mtumiaji asiyeidhinishwa.

Ili kutumia kinga hii ya nywila nywila inahitaji kuandikiwa kadi na kurasa zinahitajika kulindwa. Ukimaliza, unaweza kudhibitisha kadi katika programu yako ama kwa kuuliza tu uthibitishaji wa msingi wa nywila au data iliyo tayari zaidi kutoka eneo lililohifadhiwa. Ikiwa hii imefanikiwa tu unajua kuwa unaweza kuamini UID iliyotolewa kwenye kadi.

Jihadharini: bila uthibitishaji wa nenosiri bado hauwezi kuamini kadi ya Mifare Ultralight C, kwani kuna "kadi za uchawi" na vile vile wanaiga Ultralight C.

Kila kadi iliyo huru kutoka kwa teknolojia (ikiwa iko katika masafa sahihi) itajibu na UID yao inapotumiwa na uwanja wa RF na kuomba kujitambulisha. Kwa kuongeza wanapeana thamani ya SAK kutoa habari ndogo juu ya aina ya kadi iliyopo. Kwa bahati mbaya Mifare Ultralight na NTAG zinabainisha kama aina ya syme (SAK = 0x00), pamoja na Mifare Ultralight C. Kwa hivyo wakati wa kupigia kura kadi, angalau thamani ya SAK ya 0x00 itatoa dokezo kuwa kunaweza kuwa na Ultralight C juu ya msomaji.

Ili kuhakikisha kuwa ni Ultralight C ombi la uthibitishaji uliosimbwa kwa njia fiche linaweza kutumwa kwa kadi. Ikiwa hii sio kadi ya Ultralight C, ombi hili halitaeleweka, na jibu litakuwa NAK (sio-acknolege).

Ikiwa hii ni kadi ya Ulralight C, utapata jibu 8 la baiti. Hizi Baiti 8 ni nambari ya "B" (RndB) iliyosimbwa kwa njia fiche na kitufe kilichohifadhiwa kwenye kadi kwa kutumia kifaa cha 3DES.

RndB iliyosimbwa fiche lazima ifutwe kwa kutumia kitufe sawa katika programu. Nambari hii ya nasibu hubadilishwa kidogo (iliyozungushwa na baiti moja → ka 1 itahamishiwa kwa baiti 8 na ka zingine zote zinasukumwa kwa chini kidogo, kisha huitwa RndB '). Mpango huo hutengeneza nambari 8 ya Baiti "A" yenyewe (RndA) na inaunganisha RndA hii kwa RndB iliyobadilishwa. Hii imesimbwa tena kwa kutumia kitufe na tuma kwa kadi.

Kadi huondoa ujumbe na kukagua ikiwa RndB inalingana na RndB iliyotengenezwa hapo awali kwenye kadi. Ikiwa zinalingana, kadi sasa inajua, kwamba programu inajua ufunguo.

Kwa wakati huu, mpango bado haujui ikiwa kadi inajua ufunguo na kwa hivyo inaweza kuaminika au la. Ili kufanikisha hili, kadi sasa inazunguka RndA iliyosimbwa kwa baiti moja, halafu inasimba ka hizi kwa kutumia ufunguo na kuzirudisha.

Programu hiyo itasimbua jibu la kadi na kuangalia ikiwa RndA asili na mechi ya RndA iliyojibiwa. BASI TU vyombo vyote (mpango na kadi) vinajua kuwa zinashiriki maarifa ya ufunguo mmoja.

Utaratibu huu unatumika tu kuthibitisha. Mawasiliano yote zaidi huwa kwenye "maandishi wazi".

Ingawa kuna kadi za "uchawi Ultralight C" ambapo UID inaweza kubadilishwa, kitufe chenyewe hakiwezi kupatikana kutoka kwa kadi na kifaa cha 3DES kiko salama. Ufunguo ni ufunguo wa 16 Byte, kwa hivyo njia ya nguvu ya kijinga kupata ufunguo itachukua muda.

Kama ilivyoelezwa, mawasiliano kabla ya uthibitishaji na baada ya uthibitishaji huwa katika maandishi wazi (aka hayasimbwi). Wakati wa kuandika kitufe kipya cha kadi, yaliyomo kwenye kitufe yanaweza kutobolewa kwa kutumia vifaa sahihi. Kwa hivyo tafadhali andika ufunguo tu katika mazingira salama na weka siri kuu.

Wakati wa kutumia kadi ya Ultralight C.

Kadi ya Ultralight C ina huduma nyingi za usalama zinazojengwa katika:

  1. Kumbukumbu ya Programu ya Wakati Moja (OTP). Katika eneo hili bits zinaweza kuandikwa, basi halijafutwa.
  2. Kaunta 16 ya njia moja. Kaunta hii inaweza kuongezeka tu, inapopatikana.
  3. "Andika" au "soma / andika" ulinzi wa kurasa kwenye kumbukumbu. Ikiwa tu imethibitishwa na ufunguo, kurasa hizi zinaweza kusomwa au kurekebishwa.
  4. Kufungia / kuzuia kurasa za kibinafsi ili kulinda dhidi ya muundo wowote.

Matumizi ya OTP, kaunta 16 au matumizi ya kizuizi hayatekelezwi kwa nambari iliyopewa, lakini inaweza kutekelezwa kwa urahisi kulingana na habari iliyotolewa kwenye https://www.nxp.com/docs/en/data- karatasi / MF0ICU2.pd…

Kama ulinzi na ufunguo ni muhimu kwa kutumia Mifare Ultralight C, kazi zote zinazofaa zipo.

Amri zote hutumiwa katika mfuatiliaji wa Serial na "laini mpya tu" na na Baud 115200

  • "Auth 49454D4B41455242214E4143554F5946" itaomba uthibitisho na ufunguo uliopewa (katika kesi hii kitufe cha kawaida cha Mifare Ultralight C)
  • "Dampo" itatupa yaliyomo kwenye kadi mbali kama yanavyoonekana. Katika hali ikiwa kurasa zinalindwa na ufunguo, kurasa hizi zinaweza zisionekane hadi uthibitishaji wa awali na ufunguo. Katika safu mbili za kwanza imeonyeshwa ikiwa kurasa zimefungwa au ufikiaji umezuiliwa.
  • "NewKey 49454D4B41455242214E4143554F5946" itaandika ufunguo mpya wa kadi hiyo. Kitufe kimeandikwa kwa kurasa za 44 hadi 47. Hii itafanya kazi tu, ikiwa kurasa hizi hazifungwi wala kulindwa bila uthibitishaji uliopita.
  • "wchar 10 hello world" itaandika "hello world" kuanzia ukurasa wa 10. Tena, kazi hizi tu za kurasa hazijafungwa au kulindwa bila uthibitishaji uliopita. Wakati wa kujaribu kuandika hapo juu ukurasa wa 39 au chini ya ukurasa wa 4 hii itasababisha kosa au data hupuuzwa kwani kurasa hizi sio kumbukumbu ya mtumiaji.
  • "Whex 045ACBF44688" itaandika maadili ya Hex moja kwa moja kwenye kumbukumbu, hali za awali zinatumika.
  • "Kulinda 30" inalinda kurasa zote kutoka ukurasa wa 30 kwenda juu. Kulingana na idhini, kurasa hizi zinaweza kubadilishwa tu au kusoma baada ya uthibitishaji wa awali na ufunguo. Kutumia "kulinda" na maadili ya juu kuliko 47 kutaweka kurasa zote kuwa "zisizo salama" PAMOJA NA FUNGUO kwenye kurasa za 44-47 (ambazo zinaweza kubadilishwa tu lakini hazisomwi). Ili kuzuia kubadilisha ufunguo, ulinzi unapaswa kuanza angalau kwenye ukurasa wa 44.
  • "Setpbit 0" huweka ulinzi kidogo na huamua ikiwa kurasa zilizolindwa zinasomwa tu ("setpbit 1") au haziwezi kusomwa hazijaandikwa ("setpbit 0") bila uthibitishaji uliopita na ufunguo.

Sio amri zote zinazoweza kutumika mara tu baada ya kadi kugunduliwa. "Dampo" hapo awali kwa amri nyingine husaidia kila wakati.

Hatua ya 3: Muhimu

  1. Mpango huo unatofautisha kati ya aina za Ultralight kwa kusoma ukurasa wa 43 na 44. Ikiwa ukurasa wa 43 unasomeka na ukurasa wa 44 sio, kuna uwezekano kuwa Ultralight C. LAKINI, ikiwa unasoma / kuandika linda ukurasa wa 43 kadi haitambuliki kama Ultralight C (haina athari yoyote kwa chochote) Utambulisho sahihi wa Ultralight unapaswa kufanywa kupitia uthibitishaji na ufunguo (sikutekeleza hilo kwa sababu ya utulivu).
  2. Kabla ya kutumia amri "setpbit" na "kulinda" amri "dampo" lazima itumike, vinginevyo hali ya ulinzi wa kurasa haitajulikana.
  3. Ikiwa "unasoma / kuandika" unalinda kurasa za kwanza za kadi yako, haitafanya kazi tena na programu hii kwani ukurasa wa kwanza unasomwa kila wakati ili kuona ikiwa bado kuna kadi. Kama kurasa mbili za kwanza zinasomwa tu hata hivyo (UID imehifadhiwa hapo), hakuna maana ya kuzilinda.

Maswala ya utulivu

Nambari hii hutumia maktaba ya "standard" RC522 ya Arduino na maktaba ya 3DES kutoka https://github.com/Octoate/ArduinoDES. Ingawa maktaba ya RC522 hutumiwa kawaida, maktaba ya 3DES haionekani sana na lazima iwekwe kwa mikono.

Nambari imejaribiwa kwenye Arduino Uno. Lakini wakati wa kuiandika, nilikutana na shida nyingi za kushangaza kuhusu utulivu. Kwa namna fulani ama ujuzi wangu wa programu sio mzuri, moja ya maktaba zilizotumiwa ni thabiti au kuchanganya maktaba sio wazo nzuri.

Tafadhali kumbuka hili wakati unatumia nambari !!!

Kubadilisha au kutumia sehemu zake tu kunaweza kusababisha tabia ya kushangaza kama kugonga, kuchapisha vitu vya kushangaza au kupata muda wa kuisha au NAK wakati wa kusoma kutoka kwa kadi. Hii inaweza kutokea mahali popote kwenye nambari (ilinigharimu masaa mengi ya utatuaji). Ukipata sababu za hii, tafadhali nipe kidokezo.

Ilipendekeza: