Обчислюємо код мафона Blaupunkt Gamma 5
Захотілося мені запустити мафон на столі для вивчення його внутрішнього світу. Ось тільки засідка — коду своєї Гамми я не знав — вона чудово домовлялася з приладом і проблем не було. Сервісна книжка далеко, до офіціалів за кодом їхати ліниво - будемо колупати! , Вважав дамп (мікросхему не випаював, припаявся паралельно) і заглибився всередину.
Але ж це неспортивно, треба з'ясувати алгоритм самостійно :)
Посидівши над цими числами багато годин із калькулятором, з'ясувалося таке:
Для обчислення коду по дампі треба зробити XOR молодших напівбайт з числом 0xD436. З одним застереженням - якщо в полубайте число більше або дорівнює A, то відповідний розряд потрібно збільшувати на 1 (крім першого розряду). Можливо, насправді в алгоритмі це якось враховано по-іншому, але працює і так.
Приклади Дамп: 2D F7 41 72. Молодші напівбайти: D712. D712 XOR D436 => 0324 DC44. XOR з D536 (збільшуємо другу цифру на 1 через C) => 0972
Ще: 1C 1D D6 0F Молодші напівбайти: CD6F D і F більші за A, тому XOR-им з D537, отримуємо 1858
Ще: 2D 33 B4 10 -> D340. XOR з D436 => 0776
Ще: 1С С6 70 10 -> C600. XOR з D436 => 1236
Я вважаю, що передається з приладки не чистий код, а друга половинка, закодована в СТАРШИХ напівбайтах дампа мафона (тобто 11D0 для мого дампа). Швидше за все, там звичайний XOR, тобто ризикну припустити, що для навчання приладки мафону треба заксорити число з приладки з 0x217E (11D0 XOR 30AE — з моєї приладки та мафона), абонавпаки — заксорити з ним число з мафона.
Це припущення потребує перевірки. Можна перевірити, наприклад, так: 0) робимо дампи приладки і EEPROM-а мафона 1) зашиваємо в магнітолу якийсь відомий код, наприклад 0324: 0x4B0: 2D F7 41 72 0x4C0 : D2 08 8D 0x4D0: 77 AD 1B 28