Перейти к содержанию
  • entries
    17
  • comments
    2
  • views
    8 085

О прошивках BOSCH M3.1 часть 3 - Вин


Вин в прошивках M3.1 а также М3.3 и М3.3.1 записан в кодировке Base36 (используется только последние 6 бит).

Зачем непонятно, может попытка сэкономить место (всетаки год был 1989) может из каких либо других соображений, в мотрониках MS42/43 МЕ7 он записан также только байты старший и младший поменяны местами, в более поздних мозгах он записан в явном виде в формате ASCII.

 

Как уже писал вин в мозгах М3.1 лежит по адресу 7EBA и занимает 13 байт. Как же так получилось знаков 17, а байт 13?

Поскольку для записи вина мы используем только цифры и алфавит то символов получается всего 36, для кодирования такого количества знаков достаточно 6 бит, всего при использовании 6 бит можно закодировать 64 знака.

 

Берем последовательность цифр от 0 до 9, символов от A до Z и нумеруем их по порядку от 0 до 35.

Затем записываем номер присвоенный нами сиволу в бинарном виде - получаем для каждого символа или цифры бинарный код в 6 бит (специально приложил табличку из эксела с кодами).

 

blogentry-39669-0-42668700-1454900098.jpg

 

 

Теперь к записи в прошивке. Если взять 17 знаков то если помножить на 6 (бит) получится 102 бита, но это не кратно 8 битам как быть с недостающими битами?

Дописываем в начало 2 нуля, получится 104 бита, на 8 делится ровно - получаем 13 полноценных байт - можно записать.

Итак берем файл прошивки в приложении, для простоты я приложил скриншот где вин выделен.

 

blogentry-39669-0-07054600-1454902011.jpg

 

 

В нашем случае будет такая строка - 202СA0420C41461CA281083105 - попробуем расшифровать.

Сначала запишем в бинарном виде.

20 - 00100000

2C - 00101100

A0 - 10100000

42 - 01000010

0C - 00001100

41 - 01000001

46 - 01000110

1C - 00011100

A2 - 10100010

81 - 10000001

08 - 00001000

31 - 00110001

05 - 00000101

Затем запишем в одну строку.

00100000001011001010000001000010000011000100000101000110000111001010001010000001000010000011000100000101

Откусим лишние 2 бита в начале.

100000001011001010000001000010000011000100000101000110000111001010001010000001000010000011000100000101

Разобьем на куски по 6 бит - должно получиться 17 кусков.

100000 001011 001010 000001 000010 000011 000100 000101 000110 000111 001010 001010 000001 000010 000011 000100 000101

Смотрим табличку которую составляли в экселе и сопоставляем.

Должно получится WBA1234567AA12345

 

Собственно все :), я давно хотел разобраться, и даже кто-то лет 10 назад уже выкладывал подобное описание на моем старом форуме, но информация потерялась а повода посидеть разобрать заново не находилось...

  • Upvote 5

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Гость
Add a comment...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...