Універсальний RFID ключ

Останнім часом широкої популярності набули RFID проекти і різні пристрої на базі цієї технології, які можуть застосовуватися в системах безпеки і охорони, в пристроях контролювання доступу в різні приміщення за допомогою RFID ключів. На деяких підприємствах і організаціях такі системи, за рахунок спеціалізованого програмного забезпечення, застосовуються для фіксування робочого часу, обліку матеріальних цінностей та ін.

Дешеві RFID технології протягом тривалого часу були досить небезпечними, і вони до сих пір використовуються в системах контролювання доступом. Тому було вирішено виготовити універсальний RFID ключ, який зможе емулювати 125 кГц RFID мітки. У статті ми розглянемо просту конструкцію на мікроконтролері Atmel AVR, яка дозволить емулювати RFID ключ, знаючи його серійний номер. Програма мікроконтролера написана в середовищі Arduino.

RFID

Рішення автора опублікувати цю статтю пов'язано з бажанням ознайомити користувачів з конструктивними недоліками, властивими найпершої реалізації RFID, а також дозволити іншим створити свій власний універсальний RFID ключ. Під час розробки потрібно враховувати кілька важливих моментів:

  • справу мати належить з 125 кГц RFID пристроями, які використовують той же метод кодування, що і в цьому проекті;
  • необхідно знати номер RFID мітки (який нанесений зазвичай на зворотну сторону мітки / карти) тому цей номер вводиться в універсальний RFID ключ для його емуляції.

RFID - радіочастотна ідентифікація, технологія використовується для опису самих різних стандартів, які дозволяють передавати дані, що зберігаються в ключі, зчитувача (контролеру) без використання дротового зв'язку. Є кілька стандартів, форматів кодування і частот для загального користування. Ми зупинимося на стандарті 125 кГц, який є загальним для механізмів контролювання доступом.

Зазвичай 125 кГц RFID мітки мають розміри візитної картки або невеликого брелока і поміщені в пластикову оболонку. Фізично мітка складається з котушки індуктивності, підключеної до мікроконтролера, і коли мітка виявляється в безпосередній близькості від пристрою, що зчитує, енергія індуктивним способом передається від зчитувача до внутрішнього мікроконтролера RFID мітки.

Енергія, що надходить від пристрою, що зчитує, має подвійне призначення: по-перше, вона забезпечує живлення мікроконтролера мітки, по-друге, забезпечує середовище комунікації для переданих від мітки даних. Після подачі живлення RFID мітка модулює запрограмований в ній бітовий шаблон, використовуючи сигнал, який може виявити, пристрій що зчитує. Зчитаний бітовий шаблон порівнюється із запрограмованим шаблоном в пам'яті контролера дверей (наприклад), і якщо вони збігаються, двері будуть розблоковані.

1

Автор для експериментів використовував бітовий шаблон, який виглядав наступним чином:

1111111110010111000000000000001111100010111110111101001111010000

Що насправді він означає, ми розглянемо нижче.

Однією з цікавих особливостей обміну даними між міткою і зчитувачем є те, що дані кодуються з застосуванням алгоритму кодування Манчестер, тому можуть передаватися по одному каналу, тому що у разі застосування цього алгоритму гарантується відновлення приймачем (зчитувальних пристроїв) тактового сигналу з послідовності імпульсів. У цій схемі логічної одиниці і нуля відповідності не рівні напруги, а перепади. Так логічній одиниці поставлений у відповідність перехід з низького рівня на високий, а логічному нулю - перехід з високого на низький.

Фактично, дані передаються міткою шляхом короткого замикання виходу котушки - це створює додаткове навантаження на передавальний пристрій в зчитувачі, яке може бути чітко визначене.

Багато RFID карти (ключі) мають на зворотному боці надрукований номер (див. Малюнок), який говорить, які дані зберігаються в картці.

RFID key, картка

Наприклад, картка з нанесеним номером 0007820706 119,21922 містить бітовий шаблон:

1111111110010111000000000000001111011110101001010101000010101100

Перші 9 біт 111111111 - це стартова послідовність, яка для пристрою, що зчитує означає, що далі буде відправлена послідовність даних. Також пристрій, що зчитує використовує цю послідовність для фіксування даних на картці.

Дані, які зберігаються в ключі, передаються 4 групами з бітом парності в кінці кожної групи. Послідовність може виглядати так:

00101 11000 00000 00000 01111 01111 01010 01010 10100 00101 0110 0

Якщо опустити біт парності, то отримаємо такий вигляд послідовності:

BIN 0010 1100 0000 0000 0111 0101 0101 1010  0010 0010 0110 0
HEX 2 C 0 0 7 7 5 5 A 2 контрольна 
сума
STOP

Переданий код в шістнадцятковому форматі: 2C 0077 55A2. Якщо розбити його на три групи, то отримаємо: 2C, 0077 (десяткове значення 119), 55A2 (десяткове значення 21922), що відповідає номеру RFID картки 119,21922.

Це ж число, надруковане на карті в десятковій формі - 0007820706, відповідає 7755A2 (HEX). Константа 2C передається всіма картками цієї системи - ідентифікатор RFID системи. Саме вказане число в десяткового формі (0007820706) буде потрібно нам для емуляції RFID ключа.

Останні дані, що передаються картою - це контрольна сума, яка дозволить переконатися, що всі дані були отримані.