Мазмұны:

Arduino -да Mifare Ultralight C RC522 көмегімен: 3 қадам
Arduino -да Mifare Ultralight C RC522 көмегімен: 3 қадам

Бейне: Arduino -да Mifare Ultralight C RC522 көмегімен: 3 қадам

Бейне: Arduino -да Mifare Ultralight C RC522 көмегімен: 3 қадам
Бейне: Arduino Метро Единый билет RC522 Card Read Module RFID NFC 2024, Қараша
Anonim
Mifare Ultralight C Arduino -да RC522 көмегімен
Mifare Ultralight C Arduino -да RC522 көмегімен

Карта ұстаушыларды анықтау немесе бірдеңе жасауға рұқсат беру үшін RFID технологиясын қолдану (есікті ашу және т.б.) - бұл кең таралған тәсіл. DIY қолданған жағдайда RC522 модулі кеңінен қолданылады, себебі ол өте арзан және бұл модуль үшін көптеген кодтар бар.

Көп жағдайда картаның UID картаны ұстаушыны «сәйкестендіру» үшін пайдаланылады, ал Mifare Classic карталары арзан болғандықтан қолданылады және RC522 модулін сатып алу кезінде жиі қосылады.

Сіз білетіндей, Mifare Classic жүйесі бірнеше жылдар бойы бұзылған және ол енді қауіпсіз деп саналмайды. Классикалық карталарда қолданылатын Crypto1 шифрлау жүйесін жеңуге болады және UID деректерін қайта бағдарламалауға болатын қайта жазылатын карталар (сиқырлы карталар).

Сондықтан қауіпсіздікке қатысты кез келген қосымша үшін Mifare Classic карталарын қолдану ұсынылмайды! Бұл көпшілік NTAG және Mifare Ultralight жүйелеріне де қатысты

Сондықтан таңдау кәсіби жүйені қолдану немесе қауіпсіз RFID жүйесін қолдану болып табылады. Қол жетімді жүйелер - Mifare Ultralight C, Mifare DESFire және Mifare Plus. Бұл қауіпсіз жүйелерді қолданатын көптеген кәсіби жүйелер болғандықтан, DIY қауымдастығы үшін іс жүзінде ешқандай шешімдер жоқ (қымбат тұратын PN523 тақтасына негізделген DESFire Teensy негізіндегі бір шешім бар). Сонымен қатар DESFire карталары өте қымбат. Сондықтан мәселе жақсы және арзан шешім табу болды.

Ұсынылған шешім қытайлық арзан RC522 DIY модулін қолдана отырып, арзан Mifare Ultralight «C» карталарына толық қол жеткізуді қамтамасыз етеді. Осы код негізінде қауіпсіз Mifare Ultralight C құрылғысын DIY қосымшаларында қолдануға болады.

1 -қадам: алғышарттар

Алғы шарттар
Алғы шарттар

RC522 жақсы жобаланғанына қарамастан, ол көп жағдайда нашар құрылады, себебі кейбір компоненттер өлшемі нашар. Бұл модульдің нашар беделіне әкеледі, себебі оның сезімталдығы төмен, карталардың барлық түрлері анықталмайды. Әсіресе Mifare Ultralight C анықталмайды және карталарды оқу мүмкін болмайды.

Негізгі мәселе - L1 және L2 индукторларының спецификациясы. Http://ham.marsik.org/2017/04/using-cheap-rc522-nfc-reader-to-read.html сайтында сипатталғандай. Тек осы индукторларды сәйкес келетіндерге ауыстыру арқылы. FERROCORE CW1008-2200 кенеттен RC522 оның нақты әлеуетін көрсетеді.

Сондықтан берілген кодты қолданар алдында индукторларды ауыстыру қажет. Бұл жай ғана алдын ала орнатылған индукторлармен жұмыс істемейді!

Осының барлығының астарында Ultralight C карталарының энергияға деген қажеттілігі бар екендігі айтылады. Бұл энергия RC522 RF өрісімен қамтамасыз етіледі. Индукторлардың амперінің төмен болуына байланысты, энергия өрісі Ultralight C қуатына жеткілікті күшті емес. Mifare Classic сияқты басқа карталар аз қуатты қажет етеді, сондықтан тұрақты жұмыс істейді.

2 -қадам: Бұл қалай жұмыс істейді?

Бұл қалай жұмыс істейді?
Бұл қалай жұмыс істейді?
Бұл қалай жұмыс істейді?
Бұл қалай жұмыс істейді?
Бұл қалай жұмыс істейді?
Бұл қалай жұмыс істейді?
Бұл қалай жұмыс істейді?
Бұл қалай жұмыс істейді?

Сонымен, RC522 модулін өзгерткеннен кейін, Mifare Ulralight C бағдарламасын қалай қолдануға болады?

Mifare Ultralight C 3DES шифрына негізделген құпия сөзді растауды қолдайды. Бұл құпия сөзді қолдану арқылы картаның мазмұнын рұқсат етілмеген пайдаланушыға «тек оқуға» немесе мүлдем көрінбейтін етіп жасауға болады.

Бұл парольдік қорғанысты пайдалану үшін парольді картаға жазу керек және парақтарды қорғау қажет. Аяқтағаннан кейін, сіз өзіңіздің қосымшаңыздағы картаны парольге негізделген аутентификацияны немесе қорғалатын аймақтан қосымша дайын деректерді сұрау арқылы тексере аласыз. Егер бұл сәтті болса ғана, сіз картада берілген UID -ке сене алатындығыңызды білесіз.

Абайлаңыз: құпия сөзге негізделген аутентификациясыз сіз әлі де Mifare Ultralight C картасына сене алмайсыз, өйткені Ultralight C модельдейтін «сиқырлы карталар» бар.

Технологиядан тәуелсіз әрбір карта (егер дұрыс жиілікте болса) RF өрісімен жұмыс жасағанда UID арқылы жауап береді және өздерін сәйкестендіруді сұрайды. Сонымен қатар, олар картаның түрі туралы ең аз ақпарат беретін SAK мәнін ұсынады. Өкінішке орай, барлық Mifare Ultralight және NTAG Mifare Ultralight C. қоса алғанда, жүйе түрін (SAK = 0x00) анықтайды, сондықтан карталарға дауыс беру кезінде кемінде SAK 0x00 мәні оқырманда Ultralight C болуы мүмкін екенін көрсетеді..

Бұл Ultralight C екеніне көз жеткізу үшін картаға шифрланған аутентификацияға сұрау жіберуге болады. Егер бұл Ultralight C картасы ЕМЕС болса, бұл сұраныс түсінілмейді, ал жауап NAK болады (рұқсат етілмеген).

Егер бұл Ulralight C картасы болса, сіз 8 байтты жауап аласыз. Бұл 8 байт - 3DES шифры көмегімен картада сақталған кілтпен шифрланған кездейсоқ «В» (RndB) саны.

Бұл шифрланған RndB бағдарламада сол кілтті пайдаланып шифрды ашу керек. Бұл кездейсоқ сан сәл өзгертіледі (бір байтпен бұрылады → 1 байт 8 байтқа жылжиды, ал қалған байттардың бәрі бір байт төмен итеріледі, содан кейін RndB 'деп аталады). Содан кейін бағдарлама 8 байтты кездейсоқ «A» санының (RndA) генерациясын жасайды және осы RndA -ны өзгертілген RndB -ге қосады. Бұл қайтадан кілт арқылы шифрланады және картқа жіберіледі.

Карточка хабарламаны шешеді және RndB картасында бұрын жасалған RndB -ке сәйкес келетінін тексереді. Егер олар сәйкес келсе, карта енді бағдарламаның кілтті білетінін біледі.

Бұл кезде бағдарлама картаның кілтті білетінін білмейді, сондықтан оған сенуге болады ма, жоқ па. Бұған қол жеткізу үшін карта енді шифрланған RndA -ны бір байтқа айналдырады, содан кейін бұл байттарды кілт арқылы шифрлайды және оларды кері жібереді.

Содан кейін бағдарлама картаның жауабының шифрын шешеді және бастапқы RndA мен жауап берілген RndA сәйкес келетінін тексереді. СОНДА ғана екі субъект те (бағдарлама мен карта) бір кілт туралы біліммен бөлісетінін біледі.

Бұл процесс тек аутентификация үшін қолданылады. Әрі қарайғы барлық байланыс әрқашан «таза мәтінде» болады.

UID өзгертуге болатын «сиқырлы Ultralight C» карталары болса да, картаның кілтін алу мүмкін емес және 3DES шифры жеткілікті қауіпсіз. Кілт - 16 байтты кілт, сондықтан кілтті алу үшін қатал күшке көшу біраз уақытты алады.

Жоғарыда айтылғандай, аутентификация алдындағы және түпнұсқалық растамадан кейінгі байланыс әрқашан таза мәтінде болады (шифрланбаған). Картаның жаңа кілтін жазған кезде, тиісті жабдықты қолдану арқылы кілттің мазмұнын иіскеп алуға болады. Сондықтан кілтті қауіпсіз ортада ғана жазыңыз және кілтті құпия ұстаңыз.

Ultralight C картасын пайдалану кезінде

Ultralight C картасында бірнеше қауіпсіздік мүмкіндіктері бар:

  1. Бір реттік бағдарламалау (OTP) жады. Бұл аймақта биттерді жазуға болады, автобус жойылмайды.
  2. 16 биттік бір жақты есептегіш. Бұл есептегіш кіру кезінде ғана өсуі мүмкін.
  3. Жадтағы беттерді «жазу» немесе «оқу/жазу» қорғау. Тек кілтпен расталған жағдайда, бұл беттерді оқуға немесе өзгертуге болады.
  4. Кез келген өзгертулерден қорғау үшін жеке беттерді қатыру / бұғаттау.

Берілген кодта OTP, 16 биттік есептегіш немесе блоктаушы бит қолданылмайды, бірақ https://www.nxp.com/docs/en/data- сайтында берілген ақпарат негізінде оңай орындалады. парақ/MF0ICU2.pd…

Mifare Ultralight C пайдалану үшін кілтпен қорғау маңызды болғандықтан, барлық тиісті функциялар бар.

Барлық командалар сериялық мониторда «тек жаңа жолмен» және 115200 Baud көмегімен қолданылады

  • «Auth 49454D4B41455242214E4143554F5946» берілген кілтпен аутентификацияны сұрайды (бұл жағдайда стандартты Mifare Ultralight C кілті)
  • «Демпинг» картаның мазмұнын көрінетін жерге дейін лақтырады. Егер беттер кілтпен қорғалған болса, бұл беттер кілтпен алдыңғы түпнұсқалық растамасы болғанша көрінбеуі мүмкін. Алғашқы екі бағанда беттер құлыпталған немесе кіру шектелген жағдайда көрсетіледі.
  • «NewKey 49454D4B41455242214E4143554F5946» картаға жаңа кілт жазады. Кілт 44 -тен 47 -ге дейінгі беттерге жазылған. Бұл тек егер бұл беттер бұрынғы түпнұсқалық растамасыз құлыпталмаса немесе қорғалмаса ғана жұмыс істейді.
  • «wchar 10 сәлем әлемі» 10 -беттен бастап «сәлем әлемі» деп жазады. Тағы да, бұл беттердің жұмысы тек қана түпнұсқалық растамасыз құлыпталмайды және қорғалмайды. 39 -беттің үстінде немесе 4 -беттің астына жазуға тырысқанда, бұл қате немесе деректер еленбейді, себебі бұл беттер пайдаланушы жады емес.
  • «Whex 045ACBF44688» Hex мәндерін жадқа тікелей жазады, алдыңғы шарттар қолданылады.
  • «30 қорғау» 30 беттен жоғары барлық беттерді қорғайды. Рұқсатқа байланысты бұл беттерді кілтпен алдын ала аутентификациядан кейін ғана өзгертуге немесе оқуға болады. Мәндері 47-ден жоғары «қорғау» функциясын қолдану барлық беттерді 44-47 беттердегі КІЛТІН қоса алғанда «қорғалмаған» күйге келтіреді (оны тек өзгертуге болады, бірақ оқылмайды). Кілтті өзгертпеу үшін қорғаныс кем дегенде 44 беттен басталуы керек.
  • «Setpbit 0» қорғаныс битін орнатады және қорғалған беттер кілтпен бұрынғы аутентификациясынсыз тек оқылатынын («setpbit 1») немесе оқылмайтынын («setpbit 0») шешілмейтінін шешеді.

Картаны анықтағаннан кейін бірден барлық командаларды қолдануға болмайды. Бұрын басқа командаға «қоқыс» әрқашан көмектеседі.

3 -қадам: маңызды

  1. Бағдарлама 43 және 44 беттерді оқу арқылы Ultralight түрлерін ажыратады. Егер 43 -бетті оқуға болады, ал 44 -бетті оқуға болмайды, бірақ бұл Ultralight C., ал егер сіз 43 -бетті оқысаңыз/жазсаңыз, карта бұдан былай деп танылмайды. Ultralight C (ешнәрсеге әсер етпейді) Ultralight сәйкестендіруді кілтпен аутентификация арқылы жасау керек (мен оны тұрақтылыққа байланысты енгізген жоқпын).
  2. «Setpbit» және «protect» пәрмендерін қолданар алдында «dump» пәрменін қолдану керек, әйтпесе беттердің қорғаныс күйі белгісіз болады.
  3. Егер сіз картаңыздың бірінші беттерін «оқысаңыз/жазсаңыз», ол енді бұл бағдарламамен жұмыс істемейді, себебі картаның әлі бар -жоғын білу үшін бірінші бет үнемі оқылады. Алғашқы екі бет тек бәрібір оқылатындықтан (UID сонда сақталады), оларды қорғаудың мағынасы жоқ.

Тұрақтылық мәселелері

Бұл код Arduino үшін «стандартты» RC522 кітапханасын және https://github.com/Octoate/ArduinoDES 3DES кітапханасын пайдаланады. RC522 кітапханасы жиі қолданылатындықтан, 3DES кітапханасы соншалықты кең таралмаған сияқты және оны қолмен орнату қажет.

Код Arduino Uno -да сыналған. Бірақ оны жазу барысында мен тұрақтылыққа қатысты көптеген оғаш мәселелерге тап болдым. Менің бағдарламалау дағдыларым жақсы емес, пайдаланылған кітапханалардың бірі тұрақсыз немесе кітапханаларды араластыру жақсы идея емес.

Кодты қолданғанда осыны ескеріңіз !!!

Оны өзгерту немесе оның бір бөлігін ғана пайдалану картадан оқу кезінде апатқа ұшырау, біртүрлі заттарды басып шығару немесе күту уақыты немесе NAK алу сияқты оғаш мінез -құлыққа әкелуі мүмкін. Бұл кодтың кез келген жерінде болуы мүмкін (бұл маған көптеген сағаттарды жөндеу). Егер сіз мұның себебін тапсаңыз, маған кеңес беріңіз.

Ұсынылған: