Как стать автором
Обновить

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

Познавательно. Спасибо. Думал в этих «таблетках» просто сопротивление определённое.
Откройте секрет — как сделать такой ключ, чтобы он открывал любую дверь домофона?
вот что за люди, им о высоком, а им лишь бы дверь открыть ;)

по делу если, то как я уже написал, этот ключ — всего лишь 64 бита информации. причем 16 из них заранее известны, первый байт это код семйства, для ds1990 это 0x01 а последний это CRC она вычисляется — остается 48 бит которые в теории можно подбирать перебором, учтите что домофон опрашивает ключи примерно раз в секунду — дальше сами считайте сколько времени у вас это займет…
второй способ попроще: практически у всех домофонов с завода идет прошитый в памяти мастер-ключ — осталось только его взять и считать, дальше делаем эмулятор ну в общем дело техники…
Спасибо за пояснение, но немного уточнений, пожалуйста…
Обычно мастер-ключи делают только от своего дома, как такое ограничение выставляется?
Мастер-ключ есть для каждого (но не для всех) типа домофона (Метаком, Цифрал и т.д.).
Чтобы получить мастер-ключ для определенного типа домофонов достаточно найти мастерскую по изготовлению ключей для домофонов (в СПб на каждом углу) и заплатить около 500 руб.
Цифрал последнее время начал менять прошивки на новые, где этой дыры уже нет — половина уже не открывается. Метаком открывается абсолютно весь, Визит — тоже. С Элтисом пока ничего умного не подбросили, может и есть, но мне об этом еще не известно. Более редкими моделями — Urmet, Keyman, Raikman — никто не заморачивается. Контроллеры IronLogic Z5 такой дыры и не имели.

2Alvein, понятие «мастер-ключ» чаще используется в значении «ключ, позволяющий попасть в сервисные настройки без ввода пароля» (это касается домофонов), для контроллеров, не имеющих цифровых панелей, мастер-ключ — единственный способ управления настройками.
У меня есть такой ключик, открывает почти всё, думаете там просто заводской мастер-ключ? Просто открывает домофоны разных фирм.

так как фирм ограниченное (штучное) кол-во - достаточно соорудить мастер брелок который перебирает мастер ключи по очереди (по сути перебор паролей по словарю)
- откроются все что прошиты в брелок (хотя работать будет медленнее чем родные ключи)

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

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

В принципе можно взять огромное кол-во популярных дешманских микроконтроллеров, даже AVR'ы имеют режим прошивки с фьюзами которые запрещают дальнейшие способы перезаписи, а тем более чтение прошивки - в любой из таких можно положить единоразово релизнутую (и затем хранимую аки зеницу ока) прошивку с закрытым ключем, с которой брелок способен по сути проходить челлендж-алгоритм цифровой подписи. Благо в функциональности ключа вероятно прошивать абсолютно нечего, потому эти ключи может изготавливать единственный сертифицированный центр. А может и вообще единственный человек. (в таким образом прошим брелоке можно заложить функционал "мастер ключа" уже для него - который принимается единожды, для записи закрытого в ПЗУ и финализации защит - через сам 1-wire можно пачками инициировать такие ключи прописывая в них только закрытый ключ)

- устройства не обладающие таким способом защиты кстати уязвимы для скимминга (когда на хост крепиться фэйковая "морда" не мешающая втыканию ключа, но снифающая обмен данными) в случае с 1-wire интерфейсом такое устройство может быть чрезвычайно миниатюрным просто ободком поверх разъема i-button

забавно отметить, что подобный скиммер (с учетом того что скимеры на домофонах чрезвычайно не встречающийся анахренизм) могут долго висеть постоянно... и могут собирать данные о времени регистрации уже вас на точке... (потому что у ключей обычно есть id) в периодически забиераемый тем же i-button ключом... такие шпионские штучки

ответ в google.com
robocraft.ru/blog/RoboCraft/125.html — тут есть некоторые наброски кода для Ардуино.
Основная идея в том, что в замках остаётся пустая часть памяти (то есть заполненая нулями). Наша задача по 1-wire передать сигнал приветствия, ожидания, и т.д. и т.п., а вместо уникального кода ключа (все эти коды записаны в память замка) передать нули. Замок найдет эти нули в пустой области памяти и замок откроется. Алгоритм прочитал на том же робокрафт.ру, но работает не на всех моделях. Так что было бы желание…
да была такая идея, только чистая память забита не нулями, а 0xff
Ну так поведай миру как вы там сеть строили.
Я просто не понял как вы в своей сети используете эти устройства…
основное это градусники, контроль температуры на базе ds18b20
А сама «таблетка-ключ» зачем? переносной датчик температуры?
Ждем продолжения! Тема энергоэффективности сейчас актуальна.
есть и переносные в таблетках называются термохрон,
я такой использовал как-то чтобы посмотреть как у меня автопрогрев в машине в морозы работает, на сутки бросил под крышку радиатора, потом достал считал, график температуры посмотрел
Вот он ваш градусник, Но причем тут ключи?
в ключах тоже микросхема 1-wire
Одно время вникал в 1-wire, но потом надобность пропала — забросил и забыл. А вы напомнили про эту интересную технологию, продолжайте… я буду с удовольствием ждать других статей от вас на эту тему… Материалов нагуглить можно много, но вот что-бы своими словами, да «на пальцах»… особенно интересно какие были критерии выбора, из чего выбирали конкретные датчики, в общем на бытовом уровне ))
Продолжайте!
Из практики монтажа домофонов и СКУД, использующих DS1990: при расстоянии больше 10 метров от контроллера до считывателя, контроллер открывает замок по любому ключу, даже не занесенному в память контроллера. На простое замыкание не реагирует. Сечение кабеля — 0.22, я думаю, что проблема в этом, но принципа появления такого эффекта не понял.
В морг программиста или разработчика аппаратуры. Это из разряда чтения мыслей.
За головой разработчика обращаться в Iron Logic.
Ну скорее всего налажал программист. Там железный механизм должен быть — сравнение 6 байт ключа.
Тут никакой магией не обойдешь.
Варианты: а) длинный провод дает наводку на электронику и где то как то самопроизвольно срабатывает ключ включающий механизм замка (статика с ключа, плохо заземлено устройство, наводки на провод увеличивающиеся в момент когда к ним подключается рука с ключем).

б) программист тупо забился на проверку правильности ключа по crc. Возможно с контролем первого (или нескольких первых байт). Дабы не хранить базу ключей. но это уже моя задачка :)
кстате по своему опыту скажу, что при программировании дофонов да и вообще микроконтроллеров очень часто многие разработчики забивают на проверку црц.
Предлагаю интересную задачку из жизни на тему надежности 1-wire (конечно устарела, да все равно забавно)

Ситуация: разработчик поставил задачу хранить коды всех ключей, которые были считаны контроллером.
Ключ распознается по верному начальному коду (01) и верной crc.

Представим что всего возможных ключей около 100 (скажем столько ключей было выдано на руки).

Вопрос: сколько ключей будет сохранено в системе спустя скажем год?
меньше ста?
скажем, потому что часть из выданных ключей была дохлой сразу из коробки и никогда не считывалась?
нет.
Только по начальному коду и значению crc, или по самому ключу тоже?
Если только по сrc, то может быть много меньше 100 — зависит от алгоритма вычисления crc, но в любом случае не больше 256 (срц — 1 байт, как я понял из статьи)
Как можно определить, что ключ приложен верно? Если crc сходится, правильно? Что можно сделать для надежности? Известен первый байт всех ключей, он = 01, есть смысл его проверять.
Остальные 6 байт ключа уникальные. Но известно, что выдано 100 ключей :). Случаи, когда сотрудники принесли ключи с собой не рассматриваем.
перепутал приняты — считаны
Если вопрос именно в надёжности проверки кода на корректность при большой веротности ошибки — то тут всё от надёжности crc зависит — если эта проверка пройдёт успешно, то запишет и что-то левое. Но на практике я могу только гадать, не общался с 1-wire даже в виде ключей от домофона.
Так то да. Но удивительно насколько в данном случае используемое crc не подходит :)
Если скажем бригада с вечера приняла на грудь, и у нее тремор — с утра в контроллере вполне может быть удвоенное -утроенное число ключей, которые применялись на вход :)
Зато — хороший способ ловить принявшую на грудь бригаду :)
как я понял из другого комента — задача не запомнить все ключи которые пытались приложить, а минимизировать хранимую базу… тогда

если бы я был ленивым разработчиком и\или у меня было бы мало памяти для хранения всех 100 ключей я бы сделал так:

побитовое или для 48 уникальных бит всех 100 ключей, и хранить результат. каждый приложеный ключ сравниваем и если у нас не появилось не одного лишне бита, тогда проверяем первый байт на = 01 и сверяем достоверность црц.

ну и надеемся что нам повезёт )
конечно интересно, продолжайте!
> Так что, если это вам интересно – будем продолжать.

очень интересно, ждем продолжения.

//жаль кармы не хватает плюс поставить :(
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории