MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки
 Новости   Конференция   Контакты 
 

KeeLoq

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 KeeLoq
Автор: Sergey Sorochenko ()
Дата:   30/07/2001 17:43

Люди добрые- привет Вам!
Мы сами не местные -поможите чем бог послал!
Есть такая ситуация - имеется рабочий брелок
от сигнализации Mongoose на базе HCS300 кодера.
К нему куплен декодер HCS512.
В pdf на декодер говорится, что в него необходимо
записать Manufacturer code- т.е код производителя.
В pdf на кодер то же самое- но так как брелок уже в сборе
то наверняка код производителя уже записан в HCS300.
ВОПРОС?? Какой код надо записать в HCS512, тот же что и
в брелке или произвольный лишь бы был в наличии ,
а может я чего не понял и декодер полностью готов к работе,
только обучить брелок?
Ведь код брелка знает только изготовитель - т.е. такой же
я записать не смогу.


 
 Re: KeeLoq
Автор: Александр ()
Дата:   31/07/2001 09:09

Здравствуйте Сергей.

При программировании кодера KeeLoq в него заноситься 64-битный секретный ключ, который после программирования прочитать в явном виде невозможно.
Секретный ключ вычисляет специализированный программатор KeeLoq на основе серийного номера кодера и номера производителя (заводской номер) по специальной функции.
В кодере заводской номер не сохраняется.
На основе секретного ключа и внутреннего счетчика формируется прыгающий код.

Далее необходимо обучить декодер (кодер-брелок обучить нельзя).

Но перед этим необходимо запрограммировать декодер, указав ему параметры работы и 64-битный заводской номер.

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

Цель обучения
Передать декодеру секретный 64-битный ключ и выполнить синхронизацию счетчиков.

Прочитать секретный ключ из декодера невозможно.

Для получения алгоритма формирования секретного ключа, прыгающего кода, кодового зерна необходимо обратиться непосредственно Microchip Incorporated USA.

Поэтому Вы с этим брелком ничего сделать не сможете (использовать полную защиту от несанкционированного доступа прыгающего кода).
Можно сделать свой декодер и проверять только серийный номер. Все функции ? нажатия кнопок, разряд батарейки и т.д. остаются, но защищенность системы в целом низкая.

С уважением, Александр Зайцев.


 
 Re: KeeLoq
Автор: орлов ()
Дата:   31/07/2001 17:22

прочти инструкцию к сигнализации и не парься Sergey Sorochenko писал(а):
>
> Люди добрые- привет Вам!
> Мы сами не местные -поможите чем бог послал!
> Есть такая ситуация - имеется рабочий брелок
> от сигнализации Mongoose на базе HCS300 кодера.
> К нему куплен декодер HCS512.
> В pdf на декодер говорится, что в него необходимо
> записать Manufacturer code- т.е код производителя.
> В pdf на кодер то же самое- но так как брелок уже в сборе
> то наверняка код производителя уже записан в HCS300.
> ВОПРОС?? Какой код надо записать в HCS512, тот же что и
> в брелке или произвольный лишь бы был в наличии ,
> а может я чего не понял и декодер полностью готов к работе,
> только обучить брелок?
> Ведь код брелка знает только изготовитель - т.е. такой же
> я записать не смогу.


 
 Re: KeeLoq
Автор: dima ()
Дата:   08/02/2003 04:54

если можно, то я приведу отрывок статьи, которую написал сам для себя:

Кодер посылает, а декодер принимает посылки с плавающим кодом. Посылка включает
в себя: переменную и постоянную часть кода. Переменная часть шифруется, и шифр
меняется при каждой передаче.

Кодер и декодер должны понимать друг друга, а переменная часть посылки
меняется при каждой передаче, поэтому необходимо, чтобы информация, переданная
кодером была правильно декодирована. Так как кодирующий/декодирующий ключ(они
одинаковые на обеих сторонах) не передается, он должен быть одинаково вычислен
на передающей и приемной стороне. Входными данными для вычисления ключа в режиме
нормального обучения является код производителя(64бита, по эфиру не передается),
серийный номер кодера(передается по эфиру, может быть дополнительно кодирован,
но в нормальном режиме не кодируется)

Код производителя по эфиру не передается, он должен быть одинаковым в при
вычислении ключа кодера и программируемого в декодер.

Серийный номер кодера сообщается декодеру на стадии обучения
-специальный режим декодера, когда он принимает последовательно 2 посылки кодера
в течение 8 секунд, сравнивает два принятых серийных номера, вычисляет
декодирующий ключ и запоминается вместе с серийным номером кодера. Далее для
кодера с этим серийным номером будет применяться именно этот ключ.

Благодаря счетчику синхронизации и обеспечиваться "плавание" кода, т.к.
значение его меняется при каждом нажатии. Значение счетчика должно быть
одинаково в кодере и декодере в пределах окна синхронизации - 16 значений. При
рассинхронизации более 16 значений возможен режим вхождения в синхронизацию -
когда кодер передает последовательно две посылки. Первую посылку декодер
сохраняет во временной памяти, проверяет вторую на соответствие первой и при
правильной проверке перезаписывает свой счетчик синхронизации. Однако такая
синхронизация возможна при рассинхронизации в пределах 32к посылок. В противном
случае необходимо новое обучение декодера.

Описание кодера HCS300
Микросхема кодера HCS300 имеет 4 входа в двоичном формате. Таким образом, всего
передается 15 различных команд. Передача начинается после подачи уровня 1 на
любой из входов, но после внутренней задержки для устранения дребезга(10мс).
Кодер имеет выход для подключения светодиода. Нормальное состояние выхода кодера
- 0. Выходной уровень - ТТЛ. Питается микросхема от 3.5 до 13v.
Формат посылки кодера: вначале передается 32 битовая кодированная часть, в
которая включает в себя: Синхронизирующий счетчик(16бит), дискриминационные
биты(12 бит), код нажатых клавиш передатчика (4бита). Далее передается
постоянная часть, которая включает в себя: Серийный номер передатчика(28бит),
коды нажатых клавиш(4 бита), бит статуса батареи передатчика(Vlow), бит проверки
CRC(2бита). Последующие модели кодеров имеют более длинный формат передачи,
однако, у всех передатчиков вначале передается переменная часть и далее 28бит
серийного номера. Дополнительная информация добавляется вконец посылки. За счет
этого осуществляется совместимость. Для использования совместно с декодером
кодер должен быть запрограммирован. Правильность декодирования переменной части
кода проверяется по дискриминационным битам, которые должны быть одинаковыми на
приемной и передающей стороне. В передатчик они програмируются непосредственно,
а в декодере вычисляются при обучении декодера. Передатчик HCS300 передает 12
дискриминационных бит, однако в сам кодер програмируется только 10 бит. Старшие
два бита являются битами переполнения счетчика синхронизации и берутся из слова
конфигурации кодера (таблица). Эти биты используются для расширения разрядности
счетчика синхронизации.При переполнении счетчика синхронизации (16бит = 65535)
эти два бита меняются, а поскольку они являются частью дискиминационной
величины, то произойдет рассинхронизация кодера и декодера. В этом случае
потребуется повторное обучение декодера. Т.о. повторное обучение потребуется
каждый раз через 65535 посылок кодера.

При программировании в кодер записывается следующая информация
1-8 Секретный ключ. 8байт, младший байт первый
9,10 Счетчик синхронизации. 2 байта (можно нулевых), младший байт первый
11,12 Резерв. 2байта, должны быть 0
13 - 16 Серийный номер кодера. 4байта, младший байт первый. Старший бит старшего
байта разрешает режим выключения передачи при времени передачи более 25с
17,18 Seed_0. 2байта, младший байт первый
19,20 Seed_1. 2байта, младший байт первый
21,22 Кодирующий ключ. 2байта младший байт первый. Может использоваться для
дополнительной кодировки серийного номера. В нормальном режиме серийный номер не
кодируется
23???????? Дискриминационная величина. 1байт. Должен быть равен младшему
байту серийного номера
24 Слово конфигурации

Слово конфигурации включает в себя:
0-9 Дискриминационные биты
10, 11 Биты переполнения счетчика синхронизации. Служат для расширения
разрядности счетчика
12 Бит выбора порога напряжения, при котором устанавливается статусный бит
Vlow (низкое напряжение питания)
13, 14 Биты выбора скорости передачи. 0, 0 - максимальная скорость
15 Бит разрешения дополнительного кодирования серийного номера кодера при
передаче (1 - разрешено кодирование)


Так вот, если лень все это было читать, скажу что в этом случае можно
перепрограмировать микросхему HCS300 своим секретным ключем и декодер, заставив
его работать по упрощенной схеме( Simple Learning Decoder), когда секретный ключ
равен коду производителя. В этом случае при програмировании в HCS300
програмируется прямо код производителя. Он же ключ. А декодер при упрощенной
схеме сформирует у себя внутри тот же ключ из кода производителя.

Вообщето моя задача стоит шире. Я уже переложил алгоритм декодировани KEELOQ
на процессор AT89c2051 (MCS51) и вставил в свою сигнализацию. Ну не
хочу я работать с проклятым ассемблером PIC. На www.keeloq.narod.ru. можно
взять лицензионное ПО, скачав 4 диска(800кб). Это и есть те самые лицензионные
диски фирмы Microchip. Там же находится DOS программа, декодирующая
заданный плавающий код(32бита) по заданному ключу. По ней я и проверял свою
программу. А вот программу кодирования я так и не нашел, а хотелось бы.