реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Closed TopicStart new topic
> Прошивка MSP430 и как ее получить
d7d1cd
сообщение Jun 28 2011, 16:35
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 437
Регистрация: 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
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 28 2011, 19:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата
Каторые мы выризаем в блокноте .И чистая прошивка у нас!!!

Даже, если и у вас (в чем я сомневаюсь, т.к. в указанных номерах кристаллов известных "дырок" в BSL вроде нету), то она (прошивка) нерабочая sm.gif Потому, что этими 0xF000 затерли вектора прерываний. Даже вектор сброса затерт и при клонировании программа стартанет фиг знает откуда. Точнее откуда стартанет понятно - с адреса 0xF000, но что она при этом будет делать?
Вообще, d7d1cd, вы вместо того, чтобы цитировать "произведения" всяких "кулибиных", почитали бы оригинальные документы. RTFM, как говорится sm.gif
MSP430 Programming Via the Bootstrap Loader (BSL) (Rev. A)
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jun 29 2011, 03:01
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 437
Регистрация: 26-11-10
Пользователь №: 61 199



Спасибо за просвещение rolleyes.gif Из прочитанного я понял, что пароль для открытия проца на чтение - это по сути адреса векторов прерываний. Это так?
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 29 2011, 08:27
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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% случаев вызовет сброс, причину которого вылавливать гораздо сложнее.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jun 29 2011, 15:09
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 437
Регистрация: 26-11-10
Пользователь №: 61 199



Вроде немного понятно. К меня пока задача не писать программу для микроконтроллера, а считать ее. Fuse в проце пережжен, распилить проц мне не под силу. Остается брут паролей для BSL. Реально ли это осуществить за мыслимое время? Сколько примерно проходит времени от "отправил пароль в BSL" до "получил ответ"?
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jun 29 2011, 15:45
Сообщение #6


Беспросветный оптимист
******

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



Цитата(rezident @ Jun 29 2011, 12:27) *
В зависимости от опцией и типа компилятора неиспользуемые вектора могут 0xFFFF содержать.

Это так ИАР делает.
MSPGCC на неиспользуемые вектора ставит заглушки __unexpected, что повышает стойкость к взлому.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
rezident
сообщение Jun 29 2011, 17:39
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 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. Реально ли это осуществить за мыслимое время?

И еще раз (повторно) вам указываю, что открытое обсуждение способов и методов взлома в данном разделе является нарушением Правил форума! twak.gif

Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jul 2 2011, 05:34
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 437
Регистрация: 26-11-10
Пользователь №: 61 199



Почитал документацию. Уяснил, что таблица векторов прерывания хранится в микроконтроллере с адреса FFE0 по адрес FFFF (всего 32 адреса). Так же понял, что доступом к защищенным командам BSL является пароль, который представляет собой значения, которые хранятся по адресам с FFE0 по FFFF (32 байта). Если все так, то получается, что пароль для BSL это шестнадцатеричное число от 0x0 до 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (FF повторяется 32 раза). Или же пароль представляет собой только старшие (младшие) байты, хранящиеся по адресам векторов прерывания?

Поправьте меня, если что-то не так. Направьте на путь истинный...

Сообщение отредактировал d7d1cd - Jul 2 2011, 06:05
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jul 6 2011, 02:50
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 437
Регистрация: 26-11-10
Пользователь №: 61 199



Не поверю, что никто не может помочь...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jul 6 2011, 05:02
Сообщение #10


Беспросветный оптимист
******

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



Цитата(d7d1cd @ Jul 6 2011, 06:50) *
Не поверю, что никто не может помочь...

Ну а чем можно помочь?
За это время можно было уже чего-то попробовать.
Пара соображений.
Вектора прерываний обычно ссылаются на область флеш-памяти (сужаем диапазон возможных значений).
Можно прикинуть, какие вектора не используются. Скорее всего, для них будет FFFF либо фиксированная заглушка (одна на все).
RESET_VECTOR обычно (если не переопределён) ссылается на начало программы (startup).
Ну а дальше - скрипт в зубы и круглосуточно ползущие буковки в консоли...


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jul 6 2011, 17:26
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 437
Регистрация: 26-11-10
Пользователь №: 61 199



А то что я предполагаю (про диапазон паролей) верно?
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 7 2011, 08:49
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 664
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(d7d1cd @ Jul 6 2011, 05:50) *
Не поверю, что никто не может помочь...

Ну хотите, перепишу программу с нуля?

Цитата(MrYuran @ Jul 6 2011, 08:02) *
фиксированная заглушка (одна на все).

У меня всегда индивидуальные заглушки на наиспользуемые вектора sm.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jul 7 2011, 09:04
Сообщение #13


Беспросветный оптимист
******

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



Цитата(Dog Pawlowa @ Jul 7 2011, 12:49) *
У меня всегда индивидуальные заглушки на наиспользуемые вектора sm.gif

Я имел в виду заглушку, которую компилятор (GCC) ставит по умолчанию.
Типа:
Код
00001134 <_unexpected_>:
_unexpected_():
    1134:    00 13           reti

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


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Jul 7 2011, 09:28
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 664
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(MrYuran @ Jul 7 2011, 12:04) *
Хотя IAR, по моим наблюдениям, даже такого не делает

А, понятно.
ИАР сам не делает, я это делаю ручками, а с GCC не работаю.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Hlad
сообщение Jul 7 2011, 13:37
Сообщение #15





Группа: Новичок
Сообщений: 8
Регистрация: 10-09-10
Пользователь №: 59 413



Брут-форс тоже не поможет: в MSP есть такая фича, что после скольки-то неверных попыток получения доступа по BSL программа стирается. Если ее включили (а я, например, включаю) - после пары попыток в руках оказывается кирпич.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2017 - 04:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01509 секунд с 7
ELECTRONIX ©2004-2016