Наследники перфокарт в мире электронных ключей

Приветствую всех!
С появлением электронных замков было создано огромное количество типов ключей для них, от совсем экзотических до прижившихся и используемых повсеместно и сейчас.
И если магнитные экземпляры всё же были редкостью, то вот предмет сегодняшнего обзора, думаю, успели застать многие из вас.

zce6uqqfgznoxhpuubasw0ns_vw.png

Итак, в данной статье поговорим об оптических домофонных ключах. Узнаем, как они работали, разберём и разберёмся с конструкцией и схемотехникой считывателей. Традиционно будет много интересного.

Суть такова


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

p_2e9ua0fj4hl95cmykzb0f9cdy.png

Eltis ЦП100КМ. Фотография в какой-то степени легендарная, есть практически в любом посте про то, какие вообще ключи бывают. Даже я бахнул её во введение к одной из прошлых своих статей. На самом же деле это была всего лишь иллюстрация к какому-то объявлению на вторичке, где продавался новый комплект такого девайса.

hn3isf0-bf84tlnhe5txgg8y8g8.png

Тоже ЦП100КМ, но другой (более поздней) модификации. Фото лучшего качества нет.

zgd7z1sf6dqj2zxwrhwfblapuly.png

Метаком М10-ОК. Судя по всему, модель очень редкая, ни одной фотографии помимо этой не нашёл.

m5yye6oalscdhqnushtwwloja8m.png


Метаком МК99. Существовали также модификации с ТМ-считывателем (у меня самого есть такой экземпляр).

wgvikrzc1__oyind6oehv7aungi.png


Страж 2Д-01. Реликтовый экземпляр, один из первых домофонов на базе микроконтроллера, а не дискретной логики.

psamuhn2tk3yezhmyvh9alsynrk.png


Импульс-ДС. Как и предыдущий экземпляр, выпущен заводом «Протон-Импульс».Cyfral CCD 2094/O. Фото не нашлось, зато обнаружилось видео.

k0fhmedvini6aem1oxi7bpbaxno.png


Помимо блоков вызова выпускались также и просто ключевые устройства. Как, например, Cyfral CD95/O. Увы, лучшего качества не нашлось.

r1d1uozmsit5_kmjyrinrllcsww.png

Не остался в стороне даже челябинский «Факториал». Вот заброшенный блок вызова Факториал ДМ256-ОК. Судя по всему, выпускались они параллельно с магнитными.

lszhkxtwle1iouxdrvjga44nflc.png

Неизвестный блок вызова (второй оптический из известных мне в Челябинске), судя по названию, детище местного ПО «Полёт». Эта панель тоже не работает, рядом прикручен считыватель Matrix с контроллером Z-5R. Год выпуска неизвестен, ориентировочно, 1999.
Итак, как можно видеть, огромному количеству производителей довелось выпускать такие ключи. Популярность их пришлась на конец девяностых и начало двухтысячных, пока они не были вытеснены более надёжными Touch Memory.

Ключи


Хотя все оптические ключи работают по одному принципу, они различались по форме и паттерну.

8ebsiaeqqdlsjp97irwwzavqt4e.jpeg

Заготовка из цинка. Такие ключи использовались в системах Факториал и некоторых Цифралах.

2rea9n97gd6zqlu-qag4qy5iftm.png

Металлический плоский ключ. Самый популярный вариант.

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

Обзор оборудования


Если с магнитными всё было просто, то достать домофон с оптическим ключом было настоящим испытанием, так как их банально нигде не было. Опущу тут все подробности поиска, так как этот оффтоп мало кого заинтересует, а желающие узнать это всё найдут меня в Telegram.
Но в итоге у меня в руках оказалось аж четыре панели в неизвестном состоянии, а также одно ключевое устройство (точнее, то, что от него осталось). Именно всё это мы сейчас и рассмотрим.

Eltis ЦП105КМ


sbkgit9vj0bk9j_fl417zhbmja8.jpeg

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

pp65g-kazridcdy5kponiimit6s.jpeg

На обратной стороне клеммы для проводов, наклейка с номером, обратная сторона считывателя. Аппарат поддерживает подключение до ста квартир, чего в большинстве случаев с лихвой хватает.

k18qfx87ocqc8neuzwe9h8wpaag.jpeg

Снимем крышку. Плата залита лаком, на ней микросхемы дискретной логики и МК PIC16F84. Микросхемы памяти нет, всё хранится в EEPROM контролера.

hrfff2ttenbvu7trfgabvxsiluu.jpeg

Считыватель крупным планом. Видно свечение трёх инфракрасных светодиодов, которые просвечивают ключ.

k8pi6trocxnkrbld8xlunlokawq.jpeg

Обратная сторона считывателя. Здесь расположены три фотодиода, работающих в фотогальваническом режиме. Сигнал с них поступает на вход счетверённого операционного усилителя К1401УД2Б.

Создаём ключ


Оригинальных оптических ключей у меня нет, так что их пришлось сделать самому. Для этого понадобится любой непрозрачный кусок пластика подходящих размеров и толщины. В моём случае таковым стал огрызок магнитной карты (остатки той самой, которая фигурировала в посте про MagiKey). Размечаем и проковыриваем дырочки. Диаметр каждого отверстия — примерно три миллиметра, расстояние между дырками — два с половиной.

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

Помня это всё, делаем аналог ключа. Получаем примерно следующее:

wbmkdkhcffizto0wj7jycks2eqc.jpeg

Отверстия не должны быть слишком маленькими, иначе ключ будет считываться неуверенно. Но и слишком большими их делать тоже не стоит, тогда паттерн не прочитается вообще. На фото ниже то, как не следует делать.

obkfy2ejnzaztymrn6suswww1ra.jpeg

Записываем ключ


Пароля для входа в режим программирования на ЦП105КМ нет. Для входа туда надо закоротить «сервисный» контакт на клеммнике на землю.

d5rxyybw7lzh5oadl8vij5p5vyc.png

Далее открываем мануал и согласно ему записываем ключ.

tstgwmzg2bn9cw5_cb5sjw0alxc.jpeg

Выходим, вставляем, и оно таки работает! Можно пробовать дальше.

Eltis ЦП200КМ


А вот и другой девайс. Он куда более навороченный — цифровая адресация, дисплей, поддержка до 160 абонентов, индивидуальные коды.

kzd3a6cbndigbp9cycp2f_ckovo.jpeg

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

d4p4ntgzwzbqrpwiiempqw3rdnk.jpeg

Обратная сторона. Как водится, тут ничего примечательного.

kqxtiwzpaq9r3avejk0vabaal1i.jpeg

Разбираем. Экземпляр в нерабочем состоянии: считыватель отсутствует, кнопки подглючивают. Блок основан на микроконтроллере PIC16F677, рядом с ним видна микросхема памяти. Все чипы намертво запаяны в плату и залиты лаком. За датчики отвечает не операционный усилитель, а компаратор К1401СА1, так что считыватель тут основан либо на фототранзисторах, либо на фотодиодах (но не в фотогальваническом, а фотодиодном режиме включения).

3rpui2wrmhcj1je80onbgv3yisa.jpeg

Обратная сторона платы. Подсветка клавиатуры осуществляется двумя лампочками накаливания, которые за долгие годы давно сдохли и уже не горят. Слева от них — датчик освещённости. Индикатор светодиодный, модели КИПЦ27А-5/8К.

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

Собираем считыватель


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

ru4pzfunymr_8lgsk0lwwaqx2rm.jpeg

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

qpnbqi0qxy7zvxufdzfalfwjf1k.jpeg

С фототранзисторами сложнее: надо было на чём-то их закрепить. Придумал взять какую-то пластмасску и посадить их на неё при помощи термоклея. Решение оказалось никудышное, пока паял к датчикам провода и искал потом их правильное положение (само отверстие в диаметре миллиметра полтора), много раз пожалел, что так сделал. Но приклеивать прямо на корпус считывателя на хотелось.

