Мазмуну:

Arduino боюнча RC522 менен Mifare Ultralight C колдонуу: 3 кадам
Arduino боюнча RC522 менен Mifare Ultralight C колдонуу: 3 кадам

Video: Arduino боюнча RC522 менен Mifare Ultralight C колдонуу: 3 кадам

Video: Arduino боюнча RC522 менен Mifare Ultralight C колдонуу: 3 кадам
Video: 2017 04 04 По коробкам #07 #Программаторы 3 #Взлом #смарт карт, #селфчекер 68HC05, #BiDiPro+адаптеры 2024, Ноябрь
Anonim
Arduino боюнча RC522 менен Mifare Ultralight C колдонуу
Arduino боюнча RC522 менен Mifare Ultralight C колдонуу

Карта ээлерин аныктоо же бир нерсе кылууга уруксат берүү үчүн 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 сынык тактасына негизделген бир Teensy негизделген DESFire чечими бар). Мындан тышкары, DESFire карталары абдан кымбат. Ошентип, кыйынчылык жакшы жана арзан чечим табуу болчу.

Берилген чечим арзан Mifare Ultralight "C" карталарына кытайдын арзан RC522 DIY модулун колдонуу менен толук жетүүнү камсыз кылат. Бул коддун негизинде, коопсуз 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 системанын түрүн (SAK = 0x00) аныкташат, анын ичинде Mifare Ultralight C. Андыктан карталар үчүн сурамжылоо жүргүзгөндө, жок дегенде SAK 0x00 баасы окурманда Ultralight C болушу мүмкүн экенин көрсөтүп турат..

Бул Ultralight C экенине ынануу үчүн, картага шифрленген аутентификация сурамы жөнөтүлүшү мүмкүн. Эгерде бул Ultralight C картасы БОЛБОСО, анда бул суроо түшүнүлбөйт жана жооп NAK (non-acknolege) болот.

Бул Ulralight C картасы болсо, сиз 8 байт жооп аласыз. Бул 8 байт 3DES шифринин жардамы менен картадагы сакталган ачкыч менен шифрленген "B" (RndB) туш келди саны.

Бул шифрленген RndB программанын ошол эле ачкычын колдонуу менен шифрлениши керек. Бул кокустук сан бир аз өзгөртүлөт (бир байт менен бурулган → 1 -байт 8 -байтка жылат жана калган бардык байттар бир байт төмөн түртүлөт, андан кийин RndB 'деп аталат). Андан кийин программа 8 байттык кокустук "А" санын (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 hello world" 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" жана "коргоо" буйруктарын колдонуудан мурун "dump" буйругун колдонуу керек, антпесе барактардын коргоо абалы билинбейт.
  3. Эгер сиз картаңыздын биринчи барактарын "окусаңыз/жазсаңыз", бул программа менен иштебейт, анткени биринчи барак дайыма карта бар же жок экенин билүү үчүн дайыма окулат. Биринчи эки барак баары бир окулгандыктан (UID ошол жерде сакталат), аларды коргоонун эч кандай мааниси жок.

Туруктуулук маселелери

Бул код Arduino үчүн "стандарттык" RC522 китепканасын жана https://github.com/Octoate/ArduinoDESтен 3DES китепканасын колдонот. RC522 китепканасы көбүнчө колдонулат, ал эми 3DES китепканасы анча кеңири тараган эмес жана кол менен орнотулушу керек.

Код Arduino Unoдо сыналган. Бирок аны жазып жатып, мен туруктуулукка байланыштуу көптөгөн кызыктай көйгөйлөргө туш болдум. Негедир менин программалоо жөндөмүм анча жакшы эмес, колдонулган китепканалардын бири туруксуз же китепканаларды аралаштыруу жакшы эмес.

Сураныч, кодду колдонууда муну эске алыңыз !!!

Аны өзгөртүү же анын айрым бөлүктөрүн колдонуу картада окуп жатканда кулап калуу, кызыктай нерселерди басып чыгаруу же күтүү убактысы же НАК алуу сыяктуу кызыктай жүрүм -турумга алып келиши мүмкүн. Бул коддун каалаган жеринде болушу мүмкүн (мага мүчүлүштүктөрдү оңдоонун көп сааты кетет). Мунун себебин тапсаңыз, мага кеңеш бериңиз.

Сунушталууда: