Harley Davidson 2021+ Softail ECM

agorlach77

Участник форума
Регистрация
20.05.24
Сообщения
8
Реакции
1
Добрый день!

Скачал две прошивки с MMH, сняты с одного и того же мотоцикла, разный пробег.

Внутри есть строки:
05/19/2020 14:41:40
41000855D
001796-01

99% что снята она с блока H/W 41000706, SKU HD464-012, 41000677, но через ODB.

Немного поковырял их в Гидре, нашел работу с CAN, но не нашел того, что ожидал найти.

Подозреваю, что слились прошивки кривовато.

Был бы рад поглядеть другие варианты для этих блоков.

С уважением,
Александр
 

Вложения

  • harley RGU 2022 Hitam Ari 4 (14.952 mile).bin
    2,5 МБ · Просмотры: 20
  • RGU2022 hitam Ari 4 (14.059 mile).bin
    2,5 МБ · Просмотры: 20
FatBoy 2022
считано на столе
 

Вложения

  • harleydelphieu5mt21mcan_bench_maps_408095091260207004f4582100000000_20221224195646.bin
    2,5 МБ · Просмотры: 19
Спасибо огромное! Из выложенных выше мною прошивок, одна снята хорошо, а вторая битая. Вот тут еще добрые люди скачали хорошо снятую прошивку: Помогите скачать с MHH

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

В тему ковыряния прошивок ECU я попал из праздного интереса, так что для чего копаю не знаю ;) но если что-то конкретное интересует, попробую расковырять.
 
Спасибо огромное! Из выложенных выше мною прошивок, одна снята хорошо, а вторая битая. Вот тут еще добрые люди скачали хорошо снятую прошивку: Помогите скачать с MHH

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

В тему ковыряния прошивок ECU я попал из праздного интереса, так что для чего копаю не знаю ;) но если что-то конкретное интересует, попробую расковырять.
гидру скачал, но очень многое непонятно, вплоть до того, какой язык правильно выбрать) мне в частности необходимо находить immo off, speed limeter, адреса осей карт (не всегда удается найти в winols), так что инструмент крайне полезный) Если есть необходимость- то могу еще от sportster S прислать прошивку.
А так же есть очень много прошивок практически от всех марок мотоциклов.
 
Добрый день!

Извините за долгий ответ, был в отпуске. В Гидре лучше всего выбрать TC29x (хоть у нас и Aurix TC265) и в опциях указать, что файл загружается с адреса 0x80000000. К сожалению, для него не дано определений регистров CAN, и из соседних файлов их перенести нельзя ( Ghidra\Processors\tricore\data\languages\tc176x.pspec ), адреса не совпадают.

g1.pngg2.png

Так что придется тащить их из даташита:

CAN_MODATAL0 0xf0019010
CAN_MODATAH0 0xf0019014
CAN_MOAR0 f0019018

Ну и уже отталкиваясь от регистров, начинать восстанавливать код.

g3.png

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

С уважением,
Александр
 
Сегодня удалось сделать патч, чтобы запустить прошивку на Aurix TC275 lite Kit. До того как зависнуть, модуль успевает отправить около 1000 сообщений в CAN, и даже ответить (например, на запрос UDS), если ему успеть его послать. Это прямо прорыв, так как можно поотлаживать всякие интересные штуки, типа программирования VIN и т.п. К мозгам своего мотоцикла мне как-то стремно подключаться ;)

Отлаживаюсь в WinIdea, который приходится запускать через Aurix Development Studio. Декомпилирую в Гидре. Очень жаль, что отладочные символы никак из Гидры в WinIdea не перекинуть.
 

Вложения

  • canview.png
    canview.png
    33,9 КБ · Просмотры: 11
  • patch1.jpg
    patch1.jpg
    167,3 КБ · Просмотры: 11
Дело теперь пошло быстро. Выяснилось, что модуль не виснет, а просто перестает слать сообщения, если не получает с шины сообщения с ID 501.

Собственно, на MMH человек спрашивал, как ему сбросить пробег. Пробег можно сбросить в 0 поменяв VIN. Конкретно для него приложил текстовый файл с сессией UDS, которая это делает при помощи стандартных методов. Никаких хаков, никаких секретов, никаких патчей в памяти и другой нелегальщины (можно ему отправить, если кто там может писать).

В этой сессии можно заметить, что мы получаем SEED (64 бита = 8 байт), и отправляем пароль такой же длинны в ответ. Увы, и сид, и пароль жестко зашиты в прошивке. С одной стороны, это значит, что купив раз лицензию на свой мотоцикл (и получив пароль), можно его использовать и в другом софте. Он постоянный.

С другой, мы не знаем, как генерируются пароли, и взять алгоритм нам негде. Это может быть CRC64 с каким-то смещением, это может быть отрезанный MD5, это может быть все, что угодно. Это может быть CRC64 от MD5. Единственное, что мы можем знать, это что алгоритм не использует ни VIN, ни какие-либо еще данные, привязанные к конкретной прошивке или мотоциклу.

Но если умеете читать дампы, найдете и сид и пароль:

8001C000: 00 00 00 00-00 37 05 00-27 20 32 15-00 0A 78 B5 7¦ ' 2§ 0x¦
8001C010: 01 00 00 00-00 00 00 00-00 00 00 00-00 00 00 00 O
8001C020: >1F A8 B1 11-1F BE FE F6-4E C4 01 BB-51 C3 E1 9A< Ўи-<Ў-¦ЎN-O¬Q+сЪ
8001C030: 51 21 52 00-00 00 00 36-30 37 30 30-30 31 34 00 Q!R 60700014
8001C040: 00 00 00 35-36 31 31 30-30 31 34>F4-3D 80 2E 83 56110014Ї=А.Г
8001C050: 96 CA A6 D3-2D A4 85 03-16 99 2A<39-32 31 30 32 Ц¦жL-дЕ¦-Щ*92102
8001C060: 32 30 32 02-30 29 20 31-05 00 00 00-00 00 00 00 202O0) 1¦


Лежат они вот по этим адресам (ниже данные с трех прошивок, что у меня есть):

Seed #1 8001c020 (2) Password #1 8001c053
ECU1: 1f a8 b1 11 1f be fe f6 ECU1: d3 2d a4 85 03 16 99 2a
ECU2: b8 df 49 81 b3 5c f1 a3 ECU2: 3b 39 74 53 17 bf 12 20
ECU3: B5 C8 30 FC-00 28 5B 54 ECU3: 3F-71 63 2C 83-68 7E DF

Seed #2: 8001c028 (4) Password #2: 8001c04b
ECU1: 4e c4 01 bb 51 c3 e1 9a ECU1: f4 3d 80 2e 83 96 ca a6
ECU2: 2c e6 d8 77 c8 97 6d b6 ECU2: 4a 85 8c 55 4e 28 dc df
ECU3: 59 E7 D9 0E-6E 54 C3 02 ECU3: 91-69 C4 B7 00 94 01 F6


ECU3 от Геннадия Григорьевича. По CAN, если посмотреть приложенный текстовый файл, сид и пароль передаются в обратном порядке, чем хранятся в ROM. Идентификаторы рядом в ROM (410000706, 41001165 и дата 20220129) тоже хранятся в обратном порядке. Не знаю, почему так, но если кто будет брутфорсить, я бы seed 1 ecu 1 рассматривал как 0x1fa8b1111fbefef6 (1F - старший байт, а не младший).

Если кто ломанет - чирканите по секрету, что там за алгоритм, любопытно же.
 

Вложения

  • change_vin_reset_run.txt
    1,5 КБ · Просмотры: 17
Кстати. В сервисе UDS 0x23, который позволяет читать память контроллера (правда только 0x70005c00 .. 0x70011ff8 и только после пароля) нет проверки длинны запрашиваемого блока. Если запросите больше 512 байт, то все рухнет из-за переполнения буфера.

Это настолько детская ошибка, что вызывает вопрос, как они тестируют и проверяют код. И есть ли там вообще культура управления разработкой ПО.

Теоретически, можно поискать другие дырки и попробовать как-то эти уязвимости поэксплуатировать.
 
Кстати. В сервисе UDS 0x23, который позволяет читать память контроллера (правда только 0x70005c00 .. 0x70011ff8 и только после пароля) нет проверки длинны запрашиваемого блока. Если запросите больше 512 байт, то все рухнет из-за переполнения буфера.

Это настолько детская ошибка, что вызывает вопрос, как они тестируют и проверяют код. И есть ли там вообще культура управления разработкой ПО.

Теоретически, можно поискать другие дырки и попробовать как-то эти уязвимости поэксплуатировать.

Здравствуй тебе, хороший человек!
Как можно с тобой связаться? Ты можешь меня научить всему что знаешь? (касаемо именно этой темы) (не бесплатно конечно)
 
Добрый день! Я написал в личку, телефон мне антиспам не дал прислать ;)

Из интересного, я написал просенький софт, который на графическом адаптере перебирает CRC64 с разными полиномами и ищет seed. Полиномы ISO я перебрал все, полиномы ECMA выборочно (процентов 20), до остальных руки не дошли: предположение, что это CRC64, изначально маловероятное.

Пообщаюсь с удовольствием на эту тему.
 
Добрый день! Я написал в личку, телефон мне антиспам не дал прислать ;)

Из интересного, я написал просенький софт, который на графическом адаптере перебирает CRC64 с разными полиномами и ищет seed. Полиномы ISO я перебрал все, полиномы ECMA выборочно (процентов 20), до остальных руки не дошли: предположение, что это CRC64, изначально маловероятное.

Пообщаюсь с удовольствием на эту тему.
Доброго! Пришлите пожалуйста Вашу почту, есть вопросик по другой теме)
 
Назад
Верх Низ