Продолжим тему о ключах iButton, начатую в статье «Универсальный ключ - вездеход». Сначала хотелось бы чётко разделить такие понятия, как «программирование ключей» и «регистрация ключей» в системах контроля доступа, т.к. у многих складывается не совсем правильное понимание сути этого вопроса.
Вспомним в общих чертах особенности iButton (DS1990А – т.к. дальше мы будем говорить именно о ключах этой серии). DS1990А представляет собой восьми байтовое ПЗУ с информацией, записанной лазером. В младшем байте содержится код семейства. Для DS1990A он всегда будет равен 01h. В шести последующих байтах содержится серийный номер ключа (уникальный 48-битный код, для этого ключа он имеет значение 000006342833). Последний байт называется CRC - это контроль четности, обеспечивающий подлинность переданных данных. Он вычисляется из семи предыдущих байт по определённому алгоритму. В данном случае CRC равен D8. Графически структура ПЗУ ключа показана на рис. 1
Рис. 1
Так как информация записана в однократно программируемое ПЗУ, эти ключи невозможно перепрограммировать – т.е. изменить их серийный номер. Поэтому, наиболее правильным является термин «регистрация ключа» - ключ с конкретным серийным номером записывается в память устройства контроля доступа и становится «своим» для данной системы. Если ключ будет случайно утерян, его номер можно удалить из памяти и, следовательно, он станет для системы «чужим» - получить доступ его посредством в этом случае становится невозможным.
А теперь рассмотрим, что такое «программирование ключей». Если ключ с определённым серийным номером зарегистрирован в конкретной системе контроля доступа, то, очевидно, что такая система будет реагировать на любой ключ, который имеет точно такой же номер. Однако в каждый ключ прописан свой уникальный номер, и подобрать ему «двойника» невозможно. Но ведь вполне можно считать информацию с ключа и записать этот код в чистую ПЗУ (или по другому – « электронную заготовку»). В качестве примера таких «заготовок» можно привести ТМ2004, которые и предназначены для клонирования ключей.
Итак, из всего вышесказанного становится понятно, что для того что бы получить доступ к определённой системе нужно либо «прописать» ключ в этой системе, либо сделать «клон» любого ключа, который был уже в ней прописан. В первом случае понадобиться обращаться к администратору, который отвечает за устройство доступа, а во втором – достаточно снять «слепок» с ключа любого официального владельца. Так как второй способ наиболее простой, то он и получил самое широкое распространение. Вот этот способ и рассмотрим более детально.
Клонирование ключа состоит из двух операций:
1. Считывание серийного номера с оригинала.
2. Запись считанного серийного номера в электронную «заготовку» ключа.
Сразу хочу отметить, что программы для записи серийного номера в «заготовку» являются платными (по крайней мере, freeware-варианта я не нашёл, если кто знает – сообщите, буду очень благодарен). А вот для считывания серийного номера с оригинала существует довольно много бесплатного софта, свободно выложенного в сети. Поэтому, для начала попробуем научиться считывать код с ключа DS1990А. Вообще-то серийный номер в большинстве случаев нанесён прямо на корпус «таблетки» ключа, но наша задача – извлечь его из ПЗУ «электронными средствами» :)
Для операций чтения / записи существуют как автономные устройства на микроконтроллерах, так и различные адаптеры к компьютеру. Естественно, что во втором случае устройство получается более простым.
Соберём простейший адаптер, который подключается к СОМ-порту персонального компьютера. Его принципиальная схема показана на рис.2:
Рис. 2
Как видите, схема очень простая, отличается минимальным количеством деталей и, что самое главное – не требует внешнего питания, т.к. получает его непосредственно с порта компьютера. Этот адаптер можно собрать на кусочке монтажной платы, например, как на рис.3.
Рис. 3
Для удобства подключения ключей используется стандартное считывающее устройство. При его отсутствии можно обойтись, например, обычной пластмассовой бельевой прищепкой, на губках которой закрепить контакты, подключенные к соответствующим точкам адаптера. Собранный адаптер подключаем к СОМ-порту.
Далее нам понадобится программное обеспечение, которое будет использоваться с данным адаптером. Мы будем пользоваться пакетом iButton – ТМЕХ, скачать который можно здесь - http://lock.3dn.ru/load/programma_dlja_raboty_s_shinoj_1_wire/5-1-0-192 После инсталляции пакета в соответствующей папке получится фактически две программы. Нас интересует программа iButton Wiewer. Запускает файл iBView32.exe и получаем вот такой интерфейс – рис. 4:
Рис. 4
После запуска программы выбираем в выпадающем списке вверху окна программы тип нашего устройства – DS1990A. Прикладываем ключ к считывающему устройство. Если адаптер собран правильно, ключ исправен и программа установлена корректно, то в верхнем левом углу (позиция 1) должна появиться считанная с ключа информация, а в правом нижнем углу (позиция 2) – надпись Click Here For Viewer (рис.5).
Рис. 5
Кликнув мышкой по этой надписи, выведем считанную с ключа информацию в более наглядном виде, (рис.6, позиция 3):
Рис. 6
Считанный код ключа можно сохранить в буфер обмена – для этого необходимо выбрать File-Copy Device list to Clipboard и затем вставить в любой текстовый документ.
Есть более простые и удобные программы для считывания серийного номера с электронных ключей. Например, программа 1-Wire reader. Эту программу разработал FELIX-RU - участник форума интернет-портала Казус.руи с его разрешения, я расскажу немного о данной программе.
Во-первых, 1-Wire reader работает с тем же адаптером, что и iButton Wiewer. Кстати, данную схему адаптера так же разрабатывал FELIX-RU.
Во-вторых программа 1-Wire reader более «легковесная» по сравнению с iButton Wiewer.
В-третьих – программа не требует инсталляции и состоит из одного запускаемого файла iButton Wiewer.exe.
Прикладываем ключ к считывающему устройству и кликаем мышкой по кнопке «Прочитать ключ». После этого в соответствующих окошках программы будет отображен код семейства ключа, его серийный номер и CRC (рис.8):
Рис. 8
Таким образом, с помощью двух различных программ (iButton – ТМЕХ и1-Wire reader) мы научились считывать информацию с электронных ключей DS1990A. А вот о записи серийного номера в электронные «заготовки» ТМ2004 (т.е. изготовление «клона» ключа) и проблемах, которые возникают с некоторыми устройствами контроля доступа при использовании «клонов» на основе ТМ2004, мы погорим в следующий раз. Правда, только при условии, что мне удастся найти freeware-версию программного обеспечения для выполнения операции записи в электронные «заготовки». Ну, а если не получится найти, то попробуем написать такую программу самостоятельно :)