ПЕРЕКОДИРОВКИ КЛЮЧЕЙ CYFRAL И МЕТАКОМ
Как известно домофоны Метаком и Cyfral могут работать с ключами Dallas. И в то время, когда полноценно не могли копировать эти ключи были разработаны перекодировки для записи кодов ключей Cyfral и Метаком на Dallas ключи.
Самые простые перекодировки оказались для ключей Метаком, их всего две:
Перекодировка М1:
Мы имеем ключ Метаком с кодом 9AED87FF, и чтобы записать его в Dallas мы приводим код к следующему виду: 01 00 00 9A ED 87 FF + Контрольная сумма
И данный код будет работать.
Перекодировка М2:
Имеет небольшое отличие от М1, в том что код "переворачивается", пример:
Все тот же ключ метаком: 9AED87FF, но в Dallas будет уже, как 01 00 00 FF 87 ED 9A + Контрольная сумма
На этом перекодировки для Метаком заканчиваются.
Дальше идет Cyfral. И тут все намного сложнее, ведь дубликаторы отображают код ключа не совсем правильно, отображают общепринятую перекодировку. Например отображают F57E, но на самом деле в памяти ключа зашифрован следующий код: EE BB BE ED, это сделано в целях универсальности ключа, ведь в разных моделях код ключа имеет разный алгоритм его перекодировки для записи в память.
Для того чтобы перевести код ключа в тот вид, который отображают дубликаторы, воспользуемся таблицой:
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
ED - E
EE - F
Теперь сами перекодировки ключей для записи в Dallas:
Перекодировка C1:
Самая простая перекодировка, практически нигде не используемая.
У нас есть код ключа C57E и чтобы записать его в Dallas мы приводим ключ к такому виду: 01 00 00 00 01 C5 7E + Контрольная сумма
Перекодировка C2:
Самая запутанная перекодировка, возникла из за ошибки в прошивке версии 2.3 для Cyfral CCD-2094.1. Из за не очищения одного служебного регистра происходило логическое ИЛИ части кода ключа самого на себя. Существует несколько реализаций в виде таблицы и алгоритма для компьютера. У меня есть только реализация на языке программирования JavaScript от моего знакомого:
var code = "C57E"
var Key = [0x01,`0x${code[2]}${code[3]}`,`0x${code[0]}${code[1]}`];
var k=(Number(Key[2]<<8))|Number(Key[1]&0x00FF);
k=((k&0xAA00)>>3)|k;
k.toString(16).toUpperCase()
Достаточно заменить код C57E на нужный код ключа и вставить данный алгоритм в консоль браузера и алгоритм выдаст уже перекодированный код ключа.
Перекодировка C3:
Насколько мне известно также мало используется. Перекодировка выполняется просто по таблице и переворачиванием кода. Пример:
Код ключа C57E
По таблице переводим код ключа
0 - 88
1 - 84
2 - 82
3 - 81
4 - 48
5 - 44
6 - 42
7 - 41
8 - 28
9 - 24
A - 22
B - 21
C - 18
D - 14
E - 12
F - 11
Получаем 18444112, переворачиваем 12414418 и подставляем в Dallas: 01 00 00 12 41 44 18 + контрольная сумма
Перекодировка C4:
Не является перекодировкой, а просто код ключа 01 00 00 FF FF FF FF 9B
Перекодировка C5:
Используется в Cyfral CCD-20(40). Также используется с применением таблицы.
Код ключа С57E
По таблице переводим код ключа
0 - F
1 - B
2 - 7
3 - 3
4 - E
5 - A
6 - 6
7 - 2
8 - D
9 - 9
A - 5
B - 1
C - C
D - 8
E - 4
F - 0
Получаем CA24, заменяем первый символ на ноль 0A24, и подставляем в Dallas 01 00 00 00 80 0A 24 + контрольная сумма
Перекодировка С6:
Используется для контроллеров ТС/01, информации нет, по слухам используется также как и C5, но без замены 1 символа на 0
Перекодировка C7:
Применяется в контролерах Секрет. Используется при помощи таблицы.
Код ключа C57E
По таблице переводим код ключа
0 - F
1 - E
2 - D
3 - C
4 - B
5 - A
6 - 9
7 - 8
8 - 7
9 - 6
A - 5
B - 4
C - 3
D - 2
E - 1
F - 0
Получаем 3A81 и подставляем в Dallas 01 00 00 00 00 3A 81 + контрольная сумма
Перекодировка C8:
Самая малоизвестная перекодировка. О ней практически нет информации в интернете и она не встроена как в промышленные дубликаты, так и в самодельные. В процессе перекодировки кода ключа упоминается инвертирование кода. Предположительно используется в Cyfral Intel.
В общем как вы могли понять в Cyfral работают извращенцы, которые в почти каждую модель делают свой алгоритм перекодировки ключа для записи в память.
Лично я считаю что не стоит изощряться с перекодировками, а писать ключи в родном формате на специальные заготовки.