Перейти к содержанию
Old Phone Forum
  • Вход

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

Общие принципы формата S3


dаs

Рекомендуемые сообщения

Прошивки гуми-телефонов распространяются и редактируются в формате 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 и будет искомой контрольной суммой для нашей строки.

  • Like 2
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

ARSik,

Подобную утилиту писал для меня уважаемый Xpasha, но вскоре по моей просьбе он её модернизировал так, что в утилите теперь можно открыть S3-файл и она пересчитает в нём и исправит все чексумы ;)

P.S. Утилиту приаттачиваю, Xpasha'е РЕСПЕКТ!

CheckSum.rar

Изменено пользователем dаs
  • Like 2
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.


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