Главная » Компьютерная электроника
Призовой фонд
на сентябрь 2017 г.
1. 1000 руб
PCBWay
2. Осциллограф DSO138
Паяльник
3. Тестер компонентов MG328
Паяльник
4. 100 руб.
От пользователей

Моддинг ПК. Включение и пароли по RFID картам

Сегодня рядовой пользователь интернета имеет не один и не два, а достаточное количество аккаунтов на различных интернет ресурсах. Количество паролей с каждым годом возрастает с некоторой прогрессией, а это значит, что все их запоминать становится сложнее. Кто-то их начинает записывать (на листке бумаги или в файле, хранящимся на том же компьютере), кто-то все еще пытается запоминать их, а кто-то, пренебрегая безопасностью, копирует везде один и тот же пароль, повышая шанс взлома или потери доступа к своим ресурсам. Сегодняшней темой я надеюсь сделать маленький шажок к решению этих проблем. Идея заключается в том, что RFID карты имеют свой уникальный идентификационный номер. Используя эти уникальные данные, не будет надобности запоминать пароли, а достаточно будет просто использовать нужную карту или брелок.

Таким образом, вслед за идеей родилась схема устройства.

Схема имеет 2 назначения, работающие независимо друг от друга: передачу идентификационного номера карты по USB и включение ПК по совпадению сохраненного номера карты в памяти микроконтроллера. Для данной схемы используются RFID карты 13,56 МГц (Mifare s50 и подобные). Считыватель карт построен на модуле RC522 (MOD1), в основе которого микроконтроллер MFRC522 NXP Semiconductors. Модуль имеет интерфейс SPI, при помощи которого подключается к основному микроконтроллеру STM32F103C8T6. STM32 питается напряжением 3,3 Вольта, поэтому необходим понижающий стабилизатор с 5 Вольт USB или дежурного источника блока питания ATX. Для этой цели подойдет любой стабилизатор, например AMS1117 3v3 и ему подобные. Для ввода паролей на компьютере устройство имеет USB интерфейс. Для простоты используется USB HID (устройство ввода – клавиатура), что позволяет просто подключить устройство, и оно сразу заработает без установки дополнительных драйверов. Функционал включения компьютера по беспроводным картам реализован на следующих элементах. Вместо кнопки к контактам на материнской плате подключается реле (нормально разомкнутый контакт и общий контакт). Так как напряжение дежурного источника блока питания составляет 5 Вольт, то и реле необходимо использовать на 5 Вольт. Чтобы реле не срабатывало после включения компьютера на контакт PB9 микроконтроллера через делитель напряжения на резисторах R4 и R5 подается напряжение 5 Вольт, которое не связано с дежурным источником. Таким образом формируется сигнал о работе блока питания компьютера и соответственно о том, что компьютер включен. Перемычка Jmp1 используется для стирания памяти карт. Чтобы стереть память, необходимо установить перемычку (то есть замкнуть контакт PB8 на плюс питания) и нажать кнопку reset S1 или отключить и включить питание. Через секунду память будет уже стерта и перемычку необходимо снять, чтобы при следующем перезапуске память не стерлась снова. Когда память карт пуста, первая приложенная карта автоматически сохраняется как мастер карта. Данная версия прошивки поддерживает сохранение до трех карт в памяти микроконтроллера. Чтобы добавить в память новые карты необходимо поднести к считывателю мастер карту, это активирует на 3 секунды возможность сохранить новую карту в память микроконтроллера при условии, что место в памяти еще есть. После сохранения новой карты в памяти этот режим сразу же деактивируется. Очистить память можно только сразу всю методом, описанным выше при помощи перемычки.

Устройство имеет стандартную схематику и может быть собрано за полчаса на стандартных модулях, необходимо лишь правильно соединить все контакты и загрузить прошивку в микроконтроллер. Для прошивки нам понадобится программатор ST-Link и STM32 ST-LINK Utility.

Размеры модулей хорошо вписываются в заглушку на передней части корпуса ПК. При помощи двухстороннего скотча модули можно установить на нее без возможности испортить внешний вид корпуса. Скотч должен быть типа 3М для того, чтобы со временем модули не отвалились. Так с лицевой стороны можно оставить все в стандартном виде, а при желании в месте расположения RFID считывателя наклеить стикер, указывающий куда прикладывать карту.

Для подключения к компьютеру необходимо внутри корпуса подключить устройство к USB и к блоку питания. Для подключения к USB можно использовать свободные разъемы PLS на материнской плате или использовать USB разъемы. Чтобы подключиться к питанию, необходимо подключить дополнительные провода в разъеме к фиолетовому проводу (+5 Вольт дежурного питания), черному (земля, GND) и красному (+5 Вольт). Способ подключения к этим проводам не очень простой, т.к. резать провода совсем не хочется, чтобы подпаяться к ним, поэтому нужно, подогнув ушки контактов внутри пластикового разъема, извлечь этот контакт и либо припаять свой провод, либо ослабить обжим, вставить дополнительно свой провод и заново обжать контакт.

Собираем устройство в корпуса компьютера, размещаем модули на передней заглушке, подключаем контакты к разъемам блок питания и материнской платы.

При включении блока питания компьютера в розетку наше устройство должно сразу заработать, если блок питания исправен. А при подключении к USB устройство должно определиться как стандартная клавиатура.

Теперь сохраняем мастер карту (первую приложенную к считывателю карту) и устройство готово к использованию.

Чтобы устройство вводило пароль только на английском, используются горячие клавиши CTRL+0. Это сочетание клавиш включает тот язык, к которому оно привязано. Данное сочетание задается в параметрах языковой панели. По умолчанию горячие клавиши языков не используются, поэтому эту настройку необходимо сделать вручную.

Таким образом, при включенном компьютере устройство сначала передает сочетание клавиш CTRL+0 для перехода на английскую раскладку, далее следуют 5 байт уникального идентификатора RFID карты в шестнадцатеричной форме, то есть десять символов шестнадцатеричной кодировки и в конце нажатие клавиши Enter. При вводе пароля при помощи этого устройства необходимо, чтобы курсор был установлен именно в том поле, куда должен вводиться пароль.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
IC1 МК STM32
STM32F103C8
1 Поиск в LCSCВ блокнот
VR1 Линейный регулятор
AMS1117-3.3
1 Поиск в LCSCВ блокнот
T1 MOSFET-транзистор
IRLML2402
1 Поиск в LCSCВ блокнот
VD1, VD2 Выпрямительный диод
1N4007
2 Поиск в LCSCВ блокнот
Z1 Кварц8 МГц1 Поиск в LCSCВ блокнот
R1 Резистор
390 Ом
1 Поиск в LCSCВ блокнот
R2 Резистор
100 Ом
1 Поиск в LCSCВ блокнот
R3, R4, R6, R7 Резистор
10 кОм
4 Поиск в LCSCВ блокнот
R5 Резистор
3.3 кОм
1 Поиск в LCSCВ блокнот
R8, R9 Резистор
22 Ом
2 Поиск в LCSCВ блокнот
R10 Резистор
1 кОм
1 Поиск в LCSCВ блокнот
C1, C5, C7-C10 Конденсатор0.1 мкФ6 Поиск в LCSCВ блокнот
C2, C4 Конденсатор22 пФ2 Поиск в LCSCВ блокнот
C3 Электролитический конденсатор220 мкФ1 Поиск в LCSCВ блокнот
C6 Электролитический конденсатор100 мкФ1 Поиск в LCSCВ блокнот
S1 Кнопка тактовая1 Поиск в LCSCВ блокнот
Rel1 Реле1 Поиск в LCSCВ блокнот
Jmp1 ПеремычкаДжампер1 Поиск в LCSCВ блокнот
MOD1 МодульRC5221 Поиск в LCSCВ блокнот
X1 РазъемUSB1 любой подходящий - micro, mini, A, BПоиск в LCSCВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 6
Я собрал 0 Участие в конкурсе 3
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 3 чел.

Комментарии (38) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
Quemu #
А код увидеть можно?
Ответить
0

[Автор]
Gauss #
Пока лучше так спрашивайте, что интересно
Ответить
0
Quemu #
Интересно увидеть код!
Фреймворк, библиотеку для ридера и работу со всем этим добром.
Ответить
0

[Автор]
Gauss #
Фреймворк это типа HAL?
Ответить
0
Quemu #
HAL, SPL - не важно. Если его нет - ещё интереснее.
Без кода это опять какой-то конь в вакууме.
Ответить
+1

[Автор]
Gauss #
Собственно библиотеки HAL, все стандартно от ST. Код работы rfid вот, он просто портирован с avr
Прикрепленный файл: rc522.rar
Ответить
0
ag-set #
Ага, интересно как на stm выглядит, а то все на ардуинках
Ответить
0

[Автор]
Gauss #
Там еще ресурсов столько, что можно интересных плюшек набросать
Ответить
0
ddim #
Припоминаю еще про датчик отпечатков пальцев как кнопку включения?
Ответить
0

[Автор]
Gauss #
Да, была такая мысль, но она еще не созрела до схемы
Ответить
0
ddim #
А по-моему актуально - вон сейчас эти сканеры пихают во все девайсы
Ответить
0

[Автор]
Gauss #
Если побольше обратной связи будет по этому вопросу, то почему бы и не добавить (что, куда и как лучше, эргономичнее вставить, подключить)
Ответить
0
ag-set #
Интересно как реализован вывод данных в hid? А если например комп находится в спячке перед вводом пароля еще надо его разбудить, также получается и 3 карты, маловато с пяток бы
Ответить
0

[Автор]
Gauss #
STMовчкие HAL имеют библиотеки для USB device, их подключаем (я использовал custom HID, добавил дескриптор клавиатуры) и используем функцию SendReport, зная состав репорта клавиатуры просто отсылаем данные в нужном виде (массив). То есть вывод достаточно стандартный.
Про спячку я как-то совсем и не думал, т.к. не сталкивался с необходимостью, нужно попробовать, по сути за одно прикладывание разбудить и ввести пароль может не получиться, т.к. время пробуждения несколько секунд или больше может быть
3 карты только на включение, просто для паролей хоть 100, для ввода паролей данные в мк не хранятся
Ответить
0
ag-set #
Понятно теперь, а то сразу не понял, прикольно можно несколько карь завести и авторизоваться на сайтах разных не храня пароли в голове. Надо замутить такую штуку и себе. Спасибо за полезную штуку и стоит копейки и голова паролями не забита
Состав репорта клавиатуры про это поподробней можно или ссылку на описание
Ответить
0

[Автор]
Gauss #
Вот - именно в этом наверно и кроется уникальность и смысл идеи!
Ответить
0

[Автор]
Gauss #
Репортер клавиатуры: отсылается 8 байт в таком порядке, первый модификатор (шифт, контрол, вин и т.д.), второй байт зарезервирован и равен 0, остальные шесть байт это коды клавиш
Ответить
0
ag-set #
Идентификатор Mifare содержит идентификационный номер - так называемый UID-номер и перезаписываемую память, он не защищен от чтения и не является секретным и иногда даже написан снаружи на карточке

А вот доступ к памяти защищен. Чтение и запись возможна только при знании ключей доступа, а передаваемые между картой и считывателем данные защищены.

Считыватель как Mifare может читать UID, а может читать данные из памяти. Большинство дешевых считывателей могут читать только UID, что плохо, так как UID не защищен и можно по-прежнему сделать дубликат карты.

Можно ли переделать софт что бы читался не серийник карты а пользовательская область так как с точки зрения безопасности не очень хорошо.
Ответить
0

[Автор]
Gauss #
Да так менее безопасно, но нужна ли настолько большая защищенность для домашнего устройства, сделанного для удобства, упрощения повседневных действий?
Ответить
0

[Автор]
Gauss #
Кстати код на картах я встречал только на 125 кГц картах EM4100 и т.п.
Ответить
0
ag-set #
Ну функционал вам да, но только не новичкам типа меня, писать с нуля такую штуку сложновато для меня
Ответить
0

[Автор]
Gauss #
Ну, с нуля уже не нужно, есть рабочий вариант в этой статье
Ответить
0
ag-set #
Да хочется же под себя переделать, а исходника нет - вот в чем вопрос
Ответить
0

[Автор]
Gauss #
Вот - тут для меня такая же дилемма, если бы все исходники были, то ни один человек бы не сказал, что он думает об устройстве, что добавить, исправить, переделать и т.д, а тихонько все перепилили. Мне тоже важно услышать, прочитать, что хорошо, что плохо, чего не хватает...
Ответить
0
ag-set #
Ну не все это точно, знающие да, а новички всегда задают вопросы. Я бы все равно сделал считывание кода из пользовательской перезаписываемой области для возможности смены пароля
Ответить
0

[Автор]
Gauss #
В этом варианте возможность задать кастомно пароль в карте пожалуй единственный плюс. Минусы такого решения это необходимость записать туда этот кастомный пароль, для этого нужно уже делать софтину на ПК, которая будет управлять этой настройкой, для того, чтобы управлять таким образом USB должен быть кастом HID со своим протоколом обмена или на худой конец CDC, но чтобы опять по карте выводить пароль в поле для пароля, необходимо снова клавиатура. То есть получается пляски вокруг USB усложняют подход в разы. Поэтому я остановился на простом рабочем варианте, не требующем драйверов или дополнительного софта, работающем сразу же после включения.
Отредактирован 18.07.2017 22:14
Ответить
0
ag-set #
Пароль на карту записывается отдельным картридером, функционал железа остается тот же просто считывается пользовательская область и передается как UID через ту же HID клавиатуру, единственное изменение нужно в прошивке и все
А если например карта сломалась, у другой новый уникальный UID? как быть? Покупать в Китае карту с перезаписываемым UID? либо проще записать на новую копию пользовательских данных(либо хранить 2 карты 1 как резервную с одинаковыми пользовательским набором данных). так же с точки зрения безопасности даже 10 значный код состоящий только из цифр не очень надежный пароль. Хочется же надежную штуку с резервированием (дубликат карты) и более сложным паролем.
Ответить
0

[Автор]
Gauss #
Отдельный кардридер это уже неправильно. правильно было бы писать софт для ПК, который эмулировал бы клавиатуру и управлял бы настройками этого устройства
если карта сломалась, потерялась, укралась, всегда безопаснее и проще сменить пароль, каким бы он не был сложным или простым
Код состоит из цифр и буков, например E6BD85B5AC
Еще более сложные пароли замечание справедливое, можно применить кодировку и шифрование UID для формирования паролей с бОльшим числом разных символов
Ответить
0
ag-set #
Карта делается для того, чтобы не запоминать пароль, а как сменить его не помня при поломанной карте? Писать софт слишком сложно, проще скопировать картридером пользовательскую область.
Ответить
0

[Автор]
Gauss #
Неправильно, когда заводится несколько устройств и плодить подключения на одну функцию, все это все-равно должно делать именно одно устройство
Думаю, именно эмулировать клавиатуру на ПК лучше пока меня не переубедили
Ну а при поломке карты нормально продумано восстановление паролей на всех ресурсах интернета - через почту, телефон и т.д.
Ответить
0
ag-set #
Ну нет так нет, если на винде 1 учетка и карта поломалась? Ломать ее всякими обнуляторами паролей загрузившись с диска? Тогда смысл вообще этой штуки?
Ответить
0

[Автор]
Gauss #
А как воспользоваться записью новой карты без доступа к учетке?
А как вообще записать новую карту не зная старого пароля на сломанной карте?
Отредактирован 21.07.2017 19:10
Ответить
0
ag-set #
Карты сразу 2 делается 1 рабочая 1 резерв
Ответить
0

[Автор]
Gauss #
Разумно и убедительно
Ответить
0
ddim #
У меня карты по работе такие служат годами и проблем с поломками почти не было, только если явно неаккуратно пользоваться, садиться на них, бросаться
Ответить
0
ag-set #
У меня на работе 1 раз в 2 года меняем
По поводу включения может просто врезать в разрыв кнопки чтобы просто блокировало включение, а при сработке карточки реле замыкается и кнопка опять работает, вдруг захочется выключить комп кнопкой.
Ответить
0

[Автор]
Gauss #
Проще программно решить этот вопрос по долго поднесенной карте, но выключать кнопкой комп изврат
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

USB-реле (2 канала)
USB-реле (2 канала)
Discovery V8 Конструктор - темброблок на LM1036
вверх