key programming immo tools emergency start device программаторы ключа заводилки Кодграббер штатных охранных систем, toyota, lexus, subaru.

Doorhan keeloq дешифровка

art2802

New Member
Добрый день.
Прошу по возможности помочь.
Написал грабер keeloq для шлакбаумов дорхан, для личных нужд.
Но проверить нет возможности, т.к. нет мануфактурника. Точнее есть кусок и не понятно правильный ли он 0x23,0x12,0x94,0x84,xx,xx,xx,0x84
Предполагаю, что у кого-то могут быть мануфактурники для различных систем.
Я понимаю их ценность. Но прошу хотя бы один рабочий мануфактурник и несколько посылок от любой системы. Чтобы проверить правильность работы моего кода.
Если мой код верный, то перебором сравнивая две посылки от моего ключа дорхана я смогу подобрать мануфактурник.
На данный момент я от своего брелка получаю следующие данные:
Зашифрованная часть кода: статическая часть кода: реверс полученного кода
A17DAC33 : 8C6D2001 : 8004B631 2357B345
4FA86BBE : 8C6D2001 : 8004B631 CC35BE85
2F18D9D5 : 8C6D2001 : 8004B631 7DD615F2
31CE3F19 : 8C6D2001 : 8004B631 AB9B18F4
8537AA10 : 8C6D2001 : 8004B631 98FC738C
8537AA10 : 8C6D2001 : 8004B631 0855ECA1
Серийный номер в данном случае 004B631
Я не уверен что правильно генерирую ключ серийником и мануфактурником, а делаю я это так:

# define KeeLoq_NLF 0x3A5C742E
# define bit(x,n) (((x)>>(n))&1)
# define g5(x,a,b,c,d,e) (bit(x,a)+bit(x,b)*2+bit(x,c)*4+bit(x,d)*8+bit(x,e)*16)

uint64_t Normal_Learning (uint32_t data, const uint64_t key){
//Ключ генерируется из серийного номера и мануфактурного кода следующим образом (data - серийник (28 бит), key - мануфактурник (64 бита)):
data&=0x0FFFFFFF;
data|=0x20000000;
uint32_t k1=KeeLoq_Decrypt(data, key);
data&=0x0FFFFFFF;
data|=0x60000000;
uint32_t k2=KeeLoq_Decrypt(data, key);
return ((unsigned long long)k2<<32)|k1;}

uint32_t KeeLoq_Decrypt (const uint32_t data, const uint64_t key){
uint32_t x = data, r;
for (r = 0; r < 528; r++)
x = (x<<1)^bit(x,31)^bit(x,15)^(u32)bit(key,(15-r)&63)^bit(KeeLoq_NLF,g5(x,0,8,19,25,30));
return x;
}

Либо прошу проверить насколько корректно я получаю ключ функцией Normal_Learning (0x4B631, 0x0102030405060708)
где 0x0102030405060708 мануфактурник
 
Сверху