|
Прошивка MSP430 и как ее получить |
|
|
|
Jun 28 2011, 16:35
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Привет народ. Где-то на просторах интернета нашел вот что: Цитата хотие слить дамп с микросхемы MSP430 Это стало возможно .Я раскрыл этот секрет...
Нужен шнур USB - COM от любого мобильника..и программа MspFet и фаил для разлочки .. int_vect.txt 1)Спаиваем шнур по этой схеме: 1 TXD P1.1 2 RXD P2.2 3 RST RST/NMI 4 DTR Test 5 GND GND
2)Запскаем программу MspFet 3)Выбираем контролер MSP430F12x2/F11x2 4)меню TOOLS - SETUP ставим BSL и нужый COM порт. 5)нажимаем кнопку READ и кнопку RESET на донгле.. 6)Красный светодиод на модуле должен погаснуть и в прграмме MspFet должно появится сообщние Read failed. Protected function. Password not match. 7)Это означает что прога микруху опредилила но нужен пароль для чтения прошивки... 8)Забьем на это, и открываем фаил int_vect.txt и жмем PROGR. 9)В MSP заливается две строчки в конец имеющийся прошивки @FFE0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 q 10)Теперь нажимаем кнопку READ и вместо сообщеня Read failed. Protected function. Password not match. Нам сливается прошивка MSP430.Толька в конце две строчки @FFE0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 q
Каторые мы выризаем в блокноте .И чистая прошивка у нас!!!
@FFE0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 00 F0 q
|
|
|
|
|
Jun 28 2011, 19:39
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата Каторые мы выризаем в блокноте .И чистая прошивка у нас!!! Даже, если и у вас (в чем я сомневаюсь, т.к. в указанных номерах кристаллов известных "дырок" в BSL вроде нету), то она (прошивка) нерабочая  Потому, что этими 0xF000 затерли вектора прерываний. Даже вектор сброса затерт и при клонировании программа стартанет фиг знает откуда. Точнее откуда стартанет понятно - с адреса 0xF000, но что она при этом будет делать? Вообще, d7d1cd, вы вместо того, чтобы цитировать "произведения" всяких "кулибиных", почитали бы оригинальные документы. RTFM, как говорится MSP430 Programming Via the Bootstrap Loader (BSL) (Rev. A)
|
|
|
|
|
Jun 29 2011, 08:27
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(d7d1cd @ Jun 29 2011, 08:01)  Из прочитанного я понял, что пароль для открытия проца на чтение - это по сути адреса векторов прерываний. Это так? Немного не так. Не адреса прерываний, а область Flash-памяти, содержащая адреса/вектора прерываний. В программе можно ведь не все прерывания использовать, а только те, что необходимо. Поэтому не все вектора будут содержать адреса обработчиков прерываний. В зависимости от опцией и типа компилятора неиспользуемые вектора могут 0xFFFF содержать. Чтобы затруднить взлом прошивки, рекомендуется инициализировать все вектора прерываний, адреса которых можно легко найти в хедере. Кроме того, инициализация всех векторов прерываний упрощает отладку в части случайных вызовов неиспользуемых прерываний. Так что следующая рекомендация советует выполнять обработчики неиспользуемых прерываний как заглушку-бесконечный цикл. Пример. Код #pragma vector=PORT2_VECTOR #pragma type_attribute=__interrupt void PORT2_ISR (void) { for(;;); } При случайном вызове прерывания программа попадает в бесконечный цикл и этот факт вы легко поймаете с помощью отладчика. В противном же случае программа может "улететь" бог знает куда и в 99% случаев вызовет сброс, причину которого вылавливать гораздо сложнее.
|
|
|
|
|
Jun 29 2011, 17:39
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(d7d1cd @ Jun 29 2011, 20:09)  Сколько примерно проходит времени от "отправил пароль в BSL" до "получил ответ"? В указанном выше документе имеется описание способа вызова BSL (1.3 Standard RESET and BSL Entry Sequence), формата протокола (1.4 UART Protocol) и фрейма запроса (Table 2-1. Data Frame of BSL Commands). Так что прикиньте сами t(BSL entry) + (HDR + RX password frame + ACK) * (Start+8bit+Parity+Stop) / 9600. Цитата(d7d1cd @ Jun 29 2011, 20:09)  Остается брут паролей для BSL. Реально ли это осуществить за мыслимое время? И еще раз (повторно) вам указываю, что открытое обсуждение способов и методов взлома в данном разделе является нарушением Правил форума!
|
|
|
|
|
Jul 2 2011, 05:34
|
Местный
  
Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199

|
Почитал документацию. Уяснил, что таблица векторов прерывания хранится в микроконтроллере с адреса FFE0 по адрес FFFF (всего 32 адреса). Так же понял, что доступом к защищенным командам BSL является пароль, который представляет собой значения, которые хранятся по адресам с FFE0 по FFFF (32 байта). Если все так, то получается, что пароль для BSL это шестнадцатеричное число от 0x0 до 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (FF повторяется 32 раза). Или же пароль представляет собой только старшие (младшие) байты, хранящиеся по адресам векторов прерывания?
Поправьте меня, если что-то не так. Направьте на путь истинный...
Сообщение отредактировал d7d1cd - Jul 2 2011, 06:05
|
|
|
|
|
Jul 6 2011, 05:02
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(d7d1cd @ Jul 6 2011, 06:50)  Не поверю, что никто не может помочь... Ну а чем можно помочь? За это время можно было уже чего-то попробовать. Пара соображений. Вектора прерываний обычно ссылаются на область флеш-памяти (сужаем диапазон возможных значений). Можно прикинуть, какие вектора не используются. Скорее всего, для них будет FFFF либо фиксированная заглушка (одна на все). RESET_VECTOR обычно (если не переопределён) ссылается на начало программы (startup). Ну а дальше - скрипт в зубы и круглосуточно ползущие буковки в консоли...
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 7 2011, 08:49
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(d7d1cd @ Jul 6 2011, 05:50)  Не поверю, что никто не может помочь... Ну хотите, перепишу программу с нуля? Цитата(MrYuran @ Jul 6 2011, 08:02)  фиксированная заглушка (одна на все). У меня всегда индивидуальные заглушки на наиспользуемые вектора
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jul 7 2011, 09:04
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(Dog Pawlowa @ Jul 7 2011, 12:49)  У меня всегда индивидуальные заглушки на наиспользуемые вектора  Я имел в виду заглушку, которую компилятор (GCC) ставит по умолчанию. Типа: Код 00001134 <_unexpected_>: _unexpected_(): 1134: 00 13 reti Хотя IAR, по моим наблюдениям, даже такого не делает (вообще не ставит никаких заглушек). Что приводит иногда к печальным последствиям (в случае случайного разрешения незаглушенного прерывания)
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 7 2011, 13:37
|
Группа: Новичок
Сообщений: 8
Регистрация: 10-09-10
Пользователь №: 59 413

|
Брут-форс тоже не поможет: в MSP есть такая фича, что после скольки-то неверных попыток получения доступа по BSL программа стирается. Если ее включили (а я, например, включаю) - после пары попыток в руках оказывается кирпич.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|