FAQ по формату S3

0
126

Прошивки гуми-телефонов распространяются и редактируются в формате s3. Данный мануал я нашёл на каком-то сайте. Автор указан не был, но хочу выразить ему огромное спасибо за столь достойное описание общих принципов формата s3. Поэтому я посчитал нужным выложить его здесь.Так как мануал был написан целенаправленно для редактирования прошивок модемов, я его немного подредактировал.Прошивки гуми-телефонов распространяются и редактируются в формате s3. Данный мануал я нашёл на каком-то сайте. Автор указан не был, но хочу выразить ему огромное спасибо за столь достойное описание общих принципов формата s3. Поэтому я посчитал нужным выложить его здесь.Так как мануал был написан целенаправленно для редактирования прошивок модемов, я его немного подредактировал.

Для начала познакомимся с самим форматом S37, в основе которого лежит формат фирмы Motorola. Если открыть файл S37 с помощью блокнота и посмотреть на порядок записанных строк, можно увидеть следующее:

S315000201206C0160C2042F86F22F8601034CF2A920CD

Я взял произвольную строчку из прошивки в формате S37, теперь представим этот набор цифр немножко по другому:

S3 15 00020120 6C0160C2042F86F22F8601034CF2A920 CD

S3 – тип записи

15 – шестнадцатеричная длина в байтах следующих полей:

Адрес(смещение) – 00020120

Данные – 6C0160C2042F86F22F8601034CF2A920 – 16 байт

Контрольная Сумма – CD – 1 байт

При переводе числа 15 из шестнадцатеричной системы в десятичную получится 21, то есть 21 байт отводится под поля: Адрес, Данные и Контрольная Сумма. Но поскольку этот FAQ для заварных чайников с ручкой вовнутрь, мы не будем останавливаться на таких мелочах и сразу перейдем к тому, что нас интересует больше всего – это контрольная сумма, размером в один байт. Для того чтобы изменить несколько байт в конкретной строке непосредственно в формате S37, требуется правильно пересчитать контрольную сумму для этой строки. Вот теперь доходчиво и понятно о том как это делается.

Для начала запустите программу Калькулятор, которая есть в любой версии Windows, в расширенном режиме, чтобы удобно было переключаться из десятичной системы в шестнадцатеричную и вооружитесь обычным текстовым редактором, подойдет к примеру встроенный в FAR редактор. Затем действуйте следующим образом: сложите в шестнадцатеричной системе поля адреса, данных и после этого прибавьте к этому значению шестнадцатеричную длину этих полей в байтах – 15. Вот пример подсчета контрольной суммы для приведенной выше строчки:

15+00+02+01+20

+

6C+01+60+C2+04+2F+86+F2+2F+86+01+03+4C+F2+A9+20

=

632 в шестнадцатеричной системе


Теперь о том, что нужно делать с полученным результатом. Если посмотреть на поле контрольной суммы, то можно увидеть, что под нее отведен один байт, а значение одного байта не может превышать 255, или FF в шестнадцатеричной системе. Так вот, чтобы просчитать значение контрольной суммы для нашей строки, следует в шестнадцатеричной системе отнять полученное нами значение при сложении от FF. Но если перевести 632 в десятичную систему, то получится число 1586, разумеется при вычитании у нас выйдет отрицательное значение, а это недопустимо. Поэтому в этом случае следует отбросить одну цифру слева, чтобы получилось значение меньше FF – 255 в десятичной системе. Отбросили – получилось число 32. Значит теперь в шестнадцатеричной системе производим вычитание: FF – 32 = CD. Вот CD и будет искомой контрольной суммой для нашей строки.

1 КОММЕНТАРИЙ

  1. Ну не все здесь \"заварные чайники с ручкой вовнутрь\", но теперь кажысь я понял как пользоватся канкулятором в Windows yes

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here