lsils_byjc3-5qun67sa6k4bc8m.jpeg

Прикручиваем пластмасску с датчиками на законное место и припаиваем провода. Распиновка тут такая (на плате есть нумерации контактов в виде обозначений К1… К5, шестой контакт не задействован):

  1. Земля
  2. Подсветка
  3. Первый датчик
  4. Второй датчик
  5. Третий датчик


Укладываем их, чтобы не мешали (заодно и поджал датчики), и всё, можно пробовать записывать ключ.
Здесь это делается так: жмём «вызов», удерживаем семь секунд, на экране появляется «P____», затем вводим код (по умолчанию 1998), жмякаем »1», вставляем ключ последовательно одной и другой стороной. При этом на экране будет появляться считанный паттерн ключа.

lok5p1fs9bwjosnsv1mc23w2ypc.jpeg

Тут выяснилось, что первый мой оптоключ не подошёл из-за того, что первая тройка дырочек была расположена слишком близко к краю. Пришлось сделать новый, из найденной на улице скидочной карты (к слову, этот паттерн был выбран неслучайно). И вот — оно таки работает!

БЭКУ


Помимо тех панелей мне досталось ещё и ключевое устройство (Eltis БЭКУ-КМ3).

3qsuggttzk2y_kaf2fmfgdbrt8c.jpeg

А вот и оно. Изначально оно было полностью разобранным, считывателя не было (предположу, что его вытащили для другой панели), плата тоже была побита жизнью. Тут всё простенько — щель для ключа и зелёный индикаторный светодиод.

8ngzxjs2v9mlvst8sd_v7qm6ana.jpeg

Обратная сторона. Поверх этикетки приклеена ещё одна, зачем это сделано — мне неведомо.

whe6f5r3p-z9ozrscr3ozxzkn5a.jpeg

Плата. Динамик отсутствует, для тестов припаял на проводках пьезоизлучатель. Остатки проводов некогда вели к считывателю: красный — земля, синий — первый датчик, чёрный — второй датчик, зелёный — третий датчик, жёлтый — минус подсветки, белый — плюс подсветки.

kgqlg5zlyfskh1bqyghmpn6qvh8.jpeg

Всё устройство собрано на базе микроконтроллера PIC12CE519. Клеммник на четыре контакта: шестнадцать вольт переменки, земля, сигнал открытия двери.

qfhyqpllgittvvsx5bhwjhetbxw.jpeg

Штатный считыватель был давно утрачен (подозреваю, что снят для оживления другого девайса), но мне достался отдельно другой.

hl4fu-pa7fe4loikjw9ugclrgjw.jpeg

С одной стороны у него три инфракрасных светодиода. Они тут отечественные, судя по виду, это АЛ156А.

hmx3mwxjph9lx5wyz_ble0w_iiq.jpeg

С другой же стороны три фотодиода. Они тут так же работают в фотодиодном режиме.

zd-_-smkkx1pjj21wmfnozxh0du.jpeg

Плата с фотодиодами снята. Видны три отверстия, через которые свет попадает на датчики.

945d44m_wdtpk3w7nivngaqtypq.jpeg

Припаиваем считыватель и прикручиваем его на своё законное место. Провода отвратительные: то ли они окислились, то ли изначально были такими, но лудятся они крайне плохо.

Паттерны ключей


kneou5kyvsugc55-af6c7y4vnpc.jpeg

Несмотря на то, что комбинаций ключей огромное количество. среди них были типовые паттерны. И именно это поможет нам разобраться с программированием БЭКУ.
Всё дело в том, что настройка этих устройств осуществляется с помощью мастер-ключа. И при его отсутствии ничего сделать не выйдет.

axvye97swje3wfmtshaihznllsc.jpeg

Но есть один нюанс: в комплекте со всеми БЭКУ шёл ключ с паттерном номер семнадцать. И, так как его обычно не перезаписывали, можно воспользоваться им. Накалываем этот паттерн, вставляем ключ… работает! Можно записать любой другой свой ключ.

Ещё немного про ЦП200


Помимо представленного ранее ЦП200КМ мне достался ещё один экземпляр.

2io6djtwjie68ybmq5i-w-mg3oa.jpeg

Он сильно отличается от того. К слову, блестящим он был не с завода, краску отчистили до меня ввиду ужасного её состояния.

sdwltaufvphqxokzq_2k2ofihcs.jpeg

Обратная сторона. Вынесенный из-под крышки считыватель, какие-то адреса…

je-z1ybzeenacha-l6pfi2-ybsi.jpeg

А вот и плата. Схемотехнически девайс тоже другой. Отличается даже архитектура контроллера, на этот раз тут стоит легендарный AT89C51.

lkpjomabgxwgh10fkc8aljuu9wg.jpeg

Обратная сторона. Всё те же отвратительные кнопки, всё тот же индикатор. Несколько дорожек съедены коррозией, так что их позже пришлось наращивать.

ssvxw5eh7bafdwiwyi_mipjr2ni.jpeg

Считыватель здесь точно такой же, какой был в составе БЭКУ, однако схема включения тут совершенно иная: фотодиоды работают в фотогальваническом режиме. Сигнал с них поступает на вход операционного усилителя LM324N. Первый и третий датчики подключены ко входам компаратора К1401СА1, для второго же эта цепь собрана на базе четвёртого операционного усилителя из состава LM324N, так как оставшиеся два компаратора микросхемы К1401СА1 задействованы в цепи контроля состояния линии. Также особенностью этой панели является отсутствие кнопки выхода: вместо неё предполагается подключить ещё один считыватель. Таким образом, выход без ключа при такой схеме невозможен, что, например, в случае пожара может быть очень опасно.

Установленный здесь считыватель был в нерабочем состоянии: в него попала вода, и контакты окислились. После их пропайки устройство заработало нормально.

Тема записи ключей хорошо раскрыта в этом видео:

Несмотря на отличие в модели, прошивка абсолютно идентична.

Cyfral CCD 2094/0


Этот блок достался мне практически в идеальном состоянии. Лишь вмятина на крышке и слой пыли говорили о том, что он долго был в эксплуатации (и стоял, судя по всему, где-то в тамбуре, а не на улице).

94plsa-cjab1auynvabyvqx4aby.jpeg

А вот и он. Эти блоки также существовали и в другом дизайне, на манер поздних CCD 2094/TC.

pkkbcqmix9orl8-07a8krclhzae.jpeg

Пластиковая крышка, подключённый шлейфом считыватель. В крышке два отверстия для регуляторов. Указана и дата сборки — декабрь 1999.

ngmdub4bbwgmragy2lrs7m2i380.jpeg

Снимем крышку. МК тоже AT89C51. Вообще, по схемотехнике аппарат похож на CCD 2094/TC тех же лет и плоские Eltis ЦП100КМ.

kxfjux0gmvl8zzy35jseuofokqc.gif

Схема устройства.

8_qfci_zcg_akwur7s61u_h58mi.png

Наибольший интерес вызывает, конечно, сам считыватель. Инфракрасные светодиоды запитаны от питающего напряжения через резистор. Каждый фотодиод подключён к инвертирующему входу одного из операционных усилителей, их аноды соединены с землёй. На резисторах R4, R5, R6 выполнена обратная связь ОУ. Выход операционного усилителя поступает на компаратор. Как и в случае с ранним ЦП200КМ, один из компараторов реализован на базе четвёртого операционного усилителя чипа LM324N.

4ewrvl6xsnusmyzrgauzq8sxlak.jpeg

Как водится, считыватель не работал. Поэтому снимаем его.

wxudbcaukimzaoagumagosxr9zi.jpeg

В качестве фотодиодов используются отечественные ФД-256.

vdldlumux7qd7fthzugggcihte8.jpeg

Инфракрасные светодиоды. Они тут не менее реликтовые, АЛ115А.

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

Коды ключей


kowpn9x5ibv5ikhpr_ibgktz8ck.jpeg

Ну и напоследок разберёмся с тем, как хранятся ключи в памяти. Я ожидал, что ключ будет храниться в виде двух-трёх байт, но нет: для хранения паттерна ключа в памяти отведено аж пять байт. Старшие три бита символизируют состояние трёх датчиков, младшие всегда нулевые.
То есть, например, ключ как на фото будет иметь код E0 80 40 20 80. Получается, что минимальный код ключа — 20 20 20 20 20 (верхний ряд дырочек), а максимальный — E0 E0 E0 E0 E0 (пробиты все дырочки). При этом, как и на перфоленте, дырка означает единицу, а не ноль, так как по сути записывается наличие или отсутствие сигнала с датчика. Такое решение занимает больше места в памяти, но сильно облегчает работу разработчику, так как легче считывать ключ (едва датчик что-то увидел, считываем из памяти очередной байт и сверяем его с тем, что пришло), а также проверять значения на корректность (байты должны быть ненулевыми). При этом пустые ячейки забиты как 0xFF, что отличается от 0xE0, так что открыть домофон, потыкав в считыватель сплющенной беломориной, не удастся (но, тем не менее, на совсем древних домофонах такая уязвимость была и основана она была на том, что домофон, видя, что датчики то видят свет все сразу, то нет, считал, что вставлен ключ со всеми отверстиями).

Пароли


Я не нашёл никаких сведений насчёт паролей в старых Элтисах, поэтому решил упомянуть и это.
Микросхемы памяти на этих домофонах запаяны, так что для считывания необходимо либо выпаять их, либо подпаяться к линиям данных.

4w7qsqpbig8yfjqe9dnrrkcuzba.jpeg

Если на раннем ЦП200 придётся паять провода к выводам микросхемы памяти, то в поздних всё сделано весьма удобно — на плате имеется разъём для подключения программатора. Распиновка его следующая:

  1. Не используется
  2. Ключ
  3. SDA
  4. SCL
  5. 5 В
  6. Не используется
  7. Земля


Подключаем любой программатор. умеющий внутрисхемное программирование. Подойдёт даже CH341A с софтом NeoProgrammer, далее с подключенным к компьютеру программатором выставляем адрес 0xA2, подаём питание на панель и считываем дамп.
В ранних прошивках сервисный пароль лежит по смещению 100h и занимает четыре байта, по одному на каждую цифру, далее идёт байт 92h, а затем системный пароль в таком же формате. В поздних он представляет собой целое число в формате Big-Endian, записанное по смещению 2.
На Cyfral CCD 2094/0 пароль считывается аналогично поздним моделям: это HEX-код двух байт по смещению 1 для сервисного и то же самое по смещению 3 для системного.

Делаем ридер паролей ещё лучше


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

bjwpbvix6rihedvju9qk5z_09tk.png

И вот — теперь каждый, кому попадётся такая панель, сможет без труда узнать пароль.

Вот как-то так


Оптические ключи оказались куда более популярным вариантом, нежели магнитные. Но и они имели массу недостатков: всё ещё весьма малое число кодов, а также низкая надёжность теперь уже не ключей, а самих считывателей: попадание внутрь пыли и грязи даже в небольших количествах гарантированно выводит считыватель из строя, панель очень требовательна к напряжению питания, считыватель никак не защищён от всяких жизненных потрясений. Это и стало причиной, по которой эти ключи навсегда ушли в историю.
Такие дела.

Ссылки


Другие мои посты про ключи, домофоны, считыватели и прочие подобные устройства


mxuanbovcusqgmqdgugvpnql8vq.jpeg

© Habrahabr.ru