вот те почитай может допреш как работает,и херню не пиши,хотя весело
Допустим у вас рыба номер 5
( на процессоре надпись MA 567 880 011 - 11 формат)
Тут урезанные дампы.
0100 14 EC 00 AF AB F8 0D CC B5 E8 D8 7B 8F F5 25 01
0110 23 45 67 89 AB CD EF EE 25 6B E2 F6 08 80 60 4E
0120 D5 44 2C CF 53 BC 31 1E CB 95 2F 71 8F F9 7F BF
0130 28 38 59 90 53 E7 A9 2E 55 34 27 14 2C 40 AF 23
0140 14 2F DC A5 28 6A 64 E7 72 BD 89 0A 28 BC 6F 46
0150 81 81 CD 40 58 0B 4B 9E 5B 50 04 66 A5 11 AD 7C
0160 92 0D 39 75 04 8F 9E F6 F6 7D 29 CF DC 4F F3 E7
0170 FE 97 F7 7E A8 59 18 AB 8E 39 F2 43 16 7F 85 FF
и часть ЕЕпрома одного из процессоров замка
0120 00 00 FD 23 02 1B 0F 00 7B 8F F5 20 9E 1E 40 FA
0130 5E F3 0C 99 36 22 79 56 AF AB F8 0D CC B5 E8 D8
0140 7B 42 3C 4D FB CD FC 5C FB 72 FB 3F FC F0 FA D7
0150 1C 87 FB 1E 3A FA FC 5C FB 72 FB DE FC F0 FA D7
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0170 17 F8 6B E5 7F 96 D1 60 E8 FA 56 D5 81 9D 3A BE
0180 51 85 25 29 11 C7 DA 6C 82 D8 2A 36 CE 9F D9 4D
0190 D9 27 5A 32 17 9F CE BD A3 53 25 37 CC B1 C4 C9
01A0 99 11 D2 42 84 2E 97 6B 8C 26 4F DB 2E CA CA B2
Стартует ключ (24-состояние авторизации,7B 8F F5 25 с адр 010B)
-->> 24 7F 0B 2F 25 F5 8F 7B
( замок 25 F5 8F 7B - переставляет местами -> 7B 8F F5 25 - это ID
рыбы + номер ключа. Номер ключа 3 младщих бита тут = 5 -> 1 0 1,
а чистый ID = 7B 8F F5 20, что замок и сравнивает с прописанным в
епроме замка с адр 0128h. Совпадает! если нет, то выкл поле и все)
Замок дает рандом запрос ( рандом типа случайный, потому что для его
расчета используется и полученный ATR, и рандом кей 8 байт с адреса 0130
и данные ром самого процессора замка. Важно одно - случайные 8 инфор-
мационных байт)
<<-- 26 12 34 56 78 90 AB CD EF
Ключ переставляет местами рандом запрос -
EF CD AB 90 78 56 34 12
хорит с номерами блоков хэш первые 3 байта
EF CD AB 90 78 56 34 12 хор 7F 0B 2F 00 00 00 00 00 =
= 90 C6 84 90 78 56 34 12
далее хорит с паролем -в ключе с адр 0103 , в замке - 0138)
90 C6 84 90 78 56 34 12 хор AF AB F8 0D CC B5 E8 D8 =
= 3F 6D 7C 9D B4 E3 DC CA
первый байт хорит с первым байтом из ATR
3F 6D 7C 9D B4 E3 DC CA хор 24 00 00 00 00 00 00 00 =
= 1B 6D 7C 9D B4 E3 DC CA
делает расчет хэш
hash( 1B 6D 7C 9D B4 E3 DC CA ) = CF B9 5E 67 7D CA 13 33
тут заметим что все это же самое делает и замок у себя. то есть
последние 8 байт у него тоже есть.!!!
тут самое главное - ключ берет не использованную хэш 8 байт у себя
из еепрома с высшим номером и делает хор. В данном случае нужная хэш
8 байт лежат с адр 0175.
CF B9 5E 67 7D CA 13 33 хор 59 18 AB 8E 39 F2 43 16 =
= 96 A1 F5 E9 44 38 50 25
вот эти 8 байт задом наперед с призннаком 27 команды и передаются в
замок
--> 27 25 50 38 44 E9 F5 A1 96
Замок, получив эти 8 байт, сделав с ними хор своего расчета, получает
хэш из ключа в чистом виде - 59 18 AB 8E 39 F2 43 16.
Для проверки замок делает хэш расчет с ними
hash(59 18 AB 8E 39 F2 43 16)= 67 16 DB 7F B0 6C 3C 10
теперь последнее значение сравнивается со значением записи хэш для 5
ключа в еепроме замка. в нашем случае это 8 байт из первого банка
с адр 01A8h. - 8C 26 4F DB 2E CA CA B2
вроде не совпало! Но ! Замок "допускает" что хозяин мог вставлять
ключ в другую машину или в отдалении нажимать кнопки на ключе...
итого - может быть произошла разбежка хэшей??? Замок разрешает считать
разбежку в 100 расчетов допустимой.. поэтому повторят расчеты хэш
до 100 раз в надежде найти совпадение. если за 100 расчетов этого
не произошло - "до свидания".
продолжим расчет и мы
Hash(59 18 AB 8E 39 F2 43 16)=67 16 DB 7F B0 6C 3C 10
Hash(67 16 DB 7F B0 6C 3C 10)=57 9F F9 C1 1E 60 6B 45
Hash(57 9F F9 C1 1E 60 6B 45)=1F E9 F3 2E 62 6C B3 8D
Hash(1F E9 F3 2E 62 6C B3 8D)=8C 26 4F DB 2E CA CA B2
как видим - четвертый расчет хэш дал совпадение.
Процессор замка дает разрешение на запуск по параметру проверки ключа.
При этом замок переписывает текущую (1F E9 F3 2E 62 6C B3 8D) хэш в еепром
на место 5 го ключа. Соответственно ключ помечает что данная хэш использована
и в следующий раз будет брать хэш с номером на единицу менее.
Параметры проверки защелки основаны на подобных, но более простых расчетах-
9600 бод 8 бит 2 стоп в защелку обоим процессорам по раздельным каналам
передается синхронно 0F 31 05 59 18 AB 8E 39 F2 43 16 74
0F - команда "проснуться", а то проц защелки "in sleep mode"
31 - команда открыть
59 18 AB 8E 39 F2 43 16 - хэш от ключа
74 - контролька
при получении хоть одного положительного ответа - этот параметр проверки пройден.
Осталось пройти синхру - это 4 байта или тоже такая же как и в защелке проверка хэш в моторном,
это зависит от типа моторного.
Синхра - 4 первых байта пароля раздвигаются нулями и делается хэш
hash(AF 00 AB 00 F8 00 0D 00 )= 9E 1E 40 FA C9 BA 0F 9E
в некоторых замках первые 4 байта проверяются с 4 байта с адр 012с..
в других не проверяется, но всегда делается запрос в моторный
2C 9E 1E 40 FA.. моторный сам сравнивает это со своими записями в еепроме и
правильность этого параметра проверки определяет сам.
В случае если моторный не с синхрой 4 байта а синронизируется по хэшам 8 байт-
туда передается хэш, полученная от ключа.