Ключи DC-2000, аналогично TM-2002, передают свой код путем изменения потребляемого
тока. Внутри у них, как мне недавно
подсказали, микросхема K1233KT1. Передача идет кодовыми
словами по 4 бита. В описании толком не указано как же считываются кодовые
слова, от младшего бита к старшему или наоборот, из-за этого возникло несколько
представлений ключей в ПЗУ. Любители копирования ключей уже придумали их
называть С1-С4, только описание что как кодируется выкладывать не торопятся.
Так что пишу что сам нашел.
1) Блок вызова CCD-2094. Процессор в этом домофоне не поддерживает никаких
ключей кроме далласов, поэтому ключи считывает специальная плата-адаптер.
Она читает и ключи формата даллас и DC-2000, а после
эмулирует ключ даллас на выходе.
Разработчики платы решили что кодовые слова передаются от
младшего бита к старшему, поэтому таблицу из описания K1233KT1 нужно
перевернуть вот так:
Значение слова
|
Код
|
0111
|
00
|
1011
|
01
|
1101
|
10
|
1110
|
11
|
1000
|
Стартовое слово
|
Полученный код передается в двух младших байтах, в третьем
всегда 01, в остальных нули.
Пример:
0001 0111 0111 1101 0111
1110 1011 1011 1101 - двоичный код
start 00 00 10 00 11 01
01 10 = 08 D6
Код на выходе платы = FA 00 00 00 01 08 D6 01
Что пишется в ПЗУ тут разницы нет, так как ключи даллас
передаются без изменений.
2)Контроллеры ТС/ТС-01 - используются совместно с CCD-2094M, М-10, М-20. Тут уже кодовые слова читаются от
старшего бита к младшему, так что биты в таблице будут стоять так как и
передаются. Зато полубайты теперь идут
от младшего к старшему, и байты в ПЗУ тоже.
Значение слова
|
Код
|
1110
|
00
|
1101
|
01
|
1011
|
10
|
0111
|
11
|
0001
|
Стартовое слово
|
Ключи в памяти занимают по 4 байта, из которых первых два -
код ключа DC-2000. В 3-ем байте ПЗУ всегда 80 для DC-2000. В 4-ом байте далласовская CRC вычисленная из первых 3-х байт. Для
наглядности вот кусок дампа одного из контроллеров:
Пример:
0001 1101 1110 1011 1110
0111 1110 1110 1101 - двоичный код
start 01 00 |
10 00 | 11 00 | 00
01 = 12 34
L H
L H L
H L H
Код в ПЗУ = 34 12 80
B1
Код даллас = F3 00
00 00 00 12 34 01
0001 1011 1011 0111 1011
1110 0111 1101 0111 - двоичный код
start 10 10 | 11
10 | 00 11 |
01 11 = AB
CD
L H L H L H L H
Код в ПЗУ = CD AB 80 02
Код даллас = AB 00 00 00 80 AB CD 01
3)В CCD-40 видимо есть баг, ключи сохраняются аналогично контроллерам TC/TC-01, но первый байт ключа всегда равен нулю.
0001 1011 1011 0111 1011
1110 0111 1101 0111 - двоичный код
start 10 10 | 11
10 | 00 11 |
01 11 = AB
CD
L H L H L H L H
Код в ПЗУ = CD 0B 80 EC
Код даллас = AB 00 00 00 80 0B CD 01
4)Возможно тут
должен быть CCD-2094.1, но у меня также ни одного под рукой нет, к тому же там
сейчас каждый месяц новая прошивка, кто знает как они извращаются над ключами.
В общем, во всём этом байтолюбстве без бутылки не разберешься, зато
интересно.
"В описании толком не указано как же считываются кодовые слова, от младшего бита к старшему или наоборот"
ОтветитьУдалитьВ даташите на K1233KT1 и на K1233KT2 указано "Условно принимается, что код микросхемой выдаётся с младшего бита."
"Любители копирования ключей уже придумали их называть С1-С4" здесь по сути только С-1и С-3 перекодировки а С-4 это код "вездехода" одинаковый для всех.
Но откуда в цифрале то "вездеход", в каких моделях? В контроллерах там контрольные суммы не дают FFFF баг заюзать, а в пультах (по крайней мере в CCD 2094) количество записанных ключей указывается в специяльной области ПЗУ, тоже баг не прокатит.
ОтветитьУдалитьВ "промышленном" копире ТМД-5 Rfid, при вызове перекодировки С-4 предлагается к записи на далловскую болванку код 9B 00 00 FF FF FF FF 01
ОтветитьУдалитьА Вы обратили внимание на то что в даташите на К1233КТ1, согласно Таблице 1,
код может состоять только из шестнадцатиричных E,D,B,7, остальные запрещены и в результате имеется 65536 комбинаций кода. (А вот в К1233КТ2 разрешены все значения от 0 до F и получается 268 435 456 комбинаций кода.) Поэтому при перекодировки используют вот такую табличку:
7b-1
7d-2
7e-3
b7-4
bb-5
bd-6
be-7
d7-8
db-9
77-0
dd-a
de-b
e7-c
eb-d
ee-f
Оно то предлагается, вот только открыть такой болванкой хоть одну дверь мне не удалось. Насчет таблиц перекодировок, если вчитаться в пост, то их две, просто в даташите считают по пол байта, и я не стал переиначивать на целые.
УдалитьИ ещё. Очень полезной была бы информация о том как хранятся коды ключей в базах домофонов разных производителей и разных моделей. Если у Вас есть такая возможность и желание это исследовать и выложить в своем блоге, то многие интересующиеся этой темой сказали бы Вам спасибо :).
ОтветитьУдалитьВозможность есть, есть дампы памяти разных домофонов, только думаю всем интересней алгоритмы перекодировки ключей из одного формата в другой. А так ничего особо интересного там нет, разве что для ремонтников найдется пара интересностей.
УдалитьКак хранятся коды ключей в дампах как раз и интересны в плане возможных перекодировок и не только :).
УдалитьУ меня есть копир ТМД-5 Rfid и копир от RECTO с казуса. Если Вам нужно, дайте интересные Вам коды ключей цифрал и метаком, я их перекодирую в формат цифрала на этих копирах, всеми вариантоми перекодировки заложенными в них.
Ну так дамп ничего не дает, тут нужно еще помучать железку хорошенько, а у меня они долго не задерживаются.
УдалитьСпасибо за предложение, но я и сам не новичёк. Правда у меня TMD-3rfid, но кодировки я уже и сам все расшифровал. Остался только CCD-40 нерасшифрованный, но это дело недолгого времени, у меня уже лежит один, только его слишком сильно шокером припекли, жду нового процессора.
Для CCD2094.1 возможны 2 варианта кодирования в формат Даллас. Первый вариант совпадает с CCD2094, он справедлив до версии 2.2 включительно.
ОтветитьУдалитьВ версии выше 2.3 есть ошибка (не знаю, насколько сознательная) - при чтении ключа не очищается один из служебных регистров, в итоге происходит наложение по лог. ИЛИ части кода самого на себя. Поэтому там результат записи в ПЗУ домофона будет зависеть от кода ключа.
Вот таким кодом я преобразую ключ из версии 2.2 в версию 2.3
k=((int)Key[2]<<8)|Key[1];
k=((k&0xAA00)>>3)|k;//приводим к виду цифрал 2.3
Уважаемый автор сообщения с формулами, а не могли бы Вы разжевать поподробнее. Например с примерами преобразования.
ОтветитьУдалитьДумаю тут имелось ввиду нечто вроде такого (пофиксил баг)
Удалитьmain()
{
char Key[] = {0x01,0x5A,0xA5,0x01,0x00,0x00,0x93};
int k=((int)Key[2]<<8)|(int)(Key[1]&0x00FF);
k=((k&0xAA00)>>3)|k;
printf("%x,k");
}
>>ffffb55a
где Key - код ключа Dallas, а k - то что запишется в ПЗУ
Вот уже ввели перекодировку Цифрал в даллас для блоков вызова "Cyfral" CCD-20, CCD-40; "Cyfral" M-10, M-20; Секрет-10, Секрет-20, Секрет-999. в "любительский" копир на казусе http://kazus.ru/forums/showthread.php?t=67407&page=376
ОтветитьУдалитьперекодировки - забудьте
ОтветитьУдалитьСкажите, а прошивку для 2313 к этой плате можете сделать?
ОтветитьУдалитьВ теории да, но тут надо писать функцию эмуляции ключа Dallas, проще на контроллер ТС или ТС-01 провод от ключевины вывести, так даже надежней будет.
Удалитьясно. а Конвертер домофонных ключей «цифрал, метаком, даллас», выходной формат: «даллас». можно сделать? можно и на 628 пике..если памяти хватит. https://ikey.ru/downloads/ST-1.pdf
УдалитьДля такого опять же надо функцию эмуляции ключа Dallas писать. Да и зачем столько приблуд, поставьте ТС-01 с моей прошивкой и включите автосбор.
Удалитьсогласен. но было бы не плохо иметь про запас и такую платку.. ТС на 2313 тоже не плохо справляется с автосбором. еще раз спасибо за проделанную работу. завтра принесут тс-01, буду пробовать прошивать на нее..
УдалитьЭти платки довольно надежные, у меня потому и нет прошивки под них, что процессор там сгорает очень редко.
Удалить