Comments 34
по делу если, то как я уже написал, этот ключ — всего лишь 64 бита информации. причем 16 из них заранее известны, первый байт это код семйства, для ds1990 это 0x01 а последний это CRC она вычисляется — остается 48 бит которые в теории можно подбирать перебором, учтите что домофон опрашивает ключи примерно раз в секунду — дальше сами считайте сколько времени у вас это займет…
второй способ попроще: практически у всех домофонов с завода идет прошитый в памяти мастер-ключ — осталось только его взять и считать, дальше делаем эмулятор ну в общем дело техники…
Обычно мастер-ключи делают только от своего дома, как такое ограничение выставляется?
Чтобы получить мастер-ключ для определенного типа домофонов достаточно найти мастерскую по изготовлению ключей для домофонов (в СПб на каждом углу) и заплатить около 500 руб.
2Alvein, понятие «мастер-ключ» чаще используется в значении «ключ, позволяющий попасть в сервисные настройки без ввода пароля» (это касается домофонов), для контроллеров, не имеющих цифровых панелей, мастер-ключ — единственный способ управления настройками.
так как фирм ограниченное (штучное) кол-во - достаточно соорудить мастер брелок который перебирает мастер ключи по очереди (по сути перебор паролей по словарю)
- откроются все что прошиты в брелок (хотя работать будет медленнее чем родные ключи)
другой вопрос что могут додуматься НЕ делать одинаковые для всех домофонов серии мастер ключи. (Потому что обслуживающая контора в принципе может сама осуществлять сервис, и хранить базу уникальных ключей по адресам установки. И ДАЖЕ может передавать брелоку серийник домофона, из которого последний вычисляет по крипто алгоритму с закрытым ключом ключ для конкретного домофона.) - разобрать такой уже равноценно утечке закрытого ключа из конторы. Который может вообще не фигурировать в прошивках. (в мастер брелоке его можно выполнять в виде крипто чипа у которого ключ наружу не отдается. В прошивке домофона фигурирует только открытый)
- но это довольно серьезная степень запарки на стадии разработки.
Хотя я уверен что какой то завод уже выпускает такие чипы как независимый компонент, ключ в который можно прошить однократно при инициализации.
В принципе можно взять огромное кол-во популярных дешманских микроконтроллеров, даже AVR'ы имеют режим прошивки с фьюзами которые запрещают дальнейшие способы перезаписи, а тем более чтение прошивки - в любой из таких можно положить единоразово релизнутую (и затем хранимую аки зеницу ока) прошивку с закрытым ключем, с которой брелок способен по сути проходить челлендж-алгоритм цифровой подписи. Благо в функциональности ключа вероятно прошивать абсолютно нечего, потому эти ключи может изготавливать единственный сертифицированный центр. А может и вообще единственный человек. (в таким образом прошим брелоке можно заложить функционал "мастер ключа" уже для него - который принимается единожды, для записи закрытого в ПЗУ и финализации защит - через сам 1-wire можно пачками инициировать такие ключи прописывая в них только закрытый ключ)
- устройства не обладающие таким способом защиты кстати уязвимы для скимминга (когда на хост крепиться фэйковая "морда" не мешающая втыканию ключа, но снифающая обмен данными) в случае с 1-wire интерфейсом такое устройство может быть чрезвычайно миниатюрным просто ободком поверх разъема i-button
забавно отметить, что подобный скиммер (с учетом того что скимеры на домофонах чрезвычайно не встречающийся анахренизм) могут долго висеть постоянно... и могут собирать данные о времени регистрации уже вас на точке... (потому что у ключей обычно есть id) в периодически забиераемый тем же i-button ключом... такие шпионские штучки
Основная идея в том, что в замках остаётся пустая часть памяти (то есть заполненая нулями). Наша задача по 1-wire передать сигнал приветствия, ожидания, и т.д. и т.п., а вместо уникального кода ключа (все эти коды записаны в память замка) передать нули. Замок найдет эти нули в пустой области памяти и замок откроется. Алгоритм прочитал на том же робокрафт.ру, но работает не на всех моделях. Так что было бы желание…
Я просто не понял как вы в своей сети используете эти устройства…
Ждем продолжения! Тема энергоэффективности сейчас актуальна.
я такой использовал как-то чтобы посмотреть как у меня автопрогрев в машине в морозы работает, на сутки бросил под крышку радиатора, потом достал считал, график температуры посмотрел
Продолжайте!
Тут никакой магией не обойдешь.
Варианты: а) длинный провод дает наводку на электронику и где то как то самопроизвольно срабатывает ключ включающий механизм замка (статика с ключа, плохо заземлено устройство, наводки на провод увеличивающиеся в момент когда к ним подключается рука с ключем).
б) программист тупо забился на проверку правильности ключа по crc. Возможно с контролем первого (или нескольких первых байт). Дабы не хранить базу ключей. но это уже моя задачка :)
Ситуация: разработчик поставил задачу хранить коды всех ключей, которые были считаны контроллером.
Ключ распознается по верному начальному коду (01) и верной crc.
Представим что всего возможных ключей около 100 (скажем столько ключей было выдано на руки).
Вопрос: сколько ключей будет сохранено в системе спустя скажем год?
скажем, потому что часть из выданных ключей была дохлой сразу из коробки и никогда не считывалась?
Если только по сrc, то может быть много меньше 100 — зависит от алгоритма вычисления crc, но в любом случае не больше 256 (срц — 1 байт, как я понял из статьи)
Остальные 6 байт ключа уникальные. Но известно, что выдано 100 ключей :). Случаи, когда сотрудники принесли ключи с собой не рассматриваем.
Если вопрос именно в надёжности проверки кода на корректность при большой веротности ошибки — то тут всё от надёжности crc зависит — если эта проверка пройдёт успешно, то запишет и что-то левое. Но на практике я могу только гадать, не общался с 1-wire даже в виде ключей от домофона.
Если скажем бригада с вечера приняла на грудь, и у нее тремор — с утра в контроллере вполне может быть удвоенное -утроенное число ключей, которые применялись на вход :)
если бы я был ленивым разработчиком и\или у меня было бы мало памяти для хранения всех 100 ключей я бы сделал так:
побитовое или для 48 уникальных бит всех 100 ключей, и хранить результат. каждый приложеный ключ сравниваем и если у нас не появилось не одного лишне бита, тогда проверяем первый байт на = 01 и сверяем достоверность црц.
ну и надеемся что нам повезёт )
очень интересно, ждем продолжения.
//жаль кармы не хватает плюс поставить :(
Введение в 1-Wire