Сейчас на форуме: _MBK_, Adler (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Как передать файл прошивки микроконтроллера через ЮСБ-канал?
Посл.ответ Сообщение

Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 17 октября 2011 16:50
· Личное сообщение · #1

Я в прошлой теме научился кодировать-раскодировать файл прошивки. Спасибо за помощь. Сделал свой (исправленный) кодированный файл, но родной апдейтер программы, видимо не признает его за то, что ему нужно. Передавать-передает, но умышленно портит несколько байт. Чтоб вопросов было меньше, он (апдейтер), точно так-же поступает и с файлом от другой версии программы. Вопрос примерно такой. Есть-ли готовые сорцы под передачу и прием файлов по ЮСБ-каналу? Защиту-то родного апдейтера, мне точно не сломать, думал КС, нашел, вычислил, но этого оказалось мало.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 17 октября 2011 17:44
· Личное сообщение · #2

а вы уверены что портит софт который заливает? а не бут который его принимает и пишет
а склоняюсь ко второму случаю




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 17 октября 2011 17:44
· Личное сообщение · #3

Kuzya69 как трава отпустит напиши нормально, по русски. (c) PE_Kill

-----
Yann Tiersen best and do not fuck




Ранг: 26.1 (посетитель), 10thx
Активность: 0.01=0.01
Статус: Участник

Создано: 17 октября 2011 17:58
· Личное сообщение · #4

умышленно портить может из-за ECC (error corection code) с кратностью скажем в 0x210 байт, здесь сорцы не помогут, надо копать оригинальный флешер



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 17 октября 2011 18:44 · Поправил: Kuzya69
· Личное сообщение · #5

Оригинальный флешер я раскопал, контрольку вычислил. Портит именно апдейтер, я уже писАл, если в программу подложить дамп от другой версии (старше или младше), то происходит то-же самое. Хотя нужной версией, заливается без ошибок. То-есть дамп заведомо верный, а вот апдейтер не признает его. Да и если подсмотреть протокол передачи через ЮСБ-монитор, то видно, что эти байты (испорченные), вылезают в хаотичном порядке. Один раз прошивка даже запустилась, но при работе повисла.



Мне по сути надо мою переделанную, зашифрованную прошивку, передать байт в байт, порциями по 128 байт, добавив впереди посылки три байта служебных, и сзади два (посчитанную контрольку передачи).
Дождаться ответа о правильной передаче и продолжить дальше передавать следующие 128 байт.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 17 октября 2011 20:10
· Личное сообщение · #6

ключевое слово - апдейтер не признает его



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 17 октября 2011 20:31
· Личное сообщение · #7

ключевое слово - апдейтер не признает его
Ну и как нибудь сделать самому апдейтер-то можно? Есть какие-нибудь примеры, открытых кодов, посмотреть подучиться? Алгоритм-то передачи не особо сложный.



Ранг: 26.1 (посетитель), 10thx
Активность: 0.01=0.01
Статус: Участник

Создано: 17 октября 2011 20:35
· Личное сообщение · #8

что вы называете "апдейтером", где он у вас тут ?: файл->флешер->драйвер->ром_микроконтроллера->флешка

если можете снифить и в снифе видно битые байты(биты), значит или плохо перексорили бинарник или одно из двух о чем и пишет reversecode

попробуйте в патченой прошивке подменить сигнатуру/хидер на сигнатуру правильной версии, код ревизии или что-то еще




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 17 октября 2011 22:01
· Личное сообщение · #9

я так понимаю "файл" и есть прошивка которую вы пытаететь залить через апдейтер(флешер)
и оригианльным файлы апдейтер никакие байты не меняет
а в вашем файле(что бы перехачили) он меняет два байта
может это ценные два байта? может там какая нибудь crc? которую вставляет флешер

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



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 18 октября 2011 00:37 · Поправил: Kuzya69
· Личное сообщение · #10

где он у вас тут ?: файл->флешер->драйвер->ром_микроконтроллера->флешка
Судя по этим порядкам это "флешер". Просто я думал, что флешер это бутлоадер внутри контроллера, раз он с флешем работает.
Просто в каждой версии программы "флешер" расчитан так, что он признает только файл той прошивки, версия которой соответствует именно версии программы (честое слово не курил). И не только версии, но и проверяется целостность прошивки. Поэтому даже попытка подсунуть заведомо правильный файл (который успешно заливается флешером другой версии в этот-же контроллер, с этим-же бутлоадером), приводит к появлению в потоке "случайных" ошибочных байт. Они появляются в произвольном количестве и в произвольном месте.
Для того, чтобы после флеширования бутлоадер пропускал в начало флеша (прошел тест) существует контролька, ее я пересчитал. Если мою переделанную, но не закодированную под апдейт через "через ЮСБ канал", прошивку залить программатором в контроллер, то она работает и проходит тест бутлоадера. Расшифровав гамму по которой кодируется прошивка для "апдейта через ЮСБ", я ее переделал, но флешер где-то проверяет ее на соответствие нужному, и умышленно портит. Поэтому я и хочу подобрать (написать) другой флешер, который будет просто тупо лить по очереди байты из подготовленного файла, не обращая внимания на версию и состояние заливаемой прошивки. Потому-что по правилам бутлоадера это пройдет.
если вы расковыряли прошивку, то расковырят флешер тем более сможете
может и есть опенсоурсный, но обычно флешеры(апдейтеры) пишутся под что то конкретное, там есть какие то байты синхронизации или заголовки...

Да это Россовская программа ВЦДС. Есть там и заголовки и шифрованные данные...... Я хочу заливать во флеш вместо родной прошивки, свою. Отработать с ней, и потом спокойно опять обновиться родной россовской. Остался только один этап (но он самый трудный для меня), как залить мою прошивку в контроллер?



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 18 октября 2011 01:30
· Личное сообщение · #11

Kuzya69 пишет:
но флешер где-то проверяет ее на соответствие нужному, и умышленно портит

Может проще от мониторить Флешер с той прошивкой, с которой работает без ошибок и сравнить с работой Флешера на Фашей прошивке. Может там банальный MD5 , а может и CRC ! Попробуйте отмониторить начиная с ОЕП !



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 18 октября 2011 01:50 · Поправил: Kuzya69
· Личное сообщение · #12

Попробуйте отмониторить начиная с ОЕП !
Ну во первых флешер встроен в основную программу, и включается в работу, если видит, что прошивка адаптера ниже версией чем прошивка предлагаемая для флеширования. К тому-же к вашей задаче добавится еще распаковка самой проги. А этого я делать не умею.
Может проще от мониторить Флешер с той прошивкой, с которой работает без ошибок и сравнить с работой Флешера на Фашей прошивке.
Я-же объяснял, что моя прошивка тоже льется, но в потоке появляются одиночные ошибочные данные, причем в разных местах.
Или я вас неправильно понял? Я под словом монитор подразумеваю, лог обмена байтами между контроллером и компьютером по шине ЮСБ.



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 18 октября 2011 15:16
· Личное сообщение · #13

Kuzya69 пишет:
Или я вас неправильно понял?

Наверно я Неверно Выяснился !
Я Имел ввиду, что нужно проследить Работу Флешера С Той, что Льется намано(сделать типа ЛОГа Бряков и т.д.) и Аналогчиное сделать со своей прошивкой ! Сравнить и Понять, Где прога Палит Вашу Прошивку !



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 18 октября 2011 17:43
· Личное сообщение · #14

Ну мне это не осилить. Поэтому и спрашиваю флешер какой-нибудь. Загнать прошивку в режим флеширования не сложно, а залить тоже алгоритм не из сложных. Меня правда пугали таймингами, но не думаю что это верх мастерства. Как порт настраивать в бутлоадере контроллера есть.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 18 октября 2011 19:12
· Личное сообщение · #15

Kuzya69 может пора всё отложить и изуть masm? Или так и будишь побираться по топикам? Как я понял с твоим скилом изучение основ и сбор нужного файла дастся тебе максимум за 3-4 дня, На крайняк wasm поможет.

-----
Yann Tiersen best and do not fuck




Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 18 октября 2011 20:12
· Личное сообщение · #16

Kuzya69 пишет:
Загнать прошивку в режим флеширования не сложно, а залить тоже алгоритм не из сложных.

Можно предположить что под словом "прошивка" в данном контексте имеется в виду последовательность данных. Но каким же таким нехитрым образом аффтор "заганяет" эти данные в "режим флеширования" ?? Как вообще последовательность данных можно "загнать" в какой-то режим ???
У меня от этого выражения происходит разрыв шаблона...

Kuzya69 пишет:
Меня правда пугали таймингами, но не думаю что это верх мастерства.

Да конечно, ерунда это все. Не стоит такими мелочами замарачиваться.

Ни слова о том что за девайс, какой там контроллер, в каком именно режиме используется юсб...

Kuzya69 неужели вы думаете что действительно существует какой-то универсальный способ для обновления по в разных девайсах ?



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 18 октября 2011 21:24
· Личное сообщение · #17

Как вообще последовательность данных можно "загнать" в какой-то режим ???

Ну не умею я правильно "выражаться", хотелось-бы матом, да нельзя. И так вон целые поэмы пишу, чтоб объяснить как можно понятней.
Я хотел сказать, что чтобы перевести этот контроллер, с которым я мучаюсь, в режим флеширования, не обязательно проходить очень много шагов как это делается в программе, когда начинается апдейт. Все проверки там нужны только, чтобы убедиться, что флешироваться будет именно-то что нужно. А если убрать все проверки, то можно при включении адаптера, после ответа "44", от адаптера, сразу начинать передачу страниц.
Да конечно, ерунда это все. Не стоит такими мелочами замарачиваться.
И тут меня неправильно поняли. Просто я не думаю, что это так сложно, переделать в каком-то похожем по действию флешере.
Ни слова о том что за девайс, какой там контроллер, в каком именно режиме используется юсб...
Кратко уже упоминал это ВЦДС, от РоссТеч. Бывший ВАГ-КОМ. Конроллер там атмега162. В каком режиме ЮСБ, не знаю. Может есть другие вопросы для уточнения? Отвечу.
неужели вы думаете что действительно существует какой-то универсальный способ для обновления по в разных девайсах ?
Именно это я как раз и не думаю, просто хочется посмотреть работу похожих флешеров, и на их основе или написать свой, или переправить готовый.



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 18 октября 2011 21:50
· Личное сообщение · #18

Kuzya69 пишет:
Конроллер там атмега162

Может стоит поискать Флешер под Данный Чип ?



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 18 октября 2011 22:34
· Личное сообщение · #19

Может стоит поискать Флешер под Данный Чип ?
Именно это я хочу, но только в открытом виде. Потому как, даже если и выдернуть его из программы, то этого мало, надо будет еще от защит избавлять.



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 18 октября 2011 23:19
· Личное сообщение · #20

В атмеге 162 нет аппаратного USB. Значит используется софтовая реализация, что врядли, или на плате есть преобразователь USB2UART например FTDI232, PL2302 или подобные.
Если это так, значит никаким USB там и не пахнет. Обмен данными идет по UART.

Прошить сам контроллер ATmega162 вообще никаких проблем не представляет. Засунул в прогер и пишеш туда что душе угодно. Если прогера подходящего нет то можно SPI шнурок на коленке спаять.

В данном случае сложность совсем в другом. Kuzya69 хочет прошить контроллер через функцию обновления. В флеше контроллера ATmega162 есть область BootLoader из которой возможно выполнять команды записи в флеш область программы контроллера. Код BootLoader разрабочтик пишет сам, как ему вздумается, поэтому искать какие-то флешеры просто глупо. В данном случае BootLoader принимает криптованную прошивку по UART, раскриптовывает и пишет в флеш. При этом сам BootLoader скорее всего не обновляется и соответственно не содержится в криптованой прошивке. Поскольку в контроллере установленны локбиты, прочитать его программатором не выйдет. Значит даже если раскриптовать ту часть прошивки которая имеется, толку будет мало.

Софт там пакован вроде обычным UPX.

Вот очень мне интересно что Kuzya69 удумал там менять ?



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 19 октября 2011 01:42 · Поправил: Kuzya69
· Личное сообщение · #21

Ну все верно.
преобразователь USB2UART например FTDI232
FT232В
Kuzya69 хочет прошить контроллер через функцию обновления.
И это верно
Код BootLoader разрабочтик пишет сам, как ему вздумается, поэтому искать какие-то флешеры просто глупо.
Код этот я знаю, и не только я. Правда для старых адаптеров, но пока так. Так я не ищу готовый флешер, я ищу близкий по смыслу, но чтоб был как база для переделки в свой.
При этом сам BootLoader скорее всего не обновляется и соответственно не содержится в криптованой прошивке.
Все верно, всегда один и тот-же.
Вот очень мне интересно что Kuzya69 удумал там менять ?
Менять так, чтоб контроллер выдавал некриптованную область ЕЕПРОМА, в порт UART. А так он выдает криптованную. ЕЕПРОМ-это самое ценное в кабеле.
Софт там пакован вроде обычным UPX.
Вот там ПС-Гуард и виртуалка. Я не смог. Мне так проще.
Вот темка моя была, пришлось забить
https://ssl.exelab.ru/f/action=vthread&forum=5&topic=18543&page=0#25



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 19 октября 2011 14:39
· Личное сообщение · #22

Kuzya69, дык гуглите библеотеку для работы с ком портом для любого удобного Вам языка программирования. И сможете принимать/отправлять байты или пакеты как Вым будет угодно.

вот пример для C++ и Delphi: --> Link <--

В теме про расспаковку ссылки битые. Хотелось бы на ЕХЕ глянуть.



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 19 октября 2011 16:46
· Личное сообщение · #23

Хотелось бы на ЕХЕ глянуть.
Это версия 10.6.1, она как раз работает с той прошивкой, над версией которой я ломаю голову.
http://zalil.ru/31895818
Или может ехе-инсталку надо? Но там хитрая прога она регится самим шнуром. И функция обновления включится, когда прога поймет, что фирмваре шнура устарело.
Спасибо, за линк, буду разбираться.



Ранг: 397.0 (мудрец), 179thx
Активность: 0.170.1
Статус: Участник

Создано: 19 октября 2011 18:11
· Личное сообщение · #24

rt-usb.dll где?

-----
...или ты работаешь хорошо, или ты работаешь много...




Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 19 октября 2011 19:08
· Личное сообщение · #25

rt-usb.dll где?
http://zalil.ru/31896751
Пожалста, может вообще всю папку запаковать?



Ранг: 397.0 (мудрец), 179thx
Активность: 0.170.1
Статус: Участник

Создано: 21 октября 2011 16:44
· Личное сообщение · #26

Kuzya69

посмотрите http://zalil.ru/31908586

-----
...или ты работаешь хорошо, или ты работаешь много...




Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 21 октября 2011 18:39
· Личное сообщение · #27

BfoX
Не запускается, в личке подробности.



Ранг: 191.8 (ветеран), 46thx
Активность: 0.170
Статус: Участник

Создано: 23 октября 2011 04:48 · Поправил: Ratinsh
· Личное сообщение · #28

на глаза попался, сам не пользовался
http://www.232analyzer.com/232default.htm

PS По моему Кузя вы сто лет сом-портом занимаетесь , если вы тот Кузя ?!
И скрипты свободно пишите ?! Так что вы нам здесь голову морочите?
Или задача прогу заломать...



Ранг: 30.1 (посетитель)
Активность: 0.070
Статус: Участник

Создано: 23 октября 2011 15:01
· Личное сообщение · #29

По моему Кузя вы сто лет сом-портом занимаетесь
Нет, видимо я не тот Кузя. Жаль.
Или задача прогу заломать...
Задача сделать флешер, или старый упростить, избавить от проверок. А прога распакованная и так есть. Только слаб я в этих тонкостях, как кусок из общего кода вынимать, как от проверок избавлять. С сырцами еще могу попробовать повозиться, а вот с кодом без опыта вряд-ли справлюсь.


 eXeL@B —› Вопросы новичков —› Как передать файл прошивки микроконтроллера через ЮСБ-канал?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати