Приветствую всех!

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

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



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

Суть такова


Думаю, многие знают, что ныне используемые электронные ключи на деле магнитными не являются. Тем не менее, такие образцы вполне существовали, наиболее известным из которых стал челябинский «Факториал» (хотя панели данной фирмы можно встретить и в нескольких других городах, производство и офис компании находятся у нас).



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

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


А попал в мои руки контроллер доступа Urmet 1102. Эта итальянская фирма в своё время выпускала собственный формат магнитных ключей, который имел название MagiKey.



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



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



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



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



Блок со снятой платой управления. Под ней находится сам считыватель.



Та самая плата отдельно. На ней находятся двадцать датчиков Холла, которые и считывают магнитные точки на ключе.



Обратная сторона. Здесь расположены три сдвиговых регистра. Они идентичны широко распространённым 74HC595, только работают на вход, а не на выход.

В чём преимущество перед «Факториалом»?


Внимательные наверняка уже заметили сходство с ключами «Факториала»: тоже три ряда магнитных точек, аналогичный принцип с датчиками Холла…

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

Таким образом, всего существует 2^20 — 1 кодов ключей. Единственный код, ключ с которым не может существовать, — 000000, так как условием для начала считывания ключа является положительный уровень хотя бы на одном из датчиков. Сам код хранится в памяти в виде трёх байт.

Запись ключей




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


К слову, на том же сайте нашлись и крайне мыльные фото ключей (впрочем, ничего больше найти не удалось, увы).

А вот видео (за авторством товарища, от которого мне и достался считыватель) по программированию более позднего экземпляра. Несмотря на то, что там используются RFID-метки, принцип остался совершенно тот же.

Первый запуск


Итак, разобравшись с программированием, пробуем запустить. Оригинальных ключей у меня не было, так что пришлось импровизировать.



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



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



Берём какую-нибудь железку, в моём случае, стальную линейку, налепляем на неё магнитики. Ставить их желательно как попало, разными сторонами, чтобы не было какой-то закономерности. Там, где полярность отрицательная, магнит тоже ставим, иначе датчик Холла будет ошибочно срабатывать от поля соседних точек, что нам не нужно.



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

Собираем ключи из спичек и желудей


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



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



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



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

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

В общем-то, самодельный аналог ключа готов. Аналогичным образом делаем два таких же. Всё, своеобразный Urmet Starter Kit (считыватель, «мастер», «свой» и «чужой» ключи) готов. Можно экспериментировать.

Ещё про ключи


Первоначально у меня были большие сомнения, что кустарный аналог ключа заработает. Но они не подтвердились, при ровном прикладывании ключа ложных неправильных срабатываний практически нет. Но, конечно, в идеале было бы приклеить магниты на какое-то более жёсткое основание (например, на кусок текстолита), чтобы они не отвалились при случайном изгибе.
Мне неведомо, из чего делались оригинальные метки. Если это был всё тот же магнитный пластик, то по надёжности они сравнимы с «Факториалом», проще говоря, она у них никакая. Другим вариантом может быть пластмассовая оснастка с вставленными туда постоянными магнитами, в таком случае самому ключу, разумеется, ничего не угрожает, а вот встреча с магнитными картами может стать для последних фатальной.

Коды ключей и структура памяти


В отличие от «Факториала», где все данные хранились в EEPROM контроллера, здесь используется отдельная микросхема памяти, в данном случае — 24C16 на два килобайта.

HEX-дамп памяти
AA 9A A3 AD 00 00 00 00 8D 46 1C 82 BC B4 8D 42 4A 8D 45 10 82 BD 85 82 BC 79 82 B9 A2 82 38 E0 82 B9 BB 82 3C A0 8D 12 AB 8D 14 2B 82 EA EE 82 EC 45 82 EB B0 8D 12 79 8D 12 C3 82 EA DA 82 ED 86 82 EC 68 82 EA B3 8D 13 CD 8D 12 FB 8D 13 3F 8D 14 E1 82 EA A9 8D 14 BC 82 EB 44 8D 18 CA 8D 14 B4 82 EB 32 82 EC 20 82 EF 4D 86 EC F7 82 EB 52 8D 13 C3 82 E9 B8 82 EC 53 82 EB FE 8D 14 A9 82 EA 7C 82 EC FF 82 EC 29 82 EC BE 8D 13 AA 8D 12 F3 82 EB D2 82 EC 58 8D 15 79 8D 14 2D 8D 12 E3 82 EB BF 82 EB 24 8D 15 53 82 EC 7D 8D 14 9D 8D 16 EB 8D 12 A0 8D 18 2B 8D 12 D4 82 ED 74 8D 13 A8 8D 12 92 82 ED 2A 82 EB F5 82 ED 23 82 ED 69 82 EB B7 82 ED 1A 8D 12 BA 82 ED 4A 82 EA 82 8D 12 DB 82 ED 60 82 EC 44 82 EC D1 82 EB 2C 82 EB 0C 82 EA 86 82 EA 7E 82 ED 57 82 ED 4F 8D 12 87 8D 12 B8 8D 14 FD 82 ED 54 82 EB B4 82 EC D3 82 ED 38 82 ED 77 82 ED 46 82 ED 3E 82 ED 5E 8D 15 3B 8D 12 C7 82 EB 9B 8D 13 03 82 EB E4 8D 12 7D 8D 12 C6 8D 11 85 82 EE 68 82 EE 48 8D 12 2F 8D 11 A6 82 EE 47 8D 11 A9 8D 12 71 8D 11 23 82 EE 4E 81 F3 AC 81 F3 7B 81 F3 AE 8E 0B 47 81 F4 61 8E 0B C8 8E 0A D7 81 F5 C5 81 F3 E5 81 F3 F7 8D 14 AC 82 EA CE 82 EC B9 82 ED 44 8D 13 E0 82 ED 3A 82 E9 C4 82 EC 02 8D 14 69 8D 12 B3 8D 12 86 8D 12 96 8D 15 35 82 EC 79 82 ED 42 82 ED 72 8C 04 CC 8D 12 A9 82 EC DB 82 ED 4E 82 EB B3 82 EC 98 8D 15 31 82 EB 0B 82 EB A9 82 EB 4E 8D 12 EF 8D 15 17 82 EC CA 8D 13 63 82 ED 05 82 EA 97 82 EC 3A 8D 13 90 8D 14 BE 82 EC 8A 82 EB 05 8D 14 D8 82 EC B2 82 EC 0F 8D 12 8F 82 ED 6F 8D 14 9F 8D 12 93 82 EB D1 82 EC 61 82 ED 76 8D 13 D5 82 EA B4 8D 14 1D 8D 12 F5 8D 12 F0 82 EA 8F 8D 15 5B 82 EB 47 8D 12 E9 8D 13 67 82 EC 0C 82 EC A8 82 ED 56 8D 14 C8 8D 14 77 8D 12 E5 82 EB 99 8D 15 01 82 EB 61 8D 14 E3 82 EC C2 82 EA D3 8D 14 B6 82 E8 D7 82 E9 49 82 EC 5F 8D 14 65 8D 14 6D 82 EB 42 82 EB 86 82 E8 25 8D 14 99 82 EC 14 8D 13 BD 82 EC 5C 8D 16 79 82 EA E7 8D 16 AB 82 EA C9 82 FC CE 82 EB CE 82 E8 B1 82 EC 74 82 E8 96 82 EC 54 8D 13 FD 8D 12 CD 82 EB B9 82 EA F0 82 E7 82 8D 14 E4 8D 14 4F 8D 17 A4 82 EB 8F 8D 42 1F 8D 41 7B 82 BA 95 8D 41 57 82 BE 94 82 BE 85 8D 42 4D 82 EA 9E 82 ED 3C 82 EA 68 82 EC C7 8D 12 A7 82 ED 12 82 ED 1B 8D 13 BA 8D 12 A5 8D 12 CF 8D 12 C4 8D 12 CA 82 EA FC 82 EB FB 82 ED 47 8D 12 D8 8D 12 B1 82 ED 52 8D 12 C5 8D 12 E1 82 ED 37 8D 14 7D 8D 13 93 82 EC 57 82 EC 77 82 EC 62 82 EC 25 8D 13 F3 82 EC 8C 82 EB D0 8D 14 EC 8D 14 79 8D 12 9A 82 EC D0 82 ED 1F 8D 15 09 8D 13 A0 8D 12 B5 82 EC 10 82 ED 55 8D 14 E9 82 ED 24 82 EC 6F 8D 14 D4 82 EC 93 8D 17 C9 82 E9 2E 82 EB 3A 8D 13 7D 82 EC 70 82 EB DE 82 EB 45 82 EA BB 8D 14 F7 82 EA FF 8D 15 27 82 EA 8B 8D 13 7B 8D 13 E1 82 EB EB 82 E9 6C 82 E9 41 8D 14 EA 82 E7 22 82 EC 8B 8D 14 57 8D 14 8F 82 EB 41 82 EB 9E 82 EB 1A 82 EC 9A 8D 13 89 82 EA BD 82 EF 9A 82 ED 39 82 ED 2E 83 EE B4 82 71 E6 8D DE 5B 8D A2 3D 82 C6 7C 8D 2A 84 82 C8 CE 8D 48 2A 82 B8 67 82 B9 E3 82 BC A0 82 39 BB 82 B9 7F 83 18 FE 8E 0C F7 82 FA E5 82 FB 13 82 FF A1 83 05 F5 82 FF 67 82 FC 5B 8D 00 E6 82 FA 5F 8C FC 0D 8D 05 A1 8D 04 43 8D 00 B6 8D 03 9F 8D 00 92 82 FB B9 82 FA CC 82 FF 85 8C FF 2E 82 FF F1 8D 04 DD 8D 5B 9A 82 39 96 8D 44 C4 82 B9 EA 82 A3 E9 8D 48 C8 82 BE 95 82 C4 CF 82 59 67 8D A7 2B 8D BB B0 82 5C 5B 83 7D F3 8D 08 A8 82 39 DA 82 BC F5 82 F9 4A 82 EE 57 82 F7 FA 82 BD B2 82 F9 FE 82 F9 5F 8D 08 17 82 F8 62 82 FA 61 8D 06 CF 8D 06 91 82 F9 F9 82 F8 3C 82 F9 D1 8D 07 67 8D 05 E6 8D 5D 14 8D 0D 2F 8D 0B D8 8D 09 B6 8D 0A 65 8D 09 8E 8D 8F 53 89 0F 03 82 BC B0 8E 08 E6 8E 0A C5 83 4C 4A 8D 0B 3B 83 52 6B 83 4D D2 8C B0 91 83 44 D0 83 3F DD 8C AD 80 8C B0 BD 8C BB 85 8C AD 81 8C 88 39 8C 88 55 8C 89 B5 8C 87 85 8C 88 9B 88 81 88 8C 88 C1 8C BE 83 83 3D C2 8C C4 CC 83 37 C3 8C C1 84 8C CD D4 8C C7 C2 83 C7 FC 8C C4 CE 8C C7 AE 8C 89 BE 8C 98 84 83 6E 08 83 6B 64 8C 91 CB 83 6B FA 83 67 02 83 6C C5 8C 99 E5 83 56 C4 83 62 6E 8C A6 31 83 57 4D 83 2F 4D 83 30 AB 8C BB 8A 83 39 8E 83 2F 07 83 2F D6 83 2F A9 83 33 E0 8C A1 88 82 B9 96 82 3C B4 81 3E A8 83 4F C3 8E BE 1F 8E 0B 63 83 7E 08 83 5C 43 83 6B 65 83 4A E1 83 33 79 82 EC 78 8C 9D 69 81 F6 2B 8D 13 D3 82 BB 9A 8C BC B6 82 BB DE 82 ED 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF


Вот оригинальный дамп EEPROM с рабочего считывателя (до того, как я его стёр до заводских настроек). Структура его следующая:

Первый байт — всегда 0xAA, вне зависимости от того, какие настройки выставлены. Даже на заводских установках он именно такой.

Следующие семь байт — место для тех самых настроек. Также туда пишется количество ключей и другие аналогичные данные.

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

Сразу после мастер-ключей начинаются пользовательские. Одна ячейка — один ключ. Всего можно записать до 650 ключей. В последней ячейке (смещение 7AC) записан код 55h 00h 00h. Прописывается он там сразу после регистрации первого ключа, в памяти после обнуления его нет. Пустая ячейка — тройка нулевых байт, что означает, что даже если бы счётчика ключей и не было, то открыть дверь просто большим постоянным магнитом (дабы получить код FFh FFh FFh) не выйдет.

Последние шесть байт памяти забиты FF-ами.

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


Как и следовало ожидать, в интернете крайне мало информации о данных устройствах. Да и встречаются они намного реже. Если в некоторых городах России «Факториалы» можно увидеть буквально в каждом дворе, то таких считывателей в использовании лично я не встречал ни разу.

MagiKey — пожалуй, тот максимум, что можно выжать из магнитных меток такого типа, дальше уже идут только различные вариации карт с магнитной полосой. Тем не менее, от большинства недостатков данной технологии избавиться так и не вышло: пластиковые ключи размагничиваются, а постоянные магниты собирают на себя всякий мусор и сами могут что-то размагнитить. Уже в начале нулевых Urmet начала выпускать считыватели и контроллеры доступа для привычных нам RFID-меток.

Такие дела.

Комментарии (15)