Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/197: Рейтинг темы: голосов - 197, средняя оценка - 4.89
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320

Как записать RFID RC522 (методика записи)

15.07.2017, 12:15. Показов 37840. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если комута понадобится методика записи



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
// МЕТОДИКА ЗАПИСИ КАРТЫ:
//
// 1) Определить параметры карты ()
// 2) Указать место записи
// 3) Ввести ключ А
// 4) Ввести ключ Б
// 5) Записать инфорацию
// 6)
void RFID_Write(bool Wr) {
  // Определим начальный ключ для доступа к сектору, это по умолчанию заводской ключ
  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }
  if ( ! mfrc522.PICC_IsNewCardPresent())
    return;
 
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial())
    return;
  // Определим параметры записи, что и куда записывваем.
  byte sector         = 1;                          // куда записываем (Это сектор)
  byte blockAddr      = 4;                          // куда записываем (Это блок) см. даташит
  byte dataBlock[]    = {                           // А тут что записываем 16 байтов
    0x9B, 0x83, 0x7B, 0xB5, //  1,  2,   3,  4,
    0xC3, 0x5D, 0xF6, 0xC9, //  5,  6,   7,  8,
    0xFE, 0x31, 0x32, 0x30, //  9, 10, 255, 12,
    0x34, 0xFF, 0x00, 0x00  // 13, 14,  15, 16
  };
  byte trailerBlock   = 7; // Это блок трелер (в него записываются ключи, флаги доступа к целому сектору!!!)
  byte status;
  byte buffer[18];
  byte size = sizeof(buffer);
 
 
  // попробуем авторизаватся на карточке (в трелере №7 с клечем key) это ключ А, в случае успеха вернет STATUS_OK
  // а если что то другое значит пароль не правильный.
  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK) {
    Serial.print("Авторизация с паролем А правильная");
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
 
  //Она как бы в память читает с карты все жданные
  mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key, sector);
 
  // Прочитаем данные с этого блока которые сейчас там записаны. если нормально прочиталось вернет STATUS_OK
  // если что то другое то ошибка
  status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);
  if (status != MFRC522::STATUS_OK) {
    Serial.print("Данные с карты прочитаны успещно");
    Serial.println(mfrc522.GetStatusCodeName(status));
  }
 
  // Выведим что сейчас есть на карте.
  Serial.print("Data in block "); Serial.print(blockAddr); Serial.println(":");
  dump_byte_array(buffer, 16); Serial.println();
  Serial.println();
 
  // Авторизовываемся по ключу Б, если все ок вернет STATUS_OK, 
  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, trailerBlock, &key, &(mfrc522.uid));
  if (status != MFRC522::STATUS_OK) {
    Serial.print("Авторизация по ключу Б успешна");
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }
 
  // Дальше тупа запишем данные которые мы подготовили ранее в место которое тоже подготовлили!
  Serial.print("Запись данных в блок:"); Serial.print(blockAddr);
  Serial.println(" ...");
  dump_byte_array(dataBlock, 16); Serial.println();  // эта страка на запись принимает массив из 16 элементов.пишет в 16 рич сис.сч.
  status = mfrc522.MIFARE_Write(blockAddr, dataBlock, 16); // сама запись, если успешно все запишется то вернет как всегда статус_ок
  if (status != MFRC522::STATUS_OK) {
    Serial.print("Данные были записаны на карту успешно!");
    Serial.println(mfrc522.GetStatusCodeName(status));
  }
  Serial.println();
 
  // Дальше прочитаем данные которые мы записали по сути повторяем предыдущий блок..
 
  Serial.print("Читаем блок:"); Serial.print(blockAddr);
  Serial.println(" ...");
  status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);
  if (status != MFRC522::STATUS_OK) {
    Serial.print("Данные из блока прочитаны успешно!");
    Serial.println(mfrc522.GetStatusCodeName(status));
  }
  Serial.print("Выводим информацию в монитор:"); Serial.print(blockAddr); Serial.println(":");
  dump_byte_array(buffer, 16); Serial.println();
 
 
 
 
 
 
 
 
 
  // Выключаем карту
  mfrc522.PICC_HaltA();
  // Отключаем шифрование
  mfrc522.PCD_StopCrypto1();
 
 
}
 
 
 
 
 
 
 
void dump_byte_array(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
}
2
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.07.2017, 12:15
Ответы с готовыми решениями:

RFID-RC522
У меня на плате модуля RFID-RC522 разломался смд конденсатор, обозначен на плате C11. Не могу найти в интернете какой у него номинал. Кто...

RC522 RFID программатор
Простите за глупый вопрос, но можно ли с Ардуино сделать программатор для RC522-поддерживаемых меток (записывать данные на метки)?...

Ethernet shield и RFID-RC522
Итак, доброго времени суток. Возникла такая проблема: RFID модуль работает нормально, все считывает и выводит данные. Но при подключении...

12
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
16.07.2017, 15:53
Опять взламываем электронные карты для оплаты проезда на общественном транспорте?
0
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
12.09.2017, 00:28  [ТС]
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Опять взламываем электронные карты для оплаты проезда на общественном транспорте?
Народ хочет развлекаться
1
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
12.09.2017, 17:40
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Опять взламываем электронные карты для оплаты проезда на общественном транспорте?
с чего Вы взяли?
1. Ключи от транспортных карт не опубликованы.
2. Методики взлома ключей нет, да и ардуинка не та платформа что бы ломать их.
3. Формата данных в секторах транспортных карт не расписаны.
Так что не понимаю за что ...
А вот для начинающих разработчиков контроллеров ограничения доступа очень полезная информация.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
13.09.2017, 07:57
Ключ-то для записи опубликован.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
13.09.2017, 16:47
Что так?

Разве это не ключ?
Цитата Сообщение от n971030 Посмотреть сообщение
for (byte i = 0; i < 6; i++) { key.keyByte[i] = 0xFF; }
К тому же используется известная уязвимость.
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
13.09.2017, 16:50

и где тут Вы увидели ключ?
1
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
13.09.2017, 16:55
key = {FF FF FF FF FF FF};
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
13.09.2017, 16:58
Это не ключ транспортной карты, а ключ чистой не форматированной карты.
2
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
16.09.2017, 00:24  [ТС]
Цитата Сообщение от Витальич Посмотреть сообщение
Это не ключ транспортной карты, а ключ чистой не форматированной карты.
Дауж..Рыжий лис видемо по другим форумам не ходит...и то что это давно не секрет не в курсе. Да и к тому же давно их подломали..и давно уже используются другие типы карты.. а если лис не вкурсе то эта библиотека RF522 поддерживает карты M C1K /4K а другие не поддерживает а библиотека перестала разрабатываться официальная последняя версия 1.3.6!

Вот она. (пусть читает) да и к тому же код открытый и т.п. и .т.д...
MFRC522-1.3.6.rar
1
 Аватар для ProHacker2006
5 / 5 / 0
Регистрация: 01.12.2017
Сообщений: 36
27.01.2018, 14:40
Надеюсь у меня деньги не стерлись когда я удачно считал № проездной карты?))))))
0
 Аватар для SadiQ228
-4 / 24 / 7
Регистрация: 16.12.2016
Сообщений: 716
05.05.2018, 03:09
привет ребята, есть у кого готовый скетч или его часть, для записи в определенный сектор определенной инфы?
ключи у меня есть, так как карта моя, моя задача, просто генерировать некоторую инфу и писать ее в сектор!
спасибо если что)

UPD. приношу извинения не прогрузился первый пост)))))0
0
70 / 14 / 4
Регистрация: 10.07.2018
Сообщений: 308
27.07.2018, 23:42
Дополнение к статье
Mifare Access Bit
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.07.2018, 23:42
Помогаю со студенческими работами здесь

RFID-RC522 не видит карт на arduino Leonardo
Здравствуйте. Я любитель, так что не судите строго. Собрал я как то на Arduino Leonardo устройство Для пк и прицепил RC522. Грубо говоря,...

Проблема с RFID модулем RC522 в Arduino и форматом карты MIFARE Classic 1K
Добрый день! Столкнулся с такой проблемой. К плате Arduino Uno подключен RFID-модуль RC522. Всё работает, на карту реагирует...

RFID RC522 протокол обмена
Переделал модуль как в этой статье. Хочу подключить модуль к PIC через UART. Пытался нагуглить, но везде только скетчи для Arduino с ее...

Arduino + rfid rc522
Добрый день, подскажите как можно сделать так чтобы когда карта есть 3пин на HIGH когда нет LOW, if ( !...

4x3 клавиатура не работает с RFID RC522. Есть код, но не получается ввести пароль к карте
#include &lt;SPI.h&gt; #include &lt;MFRC522.h&gt; #include &lt;Wire.h&gt; #include &lt;LiquidCrystal_I2C.h&gt; #include &lt;Keypad.h&gt; #define SS_PIN 10...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru