Эмулятор домофонных ключей на arduino

Эмулятор домофонных ключей на arduino

Если после прочтения статьи про чтение кода ключа-таблетки iButton , Вам в голову пришла мысль, что можно сделать и обратную комбинацию – значит мы мыслим в одинаковом направлении 🙂

Сразу хочу сказать, что эта идея далеко не новая, и воспользовавшись поиском можно найти различные решения – примеры можно найти в конце статьи в ссылках.

Итак, что же нам нужно?
А нужно нам всего-навсего произвести симуляцию 1-Ware slave-устройства, выдавая себя за iButton 🙂
Для этого нужно вспомнить, что происходит в линии 1-Wire:
Сначала происходит
1. инициализация – ведущее устройство (домофон) подаёт импульс RESET, после него ведомое устройство (это мы) должно дать ответ PRESENCE (прижать линию к земле на 60 — 240 микросекунд)

Далее происходит сам обмен информации:
2. домофон выдает команду на чтение ПЗУ (ROM) – это должно быть 33h.
Информация, как мы помним, передаётся побайтно, бит за битом.
При этом «0» передаётся прижиманием линии к земле в течении всего тайм-слота (60 — 120 микросекунд)
А «1» передаётся кратковременным прижиманием (на 1-15микросекунд) и последующим отпусканием линии.
3. домофон выдерживает некоторое время и начинает посылать импульсы приема информации.
Т.к. в ответ ожидается 8 байт информации – будет 64 импульса (по одному импульсу для передачи каждого бита информации от нас).
Если мы хотим передать «0» — мы удерживаем линию на логическом нуле, а если хотим передать «1», то можем ничего не делать 🙂
Эмулируя ключ, мы должны сначала передать номер серии устройства 01h.
Затем собственно 6 байт номера ключа (начиная с младшего байта) и в самом конце – байт CRC-кода предыдущей информации.
Для ключа, рассмотренного в статье про iButton – это будет последовательность байт:
01h
41h
CEh
67h
0Fh
00h
00h

B6h

Попробуем это дело запрограммировать 🙂
Чтобы не бегать постоянно к домофону – начальную проверку можно попробовать сделать в протеусе 🙂
Поместим в проект две ардуины – в одну загрузим скетч работы с iButton, а во вторую будем грузить код нашего эмулятора 🙂

Кроме того, при симуляции схемы можно воспользоваться виртуальным инструментарием. Например, подключив в Протеусе на линию 1-Wire виртуальный осциллограф – можно вживую понаблюдать – как происходит обмен информацией 🙂

блок-схема скетча для эмуляции iButton будет такой

А если мы не знаем ключ – сможем ли мы его подобрать перебором?

Оценочно прикинем – сколько времени понадобится на подбор ключа 🙂
У моего ключа-таблетки номер
00000F67CE41
, что даёт нам возможность предположить, что пока для нумерации iButton-ов используются первые 4 байта номера 🙂
Вне всяких сомнений — это меньше 281 биллиона, которые можно спрятать в шести байтах 🙂
И даёт нам всего 4 миллиарда вариантов 🙂
0xFFFFFFFF = 4294967295

Прикинем — сколько времени займёт проверка одного ключа:
PRESENCE

480 мкс
8 бит команды 120 мкс * 8
64 бита данных 120 мкс *64

10 мс => 100 ключей в секунду (в датащите упоминается про 75 ключей в секунду)
Получается, что на полный перебор потребуется 497 дней 🙁 Что-то долго 🙂

В интернете упоминается, что такой брутфорс (brute force) на домофонах не сработает и после трёх неправильных ключей домофон загудит и впадёт в ступор на 5 минут 🙂

Однако выход есть – дело в том, что на некоторых моделях домофонов в новой чистой памяти домофона (предназначенной для хранения ключей жильцов) все биты установлены в 1 (т.е. забиты FF-ами).
И если ключ будет выдавать тоже единицы, то программа подумает, что в чистой памяти тоже хранятся коды ключей и они совпадают с тем, что записано в нашем универсальном ключе и дверь откроется :)))

Это действительно дыра в программном обеспечении контроллера и есть во всех дешёвых контроллерах. Причём простая до смеху. Контроллер проверяет ключ (причём обычно только последнии 4 байта — контроллер то дешёвый) с записаными в ЭСПЗУ. А как выглядят пустые ячейки? То есть если записать ключ вида FFFFFF. FFFFFF что будет? Правильно, он уже везде прописан 🙂 Подверженны все домофоны типа Цифрал ТС, Визит, Метаком

А где же скетч эмулятора?

Читайте также:  Символ собака на клавиатуре не работает

Дело в том, что мы решили устроить небольшой конкурс 🙂
Первый приславший работоспособный ардуиновский скетч эмулятора iButton-а получит Protoshield в подарок!

Ниже приводится набросок такого скетча – вам остаётся только освежить в памяти – что происходит на линии 1-Wire и наполнить кодом функции:
void wire_send_byte(byte dsbyte)
byte wire_read_byte()
void wire_write0(void)
void wire_write1(void)
или же полностью переписать скетч самостоятельно 😉

Условия конкурса:
— скетч должен быть написан на Wiring-е
— код ключа должен храниться в статическом массиве
скетч должен быть опробован в работе 😉

Ваши варианты скетча присылайте по адресу admin@robocraft.ru с пометкой Конкурс iButton!

Набросок скетча (ВНИМАНИЕ – СКЕТЧ НЕ ДОПИСАН ДО КОНЦА):

Если после прочтения статьи про чтение кода ключа-таблетки iButton , Вам в голову пришла мысль, что можно сделать и обратную комбинацию – значит мы мыслим в одинаковом направлении 🙂

Сразу хочу сказать, что эта идея далеко не новая, и воспользовавшись поиском можно найти различные решения – примеры можно найти в конце статьи в ссылках.

Итак, что же нам нужно?
А нужно нам всего-навсего произвести симуляцию 1-Ware slave-устройства, выдавая себя за iButton 🙂
Для этого нужно вспомнить, что происходит в линии 1-Wire:
Сначала происходит
1. инициализация – ведущее устройство (домофон) подаёт импульс RESET, после него ведомое устройство (это мы) должно дать ответ PRESENCE (прижать линию к земле на 60 — 240 микросекунд)

Далее происходит сам обмен информации:
2. домофон выдает команду на чтение ПЗУ (ROM) – это должно быть 33h.
Информация, как мы помним, передаётся побайтно, бит за битом.
При этом «0» передаётся прижиманием линии к земле в течении всего тайм-слота (60 — 120 микросекунд)
А «1» передаётся кратковременным прижиманием (на 1-15микросекунд) и последующим отпусканием линии.
3. домофон выдерживает некоторое время и начинает посылать импульсы приема информации.
Т.к. в ответ ожидается 8 байт информации – будет 64 импульса (по одному импульсу для передачи каждого бита информации от нас).
Если мы хотим передать «0» — мы удерживаем линию на логическом нуле, а если хотим передать «1», то можем ничего не делать 🙂
Эмулируя ключ, мы должны сначала передать номер серии устройства 01h.
Затем собственно 6 байт номера ключа (начиная с младшего байта) и в самом конце – байт CRC-кода предыдущей информации.
Для ключа, рассмотренного в статье про iButton – это будет последовательность байт:
01h
41h
CEh
67h
0Fh
00h
00h

B6h

Попробуем это дело запрограммировать 🙂
Чтобы не бегать постоянно к домофону – начальную проверку можно попробовать сделать в протеусе 🙂
Поместим в проект две ардуины – в одну загрузим скетч работы с iButton, а во вторую будем грузить код нашего эмулятора 🙂

Кроме того, при симуляции схемы можно воспользоваться виртуальным инструментарием. Например, подключив в Протеусе на линию 1-Wire виртуальный осциллограф – можно вживую понаблюдать – как происходит обмен информацией 🙂

блок-схема скетча для эмуляции iButton будет такой

А если мы не знаем ключ – сможем ли мы его подобрать перебором?

Оценочно прикинем – сколько времени понадобится на подбор ключа 🙂
У моего ключа-таблетки номер
00000F67CE41
, что даёт нам возможность предположить, что пока для нумерации iButton-ов используются первые 4 байта номера 🙂
Вне всяких сомнений — это меньше 281 биллиона, которые можно спрятать в шести байтах 🙂
И даёт нам всего 4 миллиарда вариантов 🙂
0xFFFFFFFF = 4294967295

Прикинем — сколько времени займёт проверка одного ключа:
PRESENCE

480 мкс
8 бит команды 120 мкс * 8
64 бита данных 120 мкс *64

10 мс => 100 ключей в секунду (в датащите упоминается про 75 ключей в секунду)
Получается, что на полный перебор потребуется 497 дней 🙁 Что-то долго 🙂

В интернете упоминается, что такой брутфорс (brute force) на домофонах не сработает и после трёх неправильных ключей домофон загудит и впадёт в ступор на 5 минут 🙂

Однако выход есть – дело в том, что на некоторых моделях домофонов в новой чистой памяти домофона (предназначенной для хранения ключей жильцов) все биты установлены в 1 (т.е. забиты FF-ами).
И если ключ будет выдавать тоже единицы, то программа подумает, что в чистой памяти тоже хранятся коды ключей и они совпадают с тем, что записано в нашем универсальном ключе и дверь откроется :)))

Это действительно дыра в программном обеспечении контроллера и есть во всех дешёвых контроллерах. Причём простая до смеху. Контроллер проверяет ключ (причём обычно только последнии 4 байта — контроллер то дешёвый) с записаными в ЭСПЗУ. А как выглядят пустые ячейки? То есть если записать ключ вида FFFFFF. FFFFFF что будет? Правильно, он уже везде прописан 🙂 Подверженны все домофоны типа Цифрал ТС, Визит, Метаком

А где же скетч эмулятора?

Читайте также:  Найти координаты центра масс кривой

Дело в том, что мы решили устроить небольшой конкурс 🙂
Первый приславший работоспособный ардуиновский скетч эмулятора iButton-а получит Protoshield в подарок!

Ниже приводится набросок такого скетча – вам остаётся только освежить в памяти – что происходит на линии 1-Wire и наполнить кодом функции:
void wire_send_byte(byte dsbyte)
byte wire_read_byte()
void wire_write0(void)
void wire_write1(void)
или же полностью переписать скетч самостоятельно 😉

Условия конкурса:
— скетч должен быть написан на Wiring-е
— код ключа должен храниться в статическом массиве
скетч должен быть опробован в работе 😉

Ваши варианты скетча присылайте по адресу admin@robocraft.ru с пометкой Конкурс iButton!

Набросок скетча (ВНИМАНИЕ – СКЕТЧ НЕ ДОПИСАН ДО КОНЦА):

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

Нужно просто узнать номер-идентификатор оригинального ключа и присвоить его дубликату. Система домофона будет распознавать такой ключ как «свой» и произведет открывание двери.
Процедура считывания с ключа, а также запись на него идентификатора выполняются с применением только однопроводного интерфейса 1-wire. Благодаря этому принципиальная схема будущего дубликата домофонного ключа является достаточно простой.

Ниже поэтапно будут рассмотрены все действия, посредством которых, за минимальное время можно самостоятельно изготовить дубликат своего ключа к домофону. Данный вариант дубликатора работает с болванками контактного типа RW1990 и бесконтактного RFID T5577, T5557.

Подробнее в видео

Смотрите также

Метки: ключи домофона, дубликатор ключей, своими руками, ардуино

Комментарии 44

Автор, а не подскажешь что за метка ?
Будет она копироваться твоим девайсом?

Так и не понял, где скетч взять?

Запускаем видео нажимая на плей, переходим к просмотру этого видео в YOUTUBE и в описании к видео находится ссылка на скетч.

Хорошая статься, я мучаюсь с rfid частью, не понимая что такое резонанс мне будет тяжело ее намотать(

Добрый день собираю уде несколько дней rfid часть, компаратор начинает издавать звук при просадке, понимаю что связь с картой почти достигнута, но никак не могу сделать правильную антенну, возможно заказать дроссель у вас на 330 или готовую плату с дросселем ?

Я все понимаю, но где исходники?Правила читали, прежде чем публиковать?

Ссылки на комплектующие как обычно под описанием видео.

Читайте также:  В каком возрасте девушка может забеременеть

По правилам должны быть в тексе ссылки на первоисточник, либо ссылка на личный сетевой диск/хранилище.Изучайте правила.Ютуб мне не интересен.

А как так же прописать доп чип от машины?

Ну да, по сути программатор получился

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

Так а зачем им иметь сами ключи… чтоб отписать их. Каждый ключ имеет свой id номер…
Те ключи которые, с id они не приписывали, просто удалили из базы… визиток набросали в почтовые ящики… наклеек на стены наклеили… мол только у нас, всё работает)… делов то… щас все так делают, так же как с кабельным и интернетом… новый можно прописать самому, пока не удалят, будет работать.

кувалда в руки и Досвидос домофон.

Мле… купить ардуино на Алике и мастырить с него программатор… Проще с Алика сразу готовый программатор купить, даже лешевле выйдет.
Поделка ради поделки.

Эт вам там до Китая рукой подать, а тут жди 3 месяца. А есть хоть один пост который вам понравился? Написать ради написать?

У нас посылки через вас приходят)))) Как правило растоможка Екатеринбург или Москва)))

Судя по срокам они через Зимбабве идут.

Эт вам там до Китая рукой подать, а тут жди 3 месяца. А есть хоть один пост который вам понравился? Написать ради написать?

Да будет вам известно, что посылки Али таможатся через центральную Россию, не все, но в основной массе да. Какие три месяца, о чем вы? До нас 1-2 максимум.
Есть.
Нет

А у нас какой то хитрый домофон. Обычный Цифрал. Но никто не может сделать дубликат, сделаные ключи просто не подходят.
Приходится вызывать человека из домофонной компании, называть адрес, и он приезжает сразу с готовым ключем. В моем случае он накосячил, ключ привез, а он не подошел. У меня был ненужный ключ от другого домофона. Мастер зашел в меню нашего домофона, попросив меня отвернуться, и просто прописал мой ключ туда. Я еще подумал, может он мой ключ перепрограммировал, специально сходил и проверил на домофоне, от которого этот ключ был изначально — открылся. Одним ключем открываю два разных домофона, хотя обычные ключи от этих домофонов друг друга не открывают.

программируются не ключи, а сам замок)

Я не разбираюсь. Но давно пора эту штуку встроить в телефон, как NFC.

Проще nfc вшить в замок

программируются не ключи, а сам замок)

Через дубликатор id ключа клонируется в другой. При программировании на месте в память домофона вносится id ключа

А у нас какой то хитрый домофон. Обычный Цифрал. Но никто не может сделать дубликат, сделаные ключи просто не подходят.
Приходится вызывать человека из домофонной компании, называть адрес, и он приезжает сразу с готовым ключем. В моем случае он накосячил, ключ привез, а он не подошел. У меня был ненужный ключ от другого домофона. Мастер зашел в меню нашего домофона, попросив меня отвернуться, и просто прописал мой ключ туда. Я еще подумал, может он мой ключ перепрограммировал, специально сходил и проверил на домофоне, от которого этот ключ был изначально — открылся. Одним ключем открываю два разных домофона, хотя обычные ключи от этих домофонов друг друга не открывают.

У нас товарищи одни продают дубликаты по 100₽. Но самые интересное, что «при покупке они это не озвучивали» данные Ключи открывают не только мою дверь, а половину подъездов района ))) впринципи меня это даже обрадовало, теперь везде с одним ключем ). Узнал случайно, когда у родителей в подъезде Ключ перепутал и свой приложил .

Ссылка на основную публикацию
Шарик равноускоренно скатывается по наклонной плоскости
За каждую секунду, путь пройденный шариком,увеличивается на 20см. Следовательно за 4 секунду он пройдет 70см. Ответ:(2) Если ответ по предмету...
Что такое ogg формат
Ogg — Dateiendung: .ogg, .oga, .ogv, .ogx MIME Type … Deutsch Wikipedia .ogg — Dateiendung .ogg, .oga, .ogv, .ogx MIME...
Что такое pppoe соединение на роутере
PPPoE (англ. Point-to-point protocol over Ethernet ) — сетевой протокол канального уровня (второй уровень сетевой модели OSI) передачи кадров PPP...
Шарнирная стойка для дрели
Стойка для дрели с тисками FIT 37861 Стойка для дрели Калибр 96203 Стойка для дрели RedVerg DS-43 Стойка для дрели...
Adblock detector