Përmbajtje:

Përdorimi i Mifare Ultralight C Me RC522 në Arduino: 3 hapa
Përdorimi i Mifare Ultralight C Me RC522 në Arduino: 3 hapa

Video: Përdorimi i Mifare Ultralight C Me RC522 në Arduino: 3 hapa

Video: Përdorimi i Mifare Ultralight C Me RC522 në Arduino: 3 hapa
Video: PËRDORIMI I "SOME & ANY". 2024, Korrik
Anonim
Përdorimi i Mifare Ultralight C Me RC522 në Arduino
Përdorimi i Mifare Ultralight C Me RC522 në Arduino

Përdorimi i teknologjisë RFID për të identifikuar mbajtësit e kartave ose për të autorizuar për të bërë diçka (hap derën etj.) Është një qasje mjaft e zakonshme. Në rast të aplikimit DIY, moduli RC522 përdoret gjerësisht pasi është mjaft i lirë dhe ka shumë kod për këtë modul.

Në shumicën e rasteve, UID e kartës përdoret për të "identifikuar" mbajtësin e kartës, dhe kartat Mifare Classic përdoren pasi ato janë të lira dhe shpesh përfshihen kur blini një modul RC522.

Por siç mund ta dini, sistemi Mifare Classic është hakuar për disa vite dhe nuk konsiderohet më i sigurt. Sistemi i kriptimit Crypto1 i përdorur nga kartat klasike mund të kapërcehet dhe ato mund të ri-shkruhen ku të dhënat e një UID mund të riprogramohen (karta magjike).

Pra, për çdo aplikim përkatës të sigurisë, përdorimi i kartave Mifare Classic nuk rekomandohet! E njëjta gjë vlen për (shumicën) e sistemeve NTAG dhe Mifare Ultralight

Pra, zgjedhja është ose të përdorni një sistem profesional ose të përpiqeni të përdorni një sistem RFID më të sigurt. Sistemet në dispozicion janë Mifare Ultralight C, Mifare DESFire dhe Mifare Plus. Meqenëse ka shumë sisteme profesionale që përdorin këto sisteme më të sigurta, për komunitetin DIY praktikisht nuk ka zgjidhje (ekziston një zgjidhje DESFire e bazuar në Teensy, e cila bazohet në bordin më të shtrenjtë të daljes PN523). Për më tepër, kartat DESFire janë mjaft të shtrenjta. Pra, sfida ishte gjetja e një zgjidhjeje më të mirë dhe më të lirë.

Zgjidhja e paraqitur siguron qasje të plotë në kartat e lira Mifare Ultralight "C" duke përdorur modulin e lirë kinez RC522 DIY. Bazuar në këtë kod, i sigurti Mifare Ultralight C mund të përdoret në aplikimet DIY.

Hapi 1: Parakushtet

Parakushtet
Parakushtet

Edhe pse RC522 është i dizajnuar mirë, në shumicën e rasteve është ndërtuar dobët pasi disa përbërës janë të dimensionuar dobët. Kjo çon në reputacionin e keq të modulit që ka ndjeshmëri të ulët dhe jo të gjitha llojet e kartave do të identifikohen. Sidomos Mifare Ultralight C as nuk do të identifikohet dhe as nuk do të jetë e mundur të lexohen kartat.

Problemi kryesor është specifikimi i induktorëve L1 dhe L2. Siç përshkruhet në https://ham.marsik.org/2017/04/using-cheap-rc522-nfc-reader-to-read.html. Vetëm duke i zëvendësuar këta induktorë në ata të përshtatshëm p.sh. FERROCORE CW1008-2200 befas RC522 tregon se cili është potenciali i tij i vërtetë.

Pra, para se të provoni kodin e dhënë, DUHET Zëvendësoni induktorët. Thjesht nuk do të funksionojë me induktorët e para-instaluar!

Sfondi i gjithë kësaj është se kartat Ultralight C janë mjaft të etura për energji. Kjo energji sigurohet nga fusha RF RC522. Për shkak të fuqisë së ulët të induktorëve, fusha e energjisë nuk është mjaft e fuqishme për të fuqizuar Ultralight C. Kartat e tjera si Mifare Classic thjesht kanë nevojë për më pak energji dhe për këtë arsye funksionojnë mjaft të qëndrueshme.

Hapi 2: Si funksionon?

Si punon?
Si punon?
Si punon?
Si punon?
Si punon?
Si punon?
Si punon?
Si punon?

Pra, pasi të keni modifikuar modulin RC522, si mund ta përdorni Mifare Ulralight C për aplikimin tuaj?

Truku qëndron në faktin se Mifare Ultralight C mbështet një vërtetim të fjalëkalimit bazuar në shifrën 3DES. Duke përdorur këtë fjalëkalim, përmbajtja e kartës mund të bëhet "vetëm për lexim" ose plotësisht e padukshme për një përdorues të paautorizuar.

Për të përdorur këtë mbrojtje me fjalëkalim, fjalëkalimi duhet të shkruhet në kartë dhe faqet duhet të mbrohen. Pasi të keni mbaruar, mund të verifikoni kartën në aplikacionin tuaj ose thjesht duke kërkuar vërtetim të bazuar në fjalëkalim ose të dhëna shtesë të gatshme nga një zonë e mbrojtur. Vetëm nëse kjo është e suksesshme ju e dini që mund t'i besoni UID -it të dhënë në kartë.

Kujdes: pa vërtetimin e bazuar në fjalëkalim ju ende nuk mund t'i besoni një karte Mifare Ultralight C, pasi ka edhe "karta magjike" që simulojnë Ultralight C.

Çdo kartë e pavarur nga teknologjia (nëse është në frekuencën e duhur) do të përgjigjet me UID-in e tyre kur mundësohet nga fusha RF dhe kërkon të identifikohet. Për më tepër ato ofrojnë një vlerë SAK duke siguruar informacion minimal në lidhje me llojin e kartës që është e pranishme. Fatkeqësisht, të gjithë Mifare Ultralight dhe NTAG identifikohen si lloji i syme (SAK = 0x00), përfshirë Mifare Ultralight C. Pra, kur votoni për kartat, të paktën vlera SAK prej 0x00 do të japë një aluzion se mund të ketë një Ultralight C në lexuesin Me

Për t'u siguruar që është një Ultralight C, një kërkesë për vërtetim të koduar mund t'i dërgohet kartës. Nëse kjo NUK është një kartë Ultralight C, kjo kërkesë nuk do të kuptohet, dhe përgjigja do të jetë një NAK (jo e rreme).

Nëse kjo është një kartë Ulralight C, do të merrni një përgjigje prej 8 bajtësh. Këto 8 Bajt janë një numër i rastësishëm "B" (RndB) i koduar nga çelësi i ruajtur në kartë duke përdorur shifrën 3DES.

Ky RndB i koduar duhet të deshifrohet duke përdorur të njëjtin çelës në program. Ky numër i rastësishëm më pas modifikohet paksa (i rrotulluar me një bajt → bajt 1 do të zhvendoset në bajt 8 dhe të gjithë bajtët e tjerë shtyhen një bajt më poshtë, atëherë quhet RndB’). Programi më pas gjeneron një numër të rastit 8 Bajt "A" në vetvete (RndA) dhe e lidh këtë RndA me RndB 'të modifikuar. Kjo është e koduar përsëri duke përdorur çelësin dhe dërgojeni në kartë.

Karta e deshifron mesazhin dhe kontrollon nëse RndB’përshtatet me RndB të gjeneruar më parë në kartë. Nëse ato përputhen, karta tani e di, që programi e di çelësin.

Në këtë pikë, programi ende nuk e di nëse karta e di çelësin dhe prandaj mund t'i besohet apo jo. Për ta arritur këtë, karta tani rrotullon RndA të deshifruar me një bajt, pastaj i kodon këto bajt duke përdorur çelësin dhe i dërgon përsëri.

Programi do të deshifrojë përgjigjen e kartës dhe do të kontrollojë nëse RndA origjinale dhe RndA e përgjigjur përputhen. VETYM PASTAJ të dy njësitë (programi dhe karta) e dinë se ndajnë njohuritë për të njëjtin çelës.

Ky proces përdoret vetëm për të vërtetuar. I gjithë komunikimi i mëtejshëm është gjithmonë në "tekst të qartë".

Edhe pse ka karta "magjike Ultralight C" ku UID mund të modifikohet, vetë çelësi nuk mund të merret nga karta dhe shifra 3DES është mjaft e sigurt. Çelësi është një çelës 16 Byte, kështu që një qasje e forcës brutale për të marrë çelësin do të marrë pak kohë.

Siç u tha, komunikimi para vërtetimit dhe pas vërtetimit është gjithmonë në tekst të qartë (aka jo i koduar). Kur shkruani një çelës të ri në kartë, përmbajtja e çelësit mund të nuhatet duke përdorur pajisjet e duhura. Kështu që ju lutemi shkruani çelësin vetëm në një mjedis të sigurt dhe mbajeni sekret çelësin.

Kur përdorni kartën Ultralight C

Karta Ultralight C ka veçori të shumta sigurie të ndërtuara në:

  1. Memoria e Programimit Një Orar (OTP). Në këtë zonë mund të shkruhen copa, autobusi të mos fshihet.
  2. Një banak me një drejtim 16 bitësh. Ky numërues mund të rritet vetëm kur të arrihet.
  3. Një mbrojtje "shkruaj" ose "lexo/shkruaj" e faqeve në kujtesë. Vetëm nëse vërtetohen me çelësin, këto faqe mund të lexohen ose modifikohen.
  4. Ngrirja / bllokimi i faqeve individuale për tu mbrojtur nga çdo modifikim.

As përdorimi i OTP, numëruesi 16 bit dhe as përdorimi i bit bllokues nuk zbatohet në kodin e dhënë, por lehtë mund të zbatohet bazuar në informacionin e dhënë në https://www.nxp.com/docs/en/data- fletë/MF0ICU2.pd…

Meqenëse mbrojtja me çelës është thelbësore për përdorimin e Mifare Ultralight C, të gjitha funksionet përkatëse janë të pranishme.

Të gjitha komandat përdoren në monitorin Serial me "linjë të re vetëm" dhe me 115200 Baud

  • "Author 49454D4B41455242214E4143554F5946" do të kërkojë një vërtetim me çelësin e dhënë (në këtë rast çelësi standard Mifare Ultralight C)
  • "Hale" do të hedh përmbajtjen e kartës aq sa ato janë të dukshme. Në rast se faqet mbrohen me çelës, këto faqe mund të mos jenë të dukshme deri në një vërtetim të mëparshëm me çelës. Në dy kolonat e para tregohet nëse faqet janë të kyçura ose qasja është e kufizuar.
  • "NewKey 49454D4B41455242214E4143554F5946" do të shkruajë një çelës të ri në kartë. Çelësi shkruhet në faqet 44 deri 47. Kjo do të funksionojë vetëm nëse këto faqe nuk janë as të kyçura dhe as të mbrojtura pa një vërtetim të mëparshëm.
  • "wchar 10 hello world" do të shkruajë "përshëndetje botë" duke filluar nga faqja 10. Përsëri, vetëm këto vepra të faqeve nuk janë as të kyçura dhe as të mbrojtura pa një vërtetim të mëparshëm. Kur përpiqeni të shkruani sipër faqes 39 ose poshtë faqes 4 kjo do të nxisë një gabimi ose të dhënat injorohen pasi këto faqe nuk janë memorie përdoruesi.
  • "Whex 045ACBF44688" do të shkruajë vlera Hex drejtpërdrejt në memorie, zbatohen kushtet e mëparshme.
  • "Mbro 30" mbron të gjitha faqet nga faqja 30 e lart. Në varësi të lejes, këto faqe mund të modifikohen ose lexohen vetëm pas një vërtetimi paraprak me çelës. Përdorimi i "mbrojtur" me vlera më të larta se 47 do t'i vendosë të gjitha faqet në "të pambrojtura" P INRFSHIR ÇELEYSIN në faqet 44-47 (të cilat mund të modifikohen, por jo të lexohen). Për të parandaluar ndryshimin e çelësit, mbrojtja duhet të fillojë të paktën në faqen 44.
  • "Setpbit 0" vendos bitin e mbrojtjes dhe vendos nëse faqet e mbrojtura lexohen vetëm ("setpbit 1") ose as nuk mund të lexohen pa u shkruar ("setpbit 0") pa një vërtetim të mëparshëm me çelës.

Jo të gjitha komandat mund të përdoren menjëherë pasi karta u zbulua. Një "hale" më parë në një komandë tjetër ndihmon gjithmonë.

Hapi 3: E rëndësishme

  1. Programi bën dallimin midis llojeve Ultralight duke lexuar faqet 43 dhe 44. Nëse faqja 43 është e lexueshme dhe faqja 44 jo, ka shumë të ngjarë të jetë një Ultralight C. POR, nëse lexoni/shkruani mbroni faqen 43 karta nuk njihet më si Ultralight C (nuk ka asnjë efekt në asgjë) Identifikimi i duhur i Ultralight duhet të bëhet përmes vërtetimit me çelës (unë nuk e zbatova atë për arsye stabiliteti).
  2. Para përdorimit të komandave "setpbit" dhe "mbrojtur" komanda "dump" duhet të përdoret, përndryshe statusi i mbrojtjes së faqeve nuk do të dihet.
  3. Nëse "lexoni/shkruani" mbroni faqet e para të kartës suaj, nuk do të funksionojë më me këtë program pasi faqja e parë lexohet vazhdimisht për të parë nëse ka akoma një kartë të pranishme. Meqenëse dy faqet e para lexohen gjithsesi (UID ruhet atje), nuk ka kuptim t'i mbroni ato.

Çështjet e stabilitetit

Ky kod përdor bibliotekën "standard" RC522 për Arduino dhe një bibliotekë 3DES nga https://github.com/Octoate/ArduinoDES. Ndërsa biblioteka RC522 përdoret mjaft shpesh, biblioteka 3DES nuk duket aq e përhapur dhe duhet të instalohet me dorë.

Kodi është testuar në një Arduino Uno. Por ndërsa e shkruaja atë, unë hasa në shumë probleme të çuditshme në lidhje me stabilitetin. Disi ose aftësitë e mia programuese nuk janë aq të mira, njëra nga bibliotekat e përdorura është e paqëndrueshme ose përzierja e bibliotekave nuk është ide e mirë.

Ju lutemi mbani në mend këtë kur përdorni kodin !!!

Ndryshimi i tij ose përdorimi i vetëm pjesëve të tij mund të çojë në sjellje të çuditshme si përplasja, shtypja e gjërave të çuditshme ose marrja e kohës ose NAK kur lexoni nga karta. Kjo mund të ndodhë në çdo vend në kod (më ka kushtuar shumë orë korrigjim). Nëse gjeni arsyen (at) për këtë, ju lutem më jepni një sugjerim.

Recommended: