Ключ от всех дверей. Эмулятор ключей от домофона.

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

Пара слов о принципе работы…
Бытует мнение, что в таблетках от домофона находится магнит, и он открывает дверь. Нет, это не так. Таблетка представляет собой ПЗУ, с жёстко зашитым в ней ключом. Называется это ПЗУ — Touch Memory, марки DS1990A. DS1990A — это и есть марка домофонных ключей. Общается с домофоном по шине one-wire (однопроводной интерфейс). Эта шина разработана фирмой Dallas и позволяет общаться двум устройствам всего по одному проводу. Если устройство пассивное (как в нашем случае), то оно ещё и передаёт ему питание по этому проводу. Надо ещё заметить, что необходим ещё общий провод (чтобы цепь замыкалась), но, как правило, все земли устройств подключённых к этой шине соединены воедино. В ключе находится конденсатор на 60 пикофарад, который обеспечивает кратковременное питание ключа на момент ответа. Но ведущее устройство должно постоянно (не реже чем в раз 120 микросекунд) генерировать сигнал единицы, для зарядки этого конденсатора, чтобы ПЗУ в таблетке продолжало питаться.

Потроха таблетки. Как видно, никаких магнитов там нет!

Короче говоря, отбросив все умные термины можно сказать просто, все, что необходимо для работы устройства передаётся только по одному проводу. Для сравнения для работы USB необходимо 4 провода, а тут будет всего два, а при соединении земли, то только один. К слову сказать, шина 1-Wire оказалась столь удачной, что на ней даже организованны промышленные сети, в том числе и в нашей стране.

Внутреннее устройство таблетки

Организация шины One-wire
Шина One-wire работает следующим образом. Есть ведущее устройство Мастер, и ведомое устройство, в нашем случае пассивный ключик . Основные сигналы генерирует мастер, сигналы логической единицы и нуля. Ведомое устройство может только принудительно генерировать сигналы нуля (т.е. просто просаживать шину на землю через транзистор). Упрощённая схема ведущего и ведомого устройства показана на картинках.

Схема таблетки

Схема мастера

Если взглянуть на схему, нетрудно заметить, что по умолчанию у мастера стоит всегда +5 вольт, а ля логическая единица. Для передачи логического нуля мастер через транзистор замыкает шину на землю, а для передачи единицы — просто размыкает. Это сделано для того, чтобы обеспечить питание ведомого устройства. Ведомое устройство сделано аналогично, только оно не генерирует +5 вольт. Оно может только просаживать шину на землю, тем самым, передавая логический ноль. Логическая единица передаётся просто «молчанием» устройства.

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

Импульс сброса и импульс инициализации.

Домофон, в режиме простоя постоянно генерирует импульс RESET. Когда подключается таблетка, то она отвечает ему импульсом PREFERENCE, показывая мастеру о том, что можно с ней работать. Это одни из самых длинных импульсов. (подробнее о длительности импульсов ты можешь узнать в даташите лежащей в архиве).

Пример чтения домофоном ключа.

После генерации ключом импульса PREFERENCE, мастер девайс выжидает некоторое время и выдаёт команду на чтение ПЗУ, обычно это код семейства, в нашем случае 33H. Обрати внимание, как сделана передача нуля и единицы. В любом случае импульс «роняется» на землю, но если передаётся единица, то он быстро восстанавливается (около 1 микросекунды), если же должен быть ноль, то импульс некоторое время «висит» на земле, затем возвращается опять в единицу. Возвращение в единицу нужно для того, чтобы пассивное устройство постоянно пополняло энергию конденсатора, и на ней было питание. Далее домофон выдерживает некоторое время и начинает генерировать импульсы приёма информации, всего 64 импульса (т.е. принимает 64 бита инфы). Ключ лишь должен правильно сопоставить длительности. Если он хочет вывести ноль, то он удерживает шину некоторое время в нуле, если же нет, то просто молчит. Всё остальное за него делает домофон.

Содержимое ключа DS1990A.
В домофонах, и просто устройствах, где для открытия дверей используется подобные устройства, применяется ключ стандарта DS1990A. Это устройство представляет собой 8-ми байтовое ПЗУ, с информацией записанной лазером.

Схема дампа ключа.

В младшем байте содержится код семейства. Для DS1990A он всегда будет равен 01h. В шести последующих байтах содержится серийный номер ключа. То самое сокровенное, что идентифицирует ключик. Последний байт называется CRC, это контроль чётности, обеспечивающий подлинность переданных данных. Он вычисляется из семи предыдущих байт. К слову заметить, что это не единственный стандарт. Существуют перезаписываемые ПЗУ, на которых можно носить информацию, также есть ключи шифрования. Но всё многообразие таблеток Dallas просто нереально рассмотреть в рамках одной статьи, о них можно почитать на диске.

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

Морда ключа

Нас интересует из всей этой информации следующее:

CC = CRC — это байт контроля чётности 7-й байт в прошивке
SSSSSSSSSSSS = двенадцать ниблов //нибл = 1/2 байта// серийного номера, т.е. самого ключа в хекс кодах.
FF = код семейства, в нашем случае равен 01h — нулевой байт нашего ключа.

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

Эмулятор.
Вот и дошли мы до самого вкусного — эмулятора ключей от домофона. Сначала я нашёл на каком-то сайте готовый эмулятор, зашил его в свой АТ89С51 и он не заработал (что не удивительно). Но это не спортивно юзать чужие прошивки и отлавливать чужие, специально оставленные, баги в коде. По сему я начал делать свои эмуляторы и писать под них свои программы. В общем, я попробовал сделать эмулятор на 6 различных микроконтроллерах, разных архитектур, принадлежащих двум семействам AVR и i8051, все производства Atmel. Заработал не на всех, и программ было написано уйма. По началу ставились вообще наполеоновские задачи сделать универсальный эмулятор с возможностью подборки ключа, но потом я оставил эту затею в силу её геморойности и бессмысленности, пусть ей займутся другие люди, кого заинтересует данная статья. Но себестоимость эмулятора, не считая затраченных трудов меньше 70-80 ре, можно даже уложиться в 30 ре, если делать, например на ATtiny12.

Принцип действия эмулятора.
Мы достаточно подробно рассмотрели принцип работы домофона, и соответственно не составит большой проблемы описать алгоритм программы эмулятора DS1990A. Смотрим внимательно диаграмму, и думаем, что надо сделать. А делать надо следующее. Висящая в воздухе нога микроконтроллера (пока не присоединена к земле, импульс ресета) будет считаться контроллером логической единицей. Значится так, мы после подачи питания на котроллер должны ждать того пока наша ножка не уйдёт на землю, а ля в ноль. Как мы услышали ноль, радуемся, ждём некоторое время и переводим порт из режима чтения в режим записи. Затем роняем шину в ноль, и держим её некоторое время — генерим импульс PRESENCE (длительности импульсов смотри в даташите). Дальше снова переводим шину в режим чтения, и ждём что же нам скажет мастер — домофон. Он нам скажет команду чтения, состоящую из 8-ми бит. Декодировать её не будем, т.к. в 99,999% случаев он нам скажет команду дать свой дамп, а ля 33H, просто отсчитываем 8-мь импульсов и не паримся. Дальше ждём. И начинается самое сложное и интересное — надо быстро смотреть, что нам говорит домофон и отвечать ему тоже быстро. Нам нужно побитно выдать серийный номер, состоящий из 8-ми байт, о которых я говорил выше. Я это делал следующим образом (не важно, какой микроконтроллер, принцип везде один будет), загружал байт в какой-нибудь свободный регистр, и сдвигал его вправо, и смотрел бит переноса. Как только домофон роняет шину в ноль, то если у меня флаг переноса установлен в еденицу, то я просто отмалчиваюсь на этот импульс, и жду генерации следующего импульса чтения бита от мастера. Если же у меня во флаге переноса находиться ноль, то после того как домофон уронит шину на ноль, я перевожу порт микроконтроллера в режим вывода и принудительно удерживаю шину в нуле некоторое время, потом отпускаю и обратно перевожу порт контроллера в режим чтения. По длительности импульса в земле устройство мастер понимает, передана была ли ему единица или нуль. В принципе всё, дальше домофон должен радостно запипикать и открыть дверь.

Практика.

Схема эмулятора

Настало время проверить всё вышесказанное на практике. Для отладки, чтобы не бегать постоянно к домофону, я достал плату, читающую домофонные ключи (читай домофон). Устройство называется Wachdog, и на самом деле это универсальный комбайн, но из всего изобилия функций мне необходима была только возможность чтения ключей. Данная платка считывает ключики в USB порт, и мне любой программой работающей с СОМ портом (виртуальный СОМ порт) можно было получить ключ.

Плата тестер. Видня надпись dallas.

После небольшого гемороя и войны с отладчиком получился код. Вот пример кода вывода данных домофону на AT89C2051. (Вообще AT89C2051 это хоть и популярный, но устаревший контроллер. Один из первых которые я программировал. Периферии минимум, памяти тоже всего ничего. Шьется только высоковольтным программатором. Хотя есть его новая замена AT89S2051 его уже можно прошить внутрисхемно через какой нибудь AVR ISP, а может и через AVRDUDE — не проверял. Самое любопытное в том, что он совместим по ногам с ATTiny2313 так что код можно портировать и на Тиньку. прим. DI HALT)

DI HALT:
Этот адов код мы писали в с Длиным в далеком 2006 у него в квартире. Уржались до икоты над своими тупняками. Я тогда еще впервые пощупал AVR. Сидел фигачил на совершенно незнакомом мне ассемблере процедуры чтения из EEPROM, Длиный же ковырял демоплатку для своего будущего эмулятора. Особо запомнился мой прикол с вачдогом, когда у меня МК сбрасывался во время записи в ЕЕПРОМ и выпиливание микросхемы i2c памяти из платы с помощью отрезного круга. Эх… ничо, сгоняю в Москву мы снова отожгем!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
;========================================
; Выдача в линию серийника
; in:	R0- адресс где лежит серийник с типом таблетки и CRC8
; USES: A,B,R0,R1,R2
;========================================================
DEMUL_SendSer:
	mov	R2,#8
SS3:	mov	ACC,@R0
	mov	R1,#8
SS2:	JB	TouchFuck,$	;ожидаем, когда шину уронят в ноль 1->0
	RRC	A		;C:=A.0; shift A;
	mov	TouchFuck,C	;TouchFuck:=C;
	MOV	B,#9
	DJNZ	B,$		;Delay 20 us
	setb	TouchFuck
	JNB	TouchFuck,$	;цикл пока 0
	DJNZ	R1,SS2
	inc	R0
	DJNZ	R2,SS3
	ret
;=======================================================

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

Фотографии эмуляторов

Наиболее интересна проверка CRC, которая осуществляется домофоном. Тебе понадобится это, если ты захочешь поставить Dallas замок например на свой комп. Пример рассчёта CRC на A89C2051 (хотя данный код будет работать на всех микроконтрерах семейства i8051.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DO_CRC: 
PUSH 	ACC	 ;save accumulator
PUSH 	B 	;save the B register
PUSH 	ACC 	;save bits to be shifted
MOV 	B,#8 	;set shift = 8 bits ;
 
CRC_LOOP:
XRL 	A,CRC	 ;calculate CRC
RRC 	A	 ;move it to the carry
MOV 	A,CRC 	;get the last CRC value
JNC ZERO 	;skip if data = 0
XRL A,#18H	 ;update the CRC value
;
ZERO:
RRC	 A 	;position the new CRC
MOV	 CRC,A 	;store the new CRC
POP 	ACC 	;get the remaining bits
RR 	A	;position the next bit
PUSH 	ACC 	;save the remaining bits
DJNZ 	B,CRC_LOOP ;repeat for eight bits
POP 	ACC 	;clean up the stack
POP	 B	;restore the B register
POP 	ACC	;restore the accumulator
RET

Архив со всяким барахлом. Исходники. Даташит.

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

DI HALT:
Дела давно минувших дней, преданья старины глубокой… Длиный — WDR! (понятно будет только посвященным ;)))) )

Доредакционная версия статьи из журнала Хакер

157 thoughts on “Ключ от всех дверей. Эмулятор ключей от домофона.”

  1. Эх, не успел я про такое чудо написать =(
    >>Таблетка представляет собой ПЗУ, с жёстко зашитым в ней ключом.
    Не всегда. Есть еще резонансные электро-магнитные/звуковые ключи.

      1. Они похожи, но не даллас и не 1-wire.
        Но опять, же у далласа только 0x01 (DS1990A) таблетки представляют собой тупой пзу, есть и другие, содержащие eeprom, да еще и шифрованный (DS1991) или с календарем и часами (DS1994) — но такие устройства в простых домофонах не используются, разве что в каких-нибудь элитных

          1. Длинный, в криптографии, а точнее в качестве ключей для подписи платежек в некоторых клиент-банках используются DS1990A. Самое отвратительное, что я работаю в фирме где у буха таких ключиков штук по 6. Я в свое время видел этот эмулятор в одном из выпусков ][акера, чуть модифицировал и привязал на кнопочки для 6 свободных лапок. Это был один из моих первых опытов по паянию всяких схемок на МК. К сожалению, опыт оказался удачным…

  2. P.S. А почему все считают что там МАГНИТ? Я, когда был в санатории, задолбался разъяснять некоторым товарищам, что в карточках для телефона не магниты а микросхемы… НЕ ВЕРЯТ!!!

    1. Повсеместно используется «намагнитить транспортную (смарт) карту на месяц» … хотя там таки электроМАГНИТНЫЕ волны :)

    2. Как бы там ни было, лично я в школотные годы воспользовался (с помощью магнита) «уязвимостью» в домофоне, где испоьзовался геркон, а ключи представляли собой магниты. Правда не для чего-то нелегального, а для удовлетворения ЧСВ когда пришел к другу и позвонил в его квартиру :). Надо было видеть шокированную морду друга :))).

      в каждом мифе есть доля правды. Правда это был 1998 год.

    1. и там она была вроде более адаптированная.
      чтобы толпа малолетних кулхацкеров не пошла выламывать для тестов домофоны )

          1. По кочану. Чтобы упомянутые выше кулхацкеры не юзали то, на изготовление чего у них собственных мозгов не хватило.

              1. Они и не опасны. Просто тупо скопировать чье-то и гордиться этим так, будто все придумано и сделано самостоятельно… ну нехорошо это =) Хотя, с другой стороны, руки далеко не у всех достаточно прямые даже для того, чтобы повторить чье-то. «Порог вхождения» тут немал и именно поэтому в электронике идиотов почти нет.

                1. Ага. Из жадности, значит))
                  А страничку я, пожалуй, сохраню…

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

                  1. Из жадности? Что от меня убудет, а?))

                    В вашем случае повторение чужого вызвало интерес и жажду знаний, вы идете дальше и не стоите на месте и это правильно. Это нельзя не приветствовать.

  3. хм.. а ключи, которые бесконтактные, у нас выглядят по типу как капля, плоская, в пластиковой оболочке, они какого типа?

    Полезная статья про 1-wire, спасибо, я как раз взялся его изучать =)

    1. Там внутри находится RFID метка. Dlinyj в своём блоге вроде разбирался с ними. Было бы замечательно, если бы он написал подобную статью про эмулятор ключей на основе RFID (тут должен быть просящий смайлик).

  4. да, принцип такой же, как и далосовских термодатчиках. По-моему, можно использовать одну и ту же базу для работы со всеми one-wire

        1. там пзу и сдвиговый регистр. при подачи питания сразу начинает модулировать током кодовые посылки. примитив.

  5. Еще добавьте, что 1-wire _очень_ привередлив к таймингам. Особенно устройства с паразитным питанием (по линии данных) — оно и понятно, в миниатюрных чипах просто нет места для конденсаторов способных прижать сигнальную линию к земле на длительный промежуток времени. Поэтому так же не стоит кодить полагаясь на худший вариант событий (длинные провода, низкоомная подтяжка). Тайм слот 45 мс, но читать значение линии нужно не позднее чем через 15мс от начала слота. Мне без осциллографа было очень трудно разобрать, почему все таблетки показывают 0xFF (хотя в протеусе, чсх, все работало). Соответственно эмулятор через 15мс должен выдать сигнал в линию.
    В общем при работе с 1-wire интерфейсом главное выдерживать время, правильно и безупречно, это главное правило.
    По эмулятору: помимо 0x33 очень часто используется 0xCC (skip rom) по которой устройство должно откликнуться без указания адреса.

    1. Ага, домофон раз из 15 ключь не признаёт и мерзко верещит ошибкой.
      Вообще он тормозной какой-то. Пластиковая таблетка вроде пошустрее.

    1. С тем, что скорости процессора нехватает. У него комманда выполняется в отличии от AVR не за такт, а за машинный цикл, который равен 8 тактам. На этой частоте впритык удаётся ему всё обрабатывать.

      1. правильно ли я понимаю что частота кристалла должна быть выше некой критической? т.е. и с кристаллом на 12 МГц работать будет?

        а если я перенесу код на ATtiny85, например, то можно будет задействовать внутренний осциллятор или так же понадобится кристалл на 12 МГц?

        1. Там выдержанны тайминги именно под этот кварц. Ну если удастся переписать код для ATtiny, и вообще под любую AVR, то вполне можно будет другой кварц поставить. Там другая система комманд, и совсем другой принцип работы. Думаю можно даже на внутреннем кварце реализовать. Но помню, пробовал реализовать на ATtiny12, мне нехватило скрости внутреннего генератора (по рассчётам).

        2. AVR быстрей С51 в 12 раз. При той же частоте. (12 тактов против 1 у AVR) Так что на AVR вполне хватит и внутреннего осциллятора на 8мгц.

              1. а такой точности хватит, если там всё приписано строго под тайминги?
                хотя процент для 8МГц это всего 80кило..

  6. Кто знает как перевести int в массив символов на IAR AVR (5.30)? Со sprintf там проблемы какие то, RAM сносит нафиг!

  7. Конденсатор там примерно на 800 пФ.

    Note 5: Capacitance on the IO pin could be 800pF when power is first applied. If a 5kΩ resistor is used to pull up the IO line to
    VPUP, 5µs after power has been applied the parasite capacitance will not affect normal communications.

    60 пФ — это входная емкость при условии, что конденсатор паразитного питания уже зарядился и диод в основном закрыт.

  8. Длинный, интересно будет почитать про метокомовские и цифраловские ключи! Эти у нас редко встречаются. Еще неплохо сделать на этом же девайсе отдельный вход для метокомовских и цифраловских ключей, и прошивкой распознавать какой именно подключен.

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

    Когда же оригинал уходит из дома, он прижимает таблетку к трубке — и говорит таким образом системе, что он ушёл.

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

        1. Сплошь и рядом бывают ситуации,когда одновременно заходят несколько человек.И чтож,всем «прикладываться» ? Неет,такое если где либо и будет (или уже) так это в системах покруче.В магазинах,складах,банках(там вообще наворотов может быть выше крыши плюс открытие только двумя-четырьмя ключами,словно запуск ракеты)

    1. какая-то странная идея. если несколько ключей? Например 2 человека ушли из дома — 2 ключа. И в обоих разные коды тогда применять? Трубка и так сигнализирует о том, что использован ключ, при открытии двери…

    1. О, можно в кпк эмуль пихнуть.
      Останется только освоить SDK WM6 и купить лишний провод юсб :)
      Хотя может и правда в мр3 файл загнать всю посылку.

  10. Di, ну ты как всегда не перестаешь удивлять, буквально пару дней назад захотел разобраться с 1-wire интерфейсом, но в инете ничего толкового так и не нашел, а тут ты уже и статью написал, очень нужную и понятную. Спасибо :)

  11. Однако не первый раз уже этот замечательный сайт сурово коррелирует с течением моих мыслей :)

    Как раз пишу прошивку для tiny13 в качестве «ключа от всех дверей».
    Только как-то у вас всё очень громоздко получается…
    У меня мастер состоит собственно из меги 8535 (что было под рукой) и резюка для подтяжки. Проверено — читает без ошибок. А, ну ещё MAX232 для выдачи результатов на комп и конденсаторы в обвес.
    Для самого ключа заготовлена конструкция вообще из трёх деталек — tiny13L, конденсатор и, на всякий случай, диод в помощь защитному. Это ещё не проверил, но по идее тоже должно хватить.

    1. Пытался на тини12 сделать, но что-то по моим расчётам мне должно было нехватить скорости. А макс232 — это рудимент. ft232rl наш выбор! А по поводу подтяжки — внутренней нехватает?

      1. Скорости по идее должно хватить даже на той 12ой, что не быстрее мегагерца. Может быть, правда, с некоторыми извратами. 4-8 МГц должно хватить без вопросов.

        FT232RL — отличная штука, но в нашей «столице Сибири» за неё дерут аж 250 рублей. Плюс к тому, я ещё не успел обзавестись принтером, а рисовать под неё платы маркером это полный конец обеда. Оно конечно заработало в конце концов, НО БОЛЬШЕ Я ЭТОГО ДЕЛАТЬ НЕ БУДУ.
        Простите, нервы :)

        Подтяжка там положена довольно суровая, от 2 до 5 кОм, если не ошибаюсь, а внутренняя — что-то типа 50-100К. И если использовать фантомное питание, токи через эту подтяжку могут быть довольно неслабые.

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

  13. Не догоняю. :) Шина «1-wire», а на схеме два вывода: X1-1 и X1-2. Оба вывода прикладываются одновременно к контактной площадке считывателя? И типа X1-1 эмулирует заряженный кондер, а X1-2 разряженный?

      1. Бррр… Питание чего? Эмулятор же, вроде, ведомое устройство и оно питание мастеру не должно давать. Там только данные, наверное.

          1. контакты X1-1 и X1-2, одновременно касаясь контакта домофона, имитируют «таблетку» ключа? и соответственно мк своим питанием — заряд-разряд кондёра настоящего ключа?
            так?

  14. Ди халт! можешь как нить сделать небольшой видео урок по технологической сборке IDC разъема? я уже просто 2 штуки сломал)

  15. Проглядел бегло комментарии, вроде не заметил ничего подобного нижеследующему.
    Так вот, автор не совсем прав в том, что не разобрался, как реально работают все эти ключи. Технология DS1990A оказалась настолько удобной, что наши китайские товарищи переняли её и штампуют подобные ключи безо всякой маркировки. Более того, отличие данных китайских ключей в том, что серийный номер их _не прошивается на заводе_. Именно на этом основана возможность скопировать ключ от домофона (и было бы интересно почитать, как именно осуществляется прошивка серийного номера). И именно поэтому, не смотря на то, что изначально система безопасности планировалась как «один человек — один ключ, при появлении нового человека вводим серийный номер в замок», на практике чаще всего новые ключи изготавливаются копированием старых. Для конкретной задачи вскрытия чужого подъезда это, конечно, особо важным не является, но для изложения принципа работы домофона, ИМХО, небезынтересно.
    Также небезынтересно будет узнать, какие серийные номера прошиваются в домофоны «по умолчанию», в существовании таковых можно убедиться по таким вот ключам: key-volga.narod.ru (подобных сайтов в сети куча).

      1. Очевидно, проблема в том, что для копирования ключа необходим сам ключ :) И, кстати говоря, по стандарту скопировать именно ключ нельзя, он, как и сказано в статье, записывается на заводе. Интересно было бы узнать способ прошивки.
        Кстати, судя по найденному где-то в интернете, серийный номер FFFF… открывает немалую часть домофонов. Но сам я не тестировал, потому точно не скажу.

      2. Даже больше, можно его просто хорошо сфотографировать — серийный номер указан на лицевой стороне, а посчитать CRC не сложно

    1. У нас в«»Минске широкое распространение имеют электронные ключи без маркировки со, смешно сказать, «секретным резистором» внутри. То«»есть, замок будет открываться резистором определённого номинала.

  16. Вобще говоря протокол хороший, и дальность обеспечивает порядка 100 метров, но медленный, и с прецизионными таймингами, осюда имеем невозможность обработки прерываний в момент работы с девайсом по 1wire. В свое время делал многоточечный терморегулятор, там использовал DS18B20 пришлось под них заюзывать отдельный контроллер, иначе при возникновении преывания(например по USART) сбивался протокол, и датчик либо вобще не отвечал либо выдавал неверную температуру.

    1. При обмене данными с датчиками лучше отключать прерывания. Тем более, что при обмене с 18B20 передается очень мало информации, а во время ожидания измерений (там елси не ошибаюсь 750мс) можно и прерываться.

    2. На самом деле достаточно запрещать прерывания на время передачи/приема БИТА (~60uS) и при ожидании ответа Presence(присутствие) (~120-240 uS)

  17. А можно ли открыть эмулятором совсем чужую дверь? От которой нет ключа, или если никак не стащить ключ у друга. Типа брутфорса что то. Какие временнЫе оценки перебора? Наверное без толку этим заморачиваться.

      1. Предположим домофон опращивает ключ каждые 250мс, тоесть 4 варианта в секунду, бутфорсим 6 байт, это 2^48=281474976710656 вариантов. 281474976710656/4=70368744177664 сек. 70368744177664/3600=19546873382,68 часов 19546873382,68/8760=2231378,24 лет. Если даже предположить что наш искомый ключик находится гдето в середине диаппазона…. Прапраправнуки точно недоживут (

          1. Ну, тот домофон, что висит у нас на подъезде опрашивает каждые 2-3мс, на общение уходит 12мс.
            А если ещё тщательно приложить голову, то время перебора сокращается уже чуть ли не до часов.
            Только вот в подъезды всегда проще и быстрее было проникать методом социальной инженерии, а в местах посерьёзнее наверняка предусмотрена защита от брутфорса.

            1. Только беда в том что при неправильном ключе домофон делает _delay_ms(1000) что даже при малом количестве ключей (отмычка с памятью на 10-15 ключей) не очень комфортно.
              Не претендую на знание всех домофонов, но во всяком случае так делает мой домофон и еще пара проверенных

              1. *долго вглядывается в записи общения собственного домофона с чужим ключом

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

                1. Еще, как — бывает зимой раза по три тыкаешь, а пока ошибку не пропищит замерзнуть можно.
                  Поэтому и забил на идею с универсальным ключом (который будет держать в памяти все считанные таблетки и при подключении подбирать нужную)

                  1. Девайс с индикатором и кнопкой, кнопкой выбираем номер ключа(подъезда), и тычим в замок, для почтальенов и всяких сантехников

                    1. Грустно это — батарейки, кнопки…
                      А тиньку, кондёр и диод можно даже в тот же таблеточный корпус уложить.

            2. А нука ткните меня непутевого носом в описалово 1wire про 12мс…?
              Хотя пусть будет ), один фиг тыщи лет.
              И интересно как это так тщательно приложить голову, чтоб до часов?
              Атакой по словарю??? :)

              1. 12мс это не из описалова, это практика )
                Берётся девайс типа вот этого http://www.pctestinstruments.com/ (я такой временно упёр на работе), нетбук, и вперёд на мороз -30 к домофону…
                На пару с датащитами — бесценный источник информации.

                А глову…
                Ну начать с того, что в подъезде девятиэтажки примерно 36 квартир, в каждой квартире от одного до 5, если не 6 ключей. Все ключи разные.
                Потом, ни разу не видел ключей, у которых в самом старшем нибле было что-то кроме нулей…

                В общем, когда-то считал по-всякому от нечего делать, получалось от двух часов до месяца на перебор. Долго, но всё же не века.

                1. потом ещё вряд ли перебор надо делать последовательный. нехитрыми расчётами числа квартир или ещё каких параметров наверняка можно сделать прореживание с вероятностью срабатывания пораньше тысяч лет )

              2. Инициализация около 1мс, Команда чтения 16 бит, ответ ключа 64 бита, итого 80. Таймслот от 60 до 120мкс, обмен от 5мс, до 9.5мс, плюс паузы как раз и выходит 10-12мс

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

  18. Спасибо за интересную статью))

    а если попробовать замутить автоматический подборщик, реально? Вед не всегда модно достать код родной «таблетки»

  19. А может кто-нибудь по русски расскажет ещё про Wiegand 26/ Wiegand 34 ?
    Валяется куча ридеров для карт, а с какой стороны за них браться не знаю.

      1. Дико извиняюсь, все понятно кроме как буквочки SSSSSSSSS перевести в реальный код ключа. Который уже надо забить в сам эмулятор. Каждая S равна половине кода ключа, так код нам то и неизвестен.

  20. Подскажите где в Украине купить купить микросхемы Dallas, например DS2405, DS2408 и те же термодатчики?

  21. на одном сайте предлагают купить универсальный ключ от всех домофонов. Принцип действия основан на том, что в любом домофоне не все ячейки памяти заняты и в свободных записаны нули или FF, и ключ имеет такой номер. Попробуйте кто-нибудь проверить это.

  22. Извините, что не по теме, но скажите пожалуйста, что означает надпись ЯU.. я этим вопросом уже лет 5 мучаюсь…

  23. Интересно а электромагнитным импульсным генератором можно с улицы открыть дверь домофона)?

    1. Импульс должен быть таким, чтобы противодействовать замкнутому полю магнита. Т.е. ОЧЕНЬ мощным. Скорей у тебя яйца от него отвалятся. Может проще ломом дверь отжать?

  24. Я с асмом не дружу, поэтому нашёл код на си для пика и переписал для авр. Вот что получилось: http://fh-up.ru/emulator.c.gz Домофон и самодельный замок открывает. Скоро сделаю на tiny13A-20SU мальнький(в корпусе от брелка автосигнализации) эмулятор. А в этот можно ещё в него добавить чтение будет;)

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

    1. Конечно, насколько памяти хватит…
      Внимательней читай комменты… там была ссылка на эмулятор на 10 ключей
      Причем он не только эмулирует, но и считывает их с таблеток — не надо перепрошивать на каждый новый ключ

  26. Блин, ну все хорошо. И статья про 1-wire и про эмулятор. Да вобще на сайте полно полезностей на ассемблере, а вот статьи как работать с датчиком 18В20 нет. Понятно что нужно зреть в корень, то есть в протокол 1-wire. Ну не получается у меня что то программно его описать. Полно примеров на Си, программ для PIC. Интересно было бы измерить и вывести температуру на ЖК или порт USART.

    1. Как раз хотел на Сях написать конечный автомат для работы с этим датчиком. Вот только датчик надо намутить.

  27. Неее. Только не на Сях!!!! На Сях полно примеров. А на АСМЕ для АВР нет, только куски теории, или обработки ключей И-Буттон. А что значит датчик намутить? Я себе представлял такую задачу: как раз пример использования а) USART (статья есть), б) преобразования температуры в формат ВСД или другой, в) измерение температуры с разными конфигурациями точности измерения. Измеряем температуру и оправляем в порт, обрабатываем ПК и выводим на экран (ЖК, ЛЕД) и т.д.

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

  28. DI HALT, извини что опять влезаю не по теме. Статья по 1wire которую я ищу касалась только протокола (временные задержки) без привязки к изделию. Сейчас она в оглавнении не просматривается.

  29. DI привет, никак не могу врубиться, что за 33Н? Написано что это 8 битное число. Судя по схеме это число 0b11001100 = 204. Не понятно 204 равно чтоли 33Н? Ниже ссылка из текста.

    Декодировать её не будем, т.к. в 99,999% случаев он нам скажет команду дать свой дамп, а ля 33H, просто отсчитываем 8-мь импульсов и не паримся.

    1. Извини кажется понял, H указывает что число 33 является шеснадцатеричным. значит 33 это 51 в десятичном.И 33Н это 0b00110011. Просто на картинке оно задом наперед, так как биты отправляются с конца.

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

Добавить комментарий

Ваш e-mail не будет опубликован.

Перед отправкой формы:
Human test by Not Captcha