РадиоКот >Схемы >Цифровые устройства >Защита и контроль >

Теги статьи: Эмулятор ключей

Три в одном флаконе или Эмулятор ключей домофонов «Цифрал», «Метаком» и «Даллас»

Автор: iplogger
Опубликовано 16.09.2011
Создано при помощи КотоРед.
2011


Э-э-э, дарагой, всегда доверяй датащиту!

Но, на фсакий слючий, слющий, правэрь асциллографым…


История.

          Я думаю, по названию статьи, назначению устройства и стилю оформления вы уже догадались откуда “растут лапы”. Поэтому рассказывать как бы и нечего.

Назначение.

         Устройство предназначено для считывания, хранения, изменения и эмуляции ключей домофонов «Цифрал» (м/с 1233KT1) и «Метаком» (м/с 1233KT2), а также ключей домофонов, поддерживающих стандарт «iButton» (DS1990A, DS1992, DS1993 и др.). Количество сохраняемых ключей – 32. Полная поддержка ключей DS1992, DS1993 (хранение серийного номера и содержимого памяти) доступна только для двух ключей (один ключ DS1992 и один ключ DS1993). Ключ DS1993 я использую на работе и сделал поддержку чисто из спортивного интереса. А поскольку DS1992 отличается от DS1993 лишь меньшим объемом памяти и оба ключа описаны в одном даташите, впихнул заодно и его – вдвоем веселее :).

         Для ключей «Даллас» со стороны разъема чтения “KEY” поддерживается чтение серийного номера и содержимого памяти (Read ROM [33h], Match ROM [55h], Read Memory [F0h]). Со стороны разъема эмуляции “DOMOFON” – весь набор команд общения с «мастером» (Read ROM [33h], Read ROM [0Fh], Match ROM [55h], Skip ROM [CCh], Search ROM [F0h], Write Scratchpad [0Fh], Read Scratchpad [AAh], Copy Scratchpad [55h], Read Memory [F0h]).

         Имеется интерфейс с ПК через COM-порт (уровень TTL) для просмотра, чтения и изменения ключей.

 Схема.

 

         Основа устройства – микроконтроллер ATmega8A. Напряжение питания 2,7 ­– 5 В. Применяются кварцевые резонаторы 8, 12 или 16 МГц. В качестве дисплея используется семисегментный индикатор с общим катодом фирмы KINGBRIGHT SC39-11SRWA . При использовании индикатора с общим анодом контакты 3 и 8 индикатора надо подсоединить к питанию. По сравнению с предыдущим вариантом усложнилась часть схемы для общения с домофоном. Здесь решалась задача максимально приблизить электрические параметры эмулятора к оригинальной таблетке «iButton». Но, в то же время, за счет встроенного в МК АЦП, до безобразия упростилась схема чтения ключей.

 Настройка.

         Настройка не требуется. Вместо ATmega8A можно, установив соответствующие кварцевый резонатор и напряжение питания, поставить ATmega8L или ATmega8. Вместо полевых транзисторов BS170 можно применить любые маломощные, например, 2N7000. Диоды – также любые маломощные. Стабилитрон можно поставить на большее напряжение (6V2, 6V8 … 9V1). На моей макетной плате конденсатор C3 не установлен, работает и без него. Про индикатор с общим анодом и кварцевый резонатор я уже упоминал.

 Управление.

         Кнопка S1 («WAKEUP/DOWN/YES/SHOWKEY/WRITE/DISCONNECT») выполняет семь функций:

- вывод эмулятора из спящего режима;

- перебор номера ключа вниз;

- положительный ответ на запись в EEPROM считанного ключа;

- просмотр кода текущего ключа;

- перебор или подтверждение записи очередной тетрады кода ключа;

- вывод эмулятора из режима работы с COM-портом;

- прерывание просмотра кода текущего ключа.

         Кнопка S2 («WAKEUP/UP/NO/WRITEKEY/BACK/DISCONNECT») также выполняет семь функций:

- вывод эмулятора из спящего режима;

- перебор номера ключа вверх;

- отрицательный ответ на запись в EEPROM считанного ключа;

- переход в режим ручного ввода кода ключа;

- перебор или отмена записи очередной тетрады или всего кода ключа;

- вывод эмулятора из режима работы с COM-портом;

- прерывание просмотра кода текущего ключа.

         Для краткости изложения далее введены следующие сокращения. «S1/S2» – нажатие любой из кнопок S1 или S2. Короткое нажатие кнопки (менее 0.5с) будет обозначаться «S1»,  «S2» или «S1/S2». Длинное нажатие кнопки (более 0.5с) будет обозначаться «S1*» или «S2*». При длинном нажатии кнопки через полсекунды индикатор будет гаснуть и еще через полсекунды вновь загораться. Все последующие события происходят при отпускании кнопки. При долгом удержании кнопки (более 1с) ничего происходить не будет до тех пор, пока ее не отпустят.

         Для считывания, записи или просмотра ключа необходимо вывести эмулятор из спящего режима нажатием кнопок S1/S2.

 Индикация.

         Индикатор служит для отображения текущего номера ключа, типа считанного ключа и другой дополнительной информации. Номера ключей выводятся в шестнадцатеричном виде от 0 до 1F. Номера ключей больше 0F выводятся с точкой. Для отображения различных состояний используются несколько «магических рун». Слева направо: найден ключ, но не читается или идет обмен через COM-порт [.], прочитан ключ «Цифрал» [с], прочитан ключ «Метаком» [м],  прочитан ключ «Даллас» [д], ключ «Даллас» с памятью [≡],  начало показа кода ключа [-], ключ сохранен [||].

 

[.]
[с] 
[м] [д]
[≡] [-] [||]

 

 

Считывание и запись ключа.

         Подносим ключ к разъему «KEY». В случае успешного чтения загорится символ [с], [м] или [д], соответствующий ключу. Если ключ найден, но нераспознан, будет гореть точка [.]. После отображения типа ключа его можно отсоединить от разъема. Через полсекунды начнет мигать номер текущего ключа. Для записи ключа в EEPROM выбираем кнопками S1/S2 номер ключа, затем нажимаем кнопку S1*. Мигание прекратится и появится символ [||] - ключ сохранен. Для отмены записи ключа используем кнопку S2*.

         В случае обнаружения ключа DS1992 или DS1993 высветится символ [≡]. После чего надо или сохранить память ключа в эмулятор, или отменить запись описанным выше способом. После записи появится символ [||]  - память ключа сохранена. В случае отмены записи памяти, при эмуляции такого ключа будет использоваться ранее записанная память ключа с таким же типом.

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

 Просмотр ключа.

          Выбираем кнопками S1/S2 номер ключа для просмотра, затем нажимаем кнопку S1*. Загорится символ [-]. После чего с полусекундным интервалом будет показан код ключа. Например, DDDEBB77[c] – ключ цифрал или 9B0000FFFFFFFF01[д] – ключ даллас. Все коды ключей,  отличающиеся от «Цифрал» и «Метаком» (в том числе и стертые ячейки EEPROM), показываются как ключи  «Даллас». Для прерывания просмотра нужно нажать кнопки S1/S2.

Запись ключа.

          Выбираем кнопками S1/S2 номер ключа для записи, затем нажимаем кнопку S2*. Индикатор начнет мигать. Далее  вводим код ключа по одной тетраде. Т.е., для каждой тетрады кнопками S1/S2 выбираем значение (0, 1 … F) и нажимаем кнопку S1*. Всего нужно ввести 16 значений. После ввода последнего значения мигание прекратится и появится символ [||] - ключ сохранен. Если очередное значение введено неверно, нужно нажать кнопку S2* - возврат к предыдущей тетраде. При этом, если текущей была первая тетрада, ввод ключа отменяется. Две последние тетрады – код ключа (FA – цифрал, FB – метаком, 01 – DS1990A, 06 – DS1992, 08 – DS1993). Корректность ключей не проверяется. Примеры ввода ключей:

           «Цифрал»                    000000DDBDEDD7FA

           «Метаком»                  000000EE60EB18FB

            «Даллас»                    1D00000A1140BE01

Эмуляция ключа.

         Для открывания двери касаемся лузы считывателя домофона разъемом «DOMOFON». Эмулятор выйдет из спящего режима и выдаст текущий ключ. Если ошиблись номером ключа, используем кнопки S1/S2 для выбора нового номера ключа.

         При эмуляции ключей «Цифрал» или  «Метаком» на индикаторе будет просто гореть номер ключа.

         При эмуляции ключа «Даллас» и выдаче «мастером» импульса сброса ("RESET PULSE") индикатор погаснет. Если эмулятором прочитана команда – загорится точка. Остальные сегменты при наличии соответствующих команд будут гореть так:

Read ROM [33h] или Read ROM [0Fh]  – сегмент «a»;

Search ROM [F0h]                                    – сегмент «b»;

Match ROM [55h]                                     – сегмент «c»;

Skip ROM [CCh]                                       – сегмент «d»;

Write Scratchpad [0Fh], Read Scratchpad [AAh], Copy Scratchpad [55h] – сегмент «e»;

Read Memory [F0h]                                  – сегмент «f».


Работа с ПК.

         Для связи с ПК необходим переходник (адаптер, преобразователь уровня) RS-232 – UART TTL. Новичкам советую не городить переходник самостоятельно. Зайдите в ближайший ларек по продаже сотовых телефонов и купите любой шнурок, требующий при втыкании в USB установки драйвера. Раскурочив его, вы найдете необходимые контакты RXD, TXD и GND. Последний шнурок я купил для Nokia 1200 за 90 руб.

          Для работы с ПК подсоединяем переходник к разъему «COM» эмулятора. Запускаем любой терминал COM-порта и настраиваем свойства соединения как показано ниже (на примере программы Hyper Terminal).

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

         Для просмотра списка ключей нужно нажать кнопку ENTER.

          Для ввода нового ключа в форматах «Цифрал» и  «Метаком» используется следующий формат (разделитель – пробел): «xx yyyyyyyy z». xx – номер ключа, yyyyyyyy – код ключа, z – тип ключа (c – Цифрал, m - Метаком). Например, «14 ddbb77ee c» (неправильно набранные символы можно корректировать клавишей BACKSPASE). После ввода строки нажимаем ENTER. При успешной записи получаем в ответ «OK». Проверяется количество символов до нажатия ENTER. При вводе меньшего или большего количества символов, чем допускает формат, ввод будет сброшен и вновь выдано приглашение.

         Для ввода нового ключа в формате «Даллас» используется следующий формат (разделитель – пробел): «xx yyyyyyyyyyyyyyyy». xx – номер ключа, yyyyyyyyyyyyyyyy – код ключа. Например, «1e 190000001E848101».

         Для ключей «Цифрал» контролируются допустимые сигнатуры («b», «7», «d», «e»), для ключей «Метаком» - проверка на четность, для ключей «Даллас» - контроль CRC.

Просмотр и ручной ввод новых ключей:

         Кроме ввода кодов ключей доступны еще несколько команд:

- очистка ключа. Формат: «cl nn» (Clear key), где nn – порядковый номер ключа. Например, «cl 1e» – очистить ключ с номером 1E;

- очистка всех ключей и памяти DS1992, DS1993. Формат: «clr» (Clear keys);

- чтение области ОЗУ ключа DS1992. Формат: «o2» (Read OZU DS1992);

- чтение области ОЗУ ключа DS1993. Формат: «o3» (Read OZU DS1993);

- чтение области флэш ключа DS1992. Формат: «r2» (Read FLASH DS1992);

- чтение области флэш ключа DS1993. Формат: «r3» (Read FLASH DS1993);

- запись области флэш ключа DS1992. Формат: «w2» (Write FLASH DS1992);

- запись области флэш ключа DS1993. Формат: «w3» (Write FLASH DS1993);

- запись метки памяти DS1992. Формат: «k2 nn», где nn – порядковый номер ключа DS1992;

- запись метки памяти DS1993. Формат: «k3 nn», где nn – порядковый номер ключа DS1993.

         ОЗУ для ключей DS1992 и DS1993 находится по одним и тем же адресам и используется для сохранения их памяти при чтении ключа. Команда чтения просто выводит соответствующее ключу количество байт памяти. При чтении ключей можно отказаться от записи их памяти во флэш, но командами «о2» и «о3» можно посмотреть содержимое памяти.

         Метки памяти (символ «*» после «Dallas») информируют о том, что память именного этого ключа была сохранена во флэш и будет использоваться для всех других ключей с таким же типом.

         При записи памяти ключей вводятся строки по 32 байта. После ввода очередного байта эмулятор выдает пробел. После ввода очередной строки необходимо нажать ENTER. Есть возможность редактирования клавишей BACKSPASE. Информация сначала заносится в ОЗУ. После ввода последней строки ОЗУ переписывается во флэш.

         Поскольку количество циклов записи во флэш ограничено 10000 циклами, записывать память ключей DS1992 и DS1993 следует пореже, «без фанатизьму». За исключением того случая, если вы знаете, что записываемые данные и данные ключа во флэш одинаковы, т.к. перед записью выполняется их сравнение и при совпадении данных запись во флэш не производится.

Стирание ключа или всех ключей и памяти:

Ручной ввод и запись ключа DS1992:

          Для чтения и просмотра кода ключа подключаем его к разъему считывания «KEY». При обнаружении ключа и корректном чтении эмулятор предложит его сохранить. Утвердительный ответ во всех диалогах – нажатие клавиши ENTER, отрицательный - нажатие клавиши ESC.

Чтение и запись ключа «Цифрал»:

Чтение и запись ключа DS1990A:

Чтение ОЗУ и флэш ключа DS1993 до чтения:

Чтение ОЗУ и флэш ключа DS1993 после чтения с отменой записи во флэш:

Чтение флэш ключа DS1993 после чтения и разрешения записи во флэш:

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

Печатная плата и корпус.

         К сожалению, из-за недостатка времени ни плату, ни корпус я изготовить не успел. Существует только образец на макетной плате. Хотя, как показал опыт предыдущего девайса, моими наработками никто не воспользовался. По крайней мере, никто вопросов по печатной плате и корпусу не задавал.

Образец на макетной плате:

 Прошивка.

         Сделано три варианта прошивки. Под кварцевые резонаторы 8 МГц, 12 МГц и 16 МГц.

Фьюз-биты для них одинаковы. Выставляем, как показано ниже (на примере PonyProg).

Настройки EEPROM.

         Для правильной работы эмулятора требуется записать некоторую информацию в EEPROM. На рисунке ниже область настроек выделена зеленым прямоугольником.

 Настройки следующие:

1 байт – тип индикатора.                                               0xFF – с общим катодом, 0x00 – с общим анодом;

2 байт – антидребезг.                                                     0xFF – задержка 50мс,  0x01 – 1мс, 0x02 – 1мс и т.д.;

3 байт – время выхода в спящий режим.                         0xFF, 0x00 – 2c,  0x01 – 2.5c, 0x02 – 3c … 0x0F – 9.5c;

4 байт – показать код ключа сразу после чтения.   0xFF – не показывать, 0x00 – показывать;

5-8   байт – служебные.

 Заключение.

         Девайс был испытан на домофонах Метаком, Цифрал, Факториал и Визит. Кроме домофонов со считанными реальными ключами открывались и  те, что с «дырами» в прошивке (ключами с кодом «вездеходов»).

         Три варианта прошивки сделано из-за того, что на столе лежит наполовину спаянный эмулятор, который будет работать с ПК как USB HID device. Не успел доделать, да и программа обмена эмулятора с ПК еще не дописана толком. Варианты с кварцами 12 и 16 Мгц – основа для него.

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

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

         Ну и, напоследок, поздравляю Радиокота с днем варень сметанья и желаю дальнейшего процветания сайта.


Файлы:
Программы
Прошивка


Все вопросы в Форум.




Эти статьи вам тоже могут пригодиться:

Два в одном флаконе или эмулятор ключей домофонов "Цифрал" и "Метаком".

Эмулятор ключей МетаКом.