Имам две устройства, които комуникират по '1-Wire Communication' помежду си и при свързване правят проверка на 'свой-чужд' по много хитър алгоритъм.
Главното устройство изпраща 8 байта криптиран ключ към второстепенното, а то трябва да го декриптира и да върне правилен отговор(иначе комуникацията спира).
Съкратено лога на общуването изглежда така:
където : 8000 е командата за въпрос, следва ключ 8 байта(90D9DBB1B0D251F5), а накрая има контролна сума(5D).
1206 е успешен отговор 8 байта(7A1281666722E882), плюс 8 байта криптиран ключ(456869FCD39380A8) - вече за проверка на 'свой-чужд' към главното устройство.
Устройствата са с NEC микроконтролери и разполагам с дъмп и на двете.
В какво се състои задачата - дъмпа ми от второстепенното устройство е стара ревизия и то работи само в диапазона от 8000 до 8006, а новите(с чиито дъмп не разполагам и няма как да направя, иначе не бих писал тук) работят в диапазон от 8007 до 800D, така че то трябва да се 'научи' да работи в новия диапазон.
Сега за самата команда 80хх - вторият байт в нея указва с кой номер ключ да се дешифрира изпратения въпрос, и след поредица от логически операции в RAM паметта второстепенното устройство 'изчилсява' отговора и т.н.
Лично за мен алгоритъмът е много сложен и затова пиша тук(надявам се да има специалисти).
Ако някой прояви интерес и може да го направи - ще му дам всички документи и ще му платя за труда(в рамките на разумното).