воскресенье, 29 декабря 2013 г.

Ключ Цифрал DC-2000. Разбор.

Ключи 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, но у меня также ни одного под рукой нет, к тому же там сейчас каждый месяц новая прошивка, кто знает как они извращаются над ключами.

В общем, во всём этом байтолюбстве без бутылки не разберешься, зато интересно.

19 комментариев:

  1. "В описании толком не указано как же считываются кодовые слова, от младшего бита к старшему или наоборот"
    В даташите на K1233KT1 и на K1233KT2 указано "Условно принимается, что код микросхемой выдаётся с младшего бита."
    "Любители копирования ключей уже придумали их называть С1-С4" здесь по сути только С-1и С-3 перекодировки а С-4 это код "вездехода" одинаковый для всех.

    ОтветитьУдалить
  2. Но откуда в цифрале то "вездеход", в каких моделях? В контроллерах там контрольные суммы не дают FFFF баг заюзать, а в пультах (по крайней мере в CCD 2094) количество записанных ключей указывается в специяльной области ПЗУ, тоже баг не прокатит.

    ОтветитьУдалить
  3. В "промышленном" копире ТМД-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

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

      Удалить
  4. И ещё. Очень полезной была бы информация о том как хранятся коды ключей в базах домофонов разных производителей и разных моделей. Если у Вас есть такая возможность и желание это исследовать и выложить в своем блоге, то многие интересующиеся этой темой сказали бы Вам спасибо :).

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

      Удалить
    2. Как хранятся коды ключей в дампах как раз и интересны в плане возможных перекодировок и не только :).
      У меня есть копир ТМД-5 Rfid и копир от RECTO с казуса. Если Вам нужно, дайте интересные Вам коды ключей цифрал и метаком, я их перекодирую в формат цифрала на этих копирах, всеми вариантоми перекодировки заложенными в них.

      Удалить
    3. Ну так дамп ничего не дает, тут нужно еще помучать железку хорошенько, а у меня они долго не задерживаются.
      Спасибо за предложение, но я и сам не новичёк. Правда у меня TMD-3rfid, но кодировки я уже и сам все расшифровал. Остался только CCD-40 нерасшифрованный, но это дело недолгого времени, у меня уже лежит один, только его слишком сильно шокером припекли, жду нового процессора.

      Удалить
  5. Для 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

    ОтветитьУдалить
  6. Уважаемый автор сообщения с формулами, а не могли бы Вы разжевать поподробнее. Например с примерами преобразования.

    ОтветитьУдалить
    Ответы
    1. Думаю тут имелось ввиду нечто вроде такого (пофиксил баг)

      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 - то что запишется в ПЗУ

      Удалить
  7. Вот уже ввели перекодировку Цифрал в даллас для блоков вызова "Cyfral" CCD-20, CCD-40; "Cyfral" M-10, M-20; Секрет-10, Секрет-20, Секрет-999. в "любительский" копир на казусе http://kazus.ru/forums/showthread.php?t=67407&page=376

    ОтветитьУдалить
  8. перекодировки - забудьте

    ОтветитьУдалить
  9. Скажите, а прошивку для 2313 к этой плате можете сделать?

    ОтветитьУдалить
    Ответы
    1. В теории да, но тут надо писать функцию эмуляции ключа Dallas, проще на контроллер ТС или ТС-01 провод от ключевины вывести, так даже надежней будет.

      Удалить
    2. ясно. а Конвертер домофонных ключей «цифрал, метаком, даллас», выходной формат: «даллас». можно сделать? можно и на 628 пике..если памяти хватит. https://ikey.ru/downloads/ST-1.pdf

      Удалить
    3. Для такого опять же надо функцию эмуляции ключа Dallas писать. Да и зачем столько приблуд, поставьте ТС-01 с моей прошивкой и включите автосбор.

      Удалить
    4. согласен. но было бы не плохо иметь про запас и такую платку.. ТС на 2313 тоже не плохо справляется с автосбором. еще раз спасибо за проделанную работу. завтра принесут тс-01, буду пробовать прошивать на нее..

      Удалить
    5. Эти платки довольно надежные, у меня потому и нет прошивки под них, что процессор там сгорает очень редко.

      Удалить