Перейти к содержанию
Old Subaru XV

Omega_KZ

Members
  • Постов

    132
  • Зарегистрирован

  • Посещение

Весь контент Omega_KZ

  1. С обеими строками запустилось. Странно что у них CRC одинаковый.
  2. Я уже занимался собирательством дампов. Насобирал от разных WRX. если честно то толку ноль. В каждом дампе имеем по 4 интересующих нас строки, в каждой строке 8 байт данных и 2 байта CRC. итого с 4 дампов можно насобирать 16 строк с данными и CRC. Могу сюда выложить в столбик кучу строк по 10 байт. Но мне кажется это смысла не несет. Хотя может кто-то башковитый и подберет алгоритм расчета и сможет проверить на этих строках. Буду за компом скину сюда строки с разных дампов. Хочу внести немного ясности. Имеем строку с данными: 00-00-00-00-00-00-00-00 CRC = FF-FF Что подтверждает теорию о том что при расчете к итоговому результату применяется функция NOT. Сделано это для того, чтобы понять сдох чип памяти или нет. Так-как при мертвом чипе считаются все байты 00 или FF. И если чип мертв то и CRC считается как 00, и панель поймет что в данных ошибка. С применением функции NOT, можно предположить что все параметры действительно равны 00, и панель этой поймет при CRC =FF-FF и запускается в нормальном режиме. Что имеем еще: Если в данных присутствует всего 1 или 2 байта то CRC всегда равна их сумме с применением NOT. То есть как и в примере из шапки темы: B1-4E-00-00-00-00-00-00 CRC = 00-00, так как (B1+4E) = FF, далее делаем NOT(FF) и получаем 00. Идем дальше, начинаем переставлять байт 4E в другие позиции. B1-00-4E-00-00-00-00-00 CRC = 00-00; B1-00-00-4E-00-00-00-00 CRC = 00-00 B1-00-00-00-4E-00-00-00 CRC = 00-00; B1-00-00-00-00-4E-00-00 CRC = 00-00; B1-00-00-00-00-00-4E-00 CRC = 00-00; B1-00-00-00-00-00-00-4E CRC = 00-00; Как видно, CRC остается неизменным, как будто в формуле используется простое сложение байт. Но это не так, потому что для строки: B1-27-27-00-00-00-00-00 CRC = 0E-00; Хотя казалось бы если сложить B1+27+27 то получим FF, как и в первом примере, и CRC по идее должен быть равен 00-00. Дальше больше. Берем нашу строку: B1-27-27-00-00-00-00-00 CRC = 0E-00; И начинаем перемешать 3-й байт "27" в разные позиции. B1-27-00-27-00-00-00-00 CRC = 0E-00; - Панель не запускается. Точнее запускается но с ошибкой. B1-27-00-00-27-00-00-00 CRC = 0E-00; - Панель запускается. B1-27-00-00-00-27-00-00 CRC = 0E-00;- Панель не запускается. B1-27-00-00-00-00-27-00 CRC = 0E-00; - Панель запускается. B1-27-00-00-00-00-00-27 CRC = 0E-00;- Панель не запускается. Исходя из этого могу предположить, что положение байт играет свою роль, но какую пока не понял. Причем менять группы по 2 байта можно местами, и это не приводит к сбоям. Например: 27-00-B1-27-00-00-00-00 CRC = 0E-00;- Панель запускается. 27-00-00-00-B1-27-00-00 CRC = 0E-00;- Панель запускается. 27-00-00-00-00-00-B1-27 CRC = 0E-00;- Панель запускается. Скорее всего вычисления происходят над группой байт (по 2 байта). Причем положение байт в группе как-то влияет на расчет CRC. Но есть одна неувязка, почему тогда в первом варианте "B1-4E-00-00-00-00-00-00 CRC = 00-00" положение байта 4E никак не повлияло на расчет CRC?
  3. Процессор имеет зашиту от чтения. Считать прошивку штатными средствами не получится. Если мне не изменяет память по orange умеет читать нековские процы с зашитой, но не все. Надо пробовать.
  4. Посмотрел, насколько я понимаю там применяется алгоритм crc-16 MODBUS. К сожалению он не подходит. Мне кажется что Япошки, на основе базового алгоритма, сделали что-то свое. Опять таки там какой-то очень простецкий алгоритм, так как алгоритм построен на простом сложении байт, но с применением какого-то смешения при переполнении. или чего-то еще. Плюсом ко всему применяется операция NOT (скорее всего к конечному результату).
  5. Пробовал рассчитывать разными алгоритмами. Название ПО сейчас не вспомню, но там суть такая: Загоняешь строку байт и галочками отмечаешь необходимые алгоритмы расчета. прога выдает таблицу с расчитаными контрольными суммами. Если посоветуете ПО через которое можно прогнать строку, буду очень признателен, может это натолкнет на нужный след. @Eurolite, CRC-16 не катит. Что-то мне подсказывает что алгоритм от Меркурия не подойдет. Хотя чем черт не шутит Если получится выйти на человека, который может помочь с расчетами, будет просто отлично! Я не против! Если говорить о реальных возможностях, то я бы скинулся денежкой(в разумных пределах) человеку который предоставит алгоритм. Но увы таких пока не нашлось. Пару человек откликнулось, но просят 15000р, за то что сами рассчитают мне CRC для определенной строки. Это мне не интересно, так как какой должна быть строка я еще сам не знаю Да и не уверен я, в правдивости. Пока занимаюсь изысканиями на других форумах, пытаюсь от туда почерпнуть больше информации, по возможным алгоритмам. Я уже научился определять примерный диапазон в котором должна быть CRC. Диапазон получается равным сумме байт +/- 200 байт в разные стороны (если подбирать побайтово).
  6. Да там по идее ничего сложного. Сам только разбераюсь.Нехватает опыта работы с ЭБУ и Приборками. Еше пара голов бы не помешала, это точно.
  7. Все доброго времени сток! Я уже несколько месяцев пытаюсь разобраться с дампом от всем полюбившейся приборки WRX. На текущий момент нет четкого руководства и понимая по конфигурированию дампа приборной панели. Все что делается людьми на данный момент, это попытки подогнать дамп приборки под свои нужды путем копирования строк из дампов родных приборок или путем склеивания дампов от разных приборок. Что хочу сделать я: Создать ПО для конфигурирования дампа. В идеале пользователь указывает фал с дампом, ПО его декодирует, пользователь настраивает необходимые параметры и сохраняет дамп. Далее дамп прошивается в приборку. Что достигнуто на данный момент: • По моим предположениям все основные параметры приборной панли хранятся в первых 3-х строках состоящих из 10 байт каждая. • В каждой строке хранятся такие параметры как, модель авто, тип коробки, параметры Si-Drive, регион(страна) и куча других кастомизируемых параметров которые меняются в зависимости от модели и комплектации авто. • Каждая строка с параметрами состоит из 10 байт. Первые 8 байт в строке это непостредственно параметры, оставшиеся 2 байта - это контрольная сумма строки. • Контрольная сумма необходима для проверки целостности дампа и параметров. • Контрольная сумма при расчетах использует NOT, так как если вся строка заполнена 00 то контрольная панель запускается при контрольной сумме FF FF, и наоборот. • Контрольная сумма это сумма всех 8 байт в строке, но там не просто сложение. Алгоритм расчета нужно уточнять. • Скорее всего Контрольная сумма расчитывается для группы байт, по 2 байта так как если поменять группу из 2-х байты местами с другой группой то панель запускается. • Собран тестовый программно аппаратный комплекс по прошивке и проверке дампа приборной панели. Аппаратный комплекс собран из ВЭБ камеры, Арудино и 3-х Релей Шилдов (Блоков Реле), вынесенного наружу чипа EEPROM, и монтажной платы. Программная часть комплекса позволяет поставить контрольную сумму для строки на перебор до последующего ее вычисления. Каждая контрольная сумма в автомотическом режиме правит дамп, записывает его в приборную панель, запускает приборку, отслеживает дисплей посредством ВЭБ камеры, фиксирует картинку дисплея, распознает показания на дисплее и сохраняет скрин с информацией о контрольной сумме в папке для дальнейшей работы пользователя. На проверку одной контрольной суммы уходит порядка 8 сек. Таким образом за сутки вполне реально подобрать контрольную сумму для одной строки. Что удалось выяснить: Путем эксперементальных подборов контрольных сумм удалось выяснить следующие варианты: B1-00-00-00-00-00-00-00 CRC = 4E-00 (Тут как все понятно. Делаем просто not(B1) и получаем 4E) Дальше буду писать только байты. Все байты идут в порядке с начала строки, все последующие не описанные байты равны 00. Напрмер если пишу B1-27 заничит по факту проверялась строка B1-27-00-00-00-00-00-00 и т.д. Во всех примерах сумма байт равна FF (1111 1111) Опыт №1 (B1-4E-00-00-00-00-00-00) CRC = 00-00 (Тут тоже действует правило суммы байт и применение NOT к конечному результату) B1 : 1011 0001 4E : 0100 1110 CRC (00) : 0000 0000 Опять таки не важно на какой позиции будут стоять байты B1 и 4E и в каком прядке следования. CRC не меняется. Опыт №2 (B1-27-27-00-00-00-00-00) CRC = 0E-00 (Тут схема с суммой байт уже не работает) B1 : 1011 0001 27 : 0010 0111 27 : 0010 0111 CRC (0E) : 0000 1110 Тут уже позиция байт играет роль. Если менять местами B1 и 27(первые) то разницы нет, так же как и перенося весь блок в другое место строки. Но стоит перенести третий байт (27) в другую позицию как CRC уже не подходит. Причем для строки B1-27-27-00-00-00-00-00 CRC = 0E-00, для B1-27-00-27-00-00 уже не подходит этот CRC, для B1-27-00-00-27-00-00-00 опять подходит. Опыт №3 (B1-27-13-14-00-00-00-00) CRC = 2E-00 B1 : 1011 0001 27 : 0010 0111 13 : 0001 0011 14 : 0001 0100 CRC (2E) : 0010 1110 Исходя из вышесказанного получается что менять группы по 2 байта местами можно, а вот байты внутри группы уже нет. Значит в вычеслениях CRC как то завязан номе группы байт, а так-же игнорируются части в начале и конце строки запыленные 00. Собственно прошу помощи в поисках формулы расчета CRC, ибо моих мозгов уже не хватает. Надеюсь на то что найдется человек разбираюшийся в тебе контрольных сумм в бириборках и блока управления и натолкнет меня на нужные мысли. После того как получится выяснить алгоритм расчета контрольной сумы, приступлю к тестам с параметрами внутри строки, для того чтобы выяснить какой байт отвечает за какие параметры.
×
×
  • Создать...