Skip to content

Stepka/NFCLock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NFCLock

Firmware for arduino-based NFC Lock for cars

Общая идея

Мы строим автомобиль в философии той ветки ретро футуризма, где берется стиль и ретро-взгляд из прошлого на наше настоящее и реализуется используя современные технологии. В этой статье мы распишем, как реализовали бесключевой NFC доступ к тачке на основе штатной сигналки. Причем в качестве ключа для открытия тачки мы используем либо NFC карту, которой вы пользуетесь в офисе или гостишках, или даже мобильный телефон.

В основе лежит простая идея установить в тачку чип, который читает NFC карты и через управляющую микросхему посылать команду на штатную сигналку. Последний пункт можно заменить и на полное управление центральным замком и т.д. фактически заменив сигналку, но это, пожалуй, не в нашу смену.

Компетенции

Прежде чем продолжить надо прояснить компетенции, которые мы ожидаем от читателя и которые мы не будем здесь расписывать. А это:

  • Умение паять
  • Умение прошить ардуино
  • Умение установить приложение на андроид напрямую из файла .apk

Это не сильно сложные компетенции, но надо будет потратить некоторое время на изучение, если есть пробелы в этих областях. А если у вас не так много времени, то напишите нам, поразмыслим, как мы можем собрать для вас систему.

Компоненты

Для бесключевого замка нам понадобятся следующие компоненты:

  • RFID чип
  • Ардуино
  • Понижающий преобразователь напряжения 12V - 5V
  • Радиобрелок штатной сигналки
  • Оптрон
  • Спикер (необязательно)

Все компоненты можно заказать на али, но нашим патронам, которые нас поддерживают рублем на патреоне, будут доступны ссылки на рекомендуемых продавцов. И да, поддерживайте нас на патреоне - за это будут дополнительные ништяки.

Схема

Мозгом нашей схемы или, другими словами, управляющим чипом, будет arduino. Это максимально распространенная плата управления. В ее задачи будет входить чтение сигнала с NFC-чипа, отправка команды на штатную сигналку, забота о протоколах передачи данных, криптобезопасности (чтобы только нужные нам ключи подходили) и администрировании замка.

В качестве NFC-чипа мы взяли RFID-ридер, плату под названием PN532. Здесь, в принципе, могут быть любые платы, но код мы выложим только для этой. Еще мы пробовали плату RC522, но подружить ее с телефоном не удалось, только с NFC-картами. За остальные вообще ничего сказать не можем.

Ардуино и совместимые платы работают от питания 5V (это в нашем случае, еще бывает режим 3.3V). Поэтому нам еще понадобится понижающий преобразователь напряжения с штатных 12V до 5V.

Мы для простоты будем встраиваться в существующую сигналку, поэтому нам понадобится запасной или ненужный брелок к ней. Естественно, он должен быть прописан в сигналке и конечно же мы его раскурочим, у него обратной дороги не будет.

И еще важный элемент - это оптрон (иди два оптрона). По факту это электронная кнопка, которой мы будем управлять из ардуино. В нашем конкретном примере, в нашей сигналке две разные кнопки на закрытие и открытие замков, поэтому и оптрона будет два. Но если у вас сигналка с одной кнопкой, то и оптрон нужен один.

И необязательный элемент - спикер. Нужен лишь для того, чтобы система могла сообщить что-то о себе кожаному мешку, который ее устанавливает.

Сборка системы

Для начала готовим брелок. Выпаиваем кнопки, впаиваем две правильные ножки оптрона на управляющие ножки бывших кнопок. Как узнать какие именно ножки управляющие? Просто надо замкнуть ножки на брелке, и если сигналка сработала, то это они. И надо проверить полярность мультиметром. У оптрона надо впаивать соответствующие ножки, с противоположной стороны ключа, причем соблюсти полярность (ключ это белая точка или углубление на чипе, на схеме обозначен буквой О).

RFID-ридер обычно поставляется с неприпаянной планкой ножек, поэтому ее тоже придется припаять.

Все, компоненты готовы, можно приступать к сборке.

В нашем случае RFID-ридер мы разместили в двери, а блок управления с ардуино и брелком от сигналки под торпедой.

Все минусы и земли мы сводим в одном узле, питание так же в одном узле, в качестве такого соединительного узла удобно использовать монтажные узлы электриков из строительного магазина. А чипы и микросхемы соединяем по схеме на картинке. На схеме все ножки подписаны, и чтобы наш код работал, все ножки должны быть соединены, как на схеме. Выход минуса и выход плюса с напряжением 12V у преобразователя напряжения должны быть подключены к штатной сигналке или даже напрямую к аккумулятору. Важно при этом отделить всю схему от АКБ предохранителем. Мы врезались в штатную сигналку, изучив документацию, нашли там провод 12V после предохранителя в 5А и провод с минусом и просто нагло врезались, а после заизолировались.

Все элементы мы соединяли проводами 0.5 сечения, но это очень жирно, просто других не было. Подойдут любые.

Теперь нужно прошить ардуино нашим кодом из архива NFCLock и все, система готова к работе! Код можно найти здесь.

Администрирование

Свежеиспеченная, девственно чистая система конечно не знает ни одного ключа. Добавление ключей происходит в админском режиме. Включить админский режим можно поднеся админский ключ к NFC-чипу, причем админский режим выключится после поднесения любого друга ключа следом за админским. Внимательный читатель спросит: а где же взять админский ключ, если система не знает ни одного ключа? А мы ответим, самый первый ключ поднесенный к NFC-чипу после самого первого запуска системы будет вашим админским ключом. Это может быть только NFC-карта. Админский ключ с собой лучше не носить, его использовать только для добавления обычных ключей.

Всего система может хранить 5 ключей, включая админский. Итак, у нас есть система, мы добавили админский ключ (первая поднесенная карта). Теперь можем добавить обычные ключи - включаем админский режим админской картой, затем подносим другую карту или телефон - и все, обычный ключ добавлен и система сразу переключится в обычный режим. Теперь, чтобы открыть дверь надо поднести карту или телефон к NFC-ридеру и дождаться открытия или закрытия замка.

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

Кроме того, можно защититься пин-кодом со временем действия. Причем пин-код с защитой от подглядывания. Пока пин-код свежий, телефон открывает замки, а после просит снова ввести пин. Приложение мы выкладываем только для наших патронов на патреоне, так что поддерживайте нас там. Все остальное доступно в этой статье.

Немного о безопасности

И приложение, и карта использует шифрование. Единственный момент, где ключи передаются в открытом виде - это админский режим.

Замок работает с картами mifare classic 1k, это одни из самых распространенных карт. На карте находится 16 секторов, куда можно прописывать данные, причем разные устройства могут использовать свой сектор. Наш замок использует один сектор, ближайший свободный. То есть чисто теоретически вы можете использовать одну карту для разных замков, например, разных тачек, либо ту же карту, что и для офиса.

Приложение использует симметричное шифрование 128-битным ключом по собственному протоколу общения мобильного с замком. Суть протокола такая: замок генерирует строку, отправляет телефону, затем телефон шифрует полученную строку своим крипто-ключом и в зашифрованном виде отправляет обратно замку. Замок расшифровывает крипто-ключом, который хранит для этого телефона и если отправленная и расшифрованная строка совпадает, то мобильный прошел аутентификацию и можно открывать замки.

Интересный момент про пин-код с защитой от подсматривания. Принцип прост - каждой кнопке пин-пада соответствует набор из цифры, короткого слова, цвета, фигуры или текстуры. Набор этот генерируется рандомно в рандомной комбинации. В качестве пина человек сам выбирает, какую группу символов он использует, будь то цифры, слова, цвета или фигуры. И когда человек набирает пин, лишь он знает, с какой группой символов он работает. Подсмотрев со стороны, даже записав на видео то, что набирал человек, злоумышленник не может быть уверен, какой именно пин, используя какую группу символов набирал человек.

На этом все, пожелания, помощь, советы и поиск слабых мест в системе - все это приветствуется.

Кроме того, подписывайтесь на наши инстаграмы:

Лайв здесь: @cyberculturemotors

Самая интересная и загадочная выжимка здесь: @cyberculturecorp

Ну и самые роскошные, становитесь нашими патронами, для вас у нас будут особые ништяки: https://www.patreon.com/cyberculturemotors

About

Firmware for arduino-based NFC Lock for cars

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published