Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прошивка MSP430 и как ее получить
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
d7d1cd
Привет народ. Где-то на просторах интернета нашел вот что:
Цитата
хотие слить дамп с микросхемы 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
rezident
Цитата
Каторые мы выризаем в блокноте .И чистая прошивка у нас!!!

Даже, если и у вас (в чем я сомневаюсь, т.к. в указанных номерах кристаллов известных "дырок" в BSL вроде нету), то она (прошивка) нерабочая sm.gif Потому, что этими 0xF000 затерли вектора прерываний. Даже вектор сброса затерт и при клонировании программа стартанет фиг знает откуда. Точнее откуда стартанет понятно - с адреса 0xF000, но что она при этом будет делать?
Вообще, d7d1cd, вы вместо того, чтобы цитировать "произведения" всяких "кулибиных", почитали бы оригинальные документы. RTFM, как говорится sm.gif
MSP430 Programming Via the Bootstrap Loader (BSL) (Rev. A)
d7d1cd
Спасибо за просвещение rolleyes.gif Из прочитанного я понял, что пароль для открытия проца на чтение - это по сути адреса векторов прерываний. Это так?
rezident
Цитата(d7d1cd @ Jun 29 2011, 08:01) *
Из прочитанного я понял, что пароль для открытия проца на чтение - это по сути адреса векторов прерываний. Это так?

Немного не так. Не адреса прерываний, а область Flash-памяти, содержащая адреса/вектора прерываний. В программе можно ведь не все прерывания использовать, а только те, что необходимо. Поэтому не все вектора будут содержать адреса обработчиков прерываний. В зависимости от опцией и типа компилятора неиспользуемые вектора могут 0xFFFF содержать. Чтобы затруднить взлом прошивки, рекомендуется инициализировать все вектора прерываний, адреса которых можно легко найти в хедере. Кроме того, инициализация всех векторов прерываний упрощает отладку в части случайных вызовов неиспользуемых прерываний. Так что следующая рекомендация советует выполнять обработчики неиспользуемых прерываний как заглушку-бесконечный цикл. Пример.
Код
#pragma vector=PORT2_VECTOR
#pragma type_attribute=__interrupt
void PORT2_ISR (void)
{ for(;;);
}

При случайном вызове прерывания программа попадает в бесконечный цикл и этот факт вы легко поймаете с помощью отладчика. В противном же случае программа может "улететь" бог знает куда и в 99% случаев вызовет сброс, причину которого вылавливать гораздо сложнее.
d7d1cd
Вроде немного понятно. К меня пока задача не писать программу для микроконтроллера, а считать ее. Fuse в проце пережжен, распилить проц мне не под силу. Остается брут паролей для BSL. Реально ли это осуществить за мыслимое время? Сколько примерно проходит времени от "отправил пароль в BSL" до "получил ответ"?
MrYuran
Цитата(rezident @ Jun 29 2011, 12:27) *
В зависимости от опцией и типа компилятора неиспользуемые вектора могут 0xFFFF содержать.

Это так ИАР делает.
MSPGCC на неиспользуемые вектора ставит заглушки __unexpected, что повышает стойкость к взлому.
rezident
Цитата(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

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

Поправьте меня, если что-то не так. Направьте на путь истинный...
d7d1cd
Не поверю, что никто не может помочь...
MrYuran
Цитата(d7d1cd @ Jul 6 2011, 06:50) *
Не поверю, что никто не может помочь...

Ну а чем можно помочь?
За это время можно было уже чего-то попробовать.
Пара соображений.
Вектора прерываний обычно ссылаются на область флеш-памяти (сужаем диапазон возможных значений).
Можно прикинуть, какие вектора не используются. Скорее всего, для них будет FFFF либо фиксированная заглушка (одна на все).
RESET_VECTOR обычно (если не переопределён) ссылается на начало программы (startup).
Ну а дальше - скрипт в зубы и круглосуточно ползущие буковки в консоли...
d7d1cd
А то что я предполагаю (про диапазон паролей) верно?
Dog Pawlowa
Цитата(d7d1cd @ Jul 6 2011, 05:50) *
Не поверю, что никто не может помочь...

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

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

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

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

Хотя IAR, по моим наблюдениям, даже такого не делает (вообще не ставит никаких заглушек).
Что приводит иногда к печальным последствиям (в случае случайного разрешения незаглушенного прерывания)
Dog Pawlowa
Цитата(MrYuran @ Jul 7 2011, 12:04) *
Хотя IAR, по моим наблюдениям, даже такого не делает

А, понятно.
ИАР сам не делает, я это делаю ручками, а с GCC не работаю.
Hlad
Брут-форс тоже не поможет: в MSP есть такая фича, что после скольки-то неверных попыток получения доступа по BSL программа стирается. Если ее включили (а я, например, включаю) - после пары попыток в руках оказывается кирпич.
KARLSON
А как эта функция включается? Скажите пожалуйста?
rezident
Цитата(KARLSON @ Jul 7 2011, 20:29) *
А как эта функция включается? Скажите пожалуйста?

Читаем внимательно документ, ссылку на который я давал ранее (slau319a.pdf). Раздел 2.7 Password Protection.
Цитата
BSL versions 2.00 and higher have enhanced security features. These features are controlled by the flash
data word located beneath the interrupt vector table addresses (e.g., for the MSP430F2131, address
0xFFDE). If this word contains:
• 0x0000: The flash memory is not erased if an incorrect BSL password has been received by the target.
• 0xAA55: The BSL is disabled. This means that the BSL is not started with the default initialization
sequence shown in Section 1.3.
All other values: If an incorrect password is transmitted, the entire flash memory address space is
erased automatically.

То бишь запретить BSL совсем - можно, ограничить доступ одной попыткой ввода правильного пароля - тоже, но журнала со "счетчиком попыток взлома" как-то не предусмотрено.
При прочтении этого раздела следует обратить внимание на версию BSL в которой эта опция блокировки реализована (BSL versions 2.00 and higher) и сравнить ее с версией BSL используемого вами кристалле. Отличия версий BSL указаны в конце документа (см. Chapter 5).
Hlad
Цитата(rezident @ Jul 8 2011, 00:24) *
То бишь запретить BSL совсем - можно, ограничить доступ одной попыткой ввода правильного пароля - тоже, но журнала со "счетчиком попыток взлома" как-то не предусмотрено.

Значит, я в свое время неправильно понял этот кусок даташита sm.gif
Но факт есть факт: я пишу какое-то значение в указанную область памяти, и к нам на завод уже возвращались по рекламации приборы со стертой прошивкой.
d7d1cd
То есть нельзя сделать брут? Или все зависит от версии BSL?
Hlad
Цитата(d7d1cd @ Jul 11 2011, 06:52) *
То есть нельзя сделать брут? Или все зависит от версии BSL?


Считай, что нельзя: даже если защита отключена, попытка чтения по BSL занимает слишком много времени, чтобы действовать перебором
rezident
Цитата(d7d1cd @ Jul 11 2011, 07:52) *
Или все зависит от версии BSL?

Зависит. Если речь идет про MSP430F149 (как в этом сообщении) с ревизией кристалла ниже AA и BSL версии 1.10, то все решается гораздо проще. Даже подбора паролей не требуется. Потому, что в BSL 1.10 имеется уязвимость, описанная в Errata (BSL3). Но как именно ее использовать - это не для публичного обсуждения. rolleyes.gif
Rst7
Гм, очень интересно. Я как-то никогда вплотную с MSP430 не сталкивался, но если там такая защита - она яйца выеденного не стоит, ибо восстановить содержимое векторов по остальному коду - походу пыль для моряка.

Тьфу.
rezident
Цитата(Rst7 @ Jul 11 2011, 21:26) *
но если там такая защита - она яйца выеденного не стоит

Это вы такой вывод на основе цитаты из первого поста сделали? sm.gif Дык уже ведь пояснили, что там ... эээ... некая выдумка описана. Не зная пароль доступа, можно стереть только всю флешь целиком, но никак не один сектор, где этот пароль находится. Используя уязвимость в BSL - да, можно. Причем можно целиком считать всю Flash, даже вовсе ничего не стирая У Kurt-а в одной из версий MSPFET Programmer это даже было реализовано. Но он практически сразу же удалил эту фичу. Непонятно только почему сама TI так долго тянула с обновлением BSL, выпуская новые ревизии кристаллов со старой прошивкой ROM (BSL)? Ведь баг BSL3 был во всех x13x и x14x с BSL версии 1.10.
Rst7
QUOTE
Это вы такой вывод на основе цитаты из первого поста сделали? Дык уже ведь пояснили, что там... эээ... некая выдумка описана.


Да, это я как то по диагонали топик прочитал. Пардон, в следующий раз буду внимательнее.
d7d1cd
Цитата(rezident @ Jul 11 2011, 19:19) *
Если речь идет про MSP430F149 (как в этом сообщении) с ревизией кристалла ниже AA и BSL версии 1.10, то все решается гораздо проще. Даже подбора паролей не требуется. Потому, что в BSL 1.10 имеется уязвимость, описанная в Errata (BSL3). Но как именно ее использовать - это не для публичного обсуждения. rolleyes.gif


У меня именно этот кристалл. Подскажите, как определить ревизию? По надписи на самом процессоре?
И еще вопрос: до какого примерно года выпускались микроконтроллеры с BSL 1.10?
d7d1cd
Ну помогите, господа... sad.gif
rezident
http://russiansemiresearch.com/ru/catalog/
d7d1cd
Спасибо, rezident, полезный сайт. Однако в их списке нет процессора, который мне надо прочитать... sad.gif Я им, конечно, написал письмо с конкретной задачей. Посмотрим, что ответят.
На моем микроконтроллере написано:
Цитата
4AENDJT
M430F149
REV N


На нем нельзя будет использовать уязвимость?
rusin
Цитата(d7d1cd @ Jul 18 2011, 06:41) *
Спасибо, rezident, полезный сайт. Однако в их списке нет процессора, который мне надо прочитать... sad.gif Я им, конечно, написал письмо с конкретной задачей. Посмотрим, что ответят.
На моем микроконтроллере написано:


На нем нельзя будет использовать уязвимость?

Интересно что ответили?
d7d1cd
Ничего не ответили. Наверное думают еще...
svss
Цитата(d7d1cd @ Aug 19 2011, 09:28) *
Ничего не ответили. Наверное думают еще...

Нет, они думали не дольше одной секунды, причём плохо и, сами знаете про кого.

Желаете ломать защиту, займИтесь этим благородным (без кавычек) делом самостоятельно.
Если постигнет Вас удача, никому не говорите, кроме TI и никак кроме как иначе чем по телефону.
Станете известным и богатым.

Один маленький шанс получить поддержку у Вас мог бы быть, если б Вы внятно и доказательно
объяснили зачем Вам нужно ломать защиту и почему это не нарушает ничьи права собственности.

Hint из личного опыта и вопреки следующей цитате:
Цитата
Без пароля доступна только одна команда работы с памятью - mass erase.
Никаких проблем- трёте всю флешь и пишете заново всё что угодно.
Если это имеется в виду. Сергей опередил


Я в MSP430F149/169 резидентах (фуз стёрт) использую сохранение параметров во flash.
Резидент сам, programmatically, стирает выделенный кусочек flash и записывает нечто нужное.

Стало быть,
если Ваша задача - не взломать чужое, а дописать своё;
если это чужое поддерживает запись во flash;
если Вы знаете как к этой процедере записи доступиться;
если ... (ещё пара-тройка условий)
то должно всё получиться.

Удачи. sm.gif
rezident
Цитата(svss @ Aug 20 2011, 11:31) *
Hint из личного опыта и вопреки следующей цитате:


Я в MSP430F149/169 резидентах (фуз стёрт) использую сохранение параметров во flash.
Резидент сам, programmatically, стирает выделенный кусочек flash и записывает нечто нужное.
Поскольку эта часть сообщения обращена ко мне, то отвечаю. Я не понял смысла вашего сообщения. laughing.gif Напишите, пожалуйста, по-русски так, чтобы можно хоть понять возражение это или дополнение/пояснение? Если вы про использование процедур из BSL для внутрипрограммного программирования, то тут вы Америку вовсе не открыли. Все это описано в вышеупомянутых документах.
svss
Цитата(rezident @ Aug 20 2011, 21:50) *
Поскольку эта часть сообщения обращена ко мне, то отвечаю. Я не понял смысла вашего сообщения. laughing.gif Напишите, пожалуйста, по-русски так, чтобы можно хоть понять возражение это или дополнение/пояснение? Если вы про использование процедур из BSL для внутрипрограммного программирования, то тут вы Америку вовсе не открыли. Все это описано в вышеупомянутых документах.

Да ладно, что Вы, ничего личного, у меня никогда нет цели выпячивать себя или сыпать песок на голову собеседнику.

Пишу по-русски: рассказал про свой опыт, про тот случай когда и как можно "дописать" чего-то во flash msp430.
Подозреваю, что в этом форуме не только я но и Вы ни одной "Америки" не открыли.
Указанная часть сообщения была обращена не Вам, Вы ошиблись. 1111493779.gif


m1k1e
Доброго времени суток. Есть вопрос. Имеется готовое устройство на мсп430 и исходники. Необходимо вычитать бинарники с флеш-памяти мсп430. Как получить содержимое таблицы прерываний, т.е. пароль для разблокировки мсп430. Заранее спасибо всем ответившим.
rusin
Цитата(m1k1e @ Mar 12 2012, 17:39) *
Доброго времени суток. Есть вопрос. Имеется готовое устройство на мсп430 и исходники. Необходимо вычитать бинарники с флеш-памяти мсп430. Как получить содержимое таблицы прерываний, т.е. пароль для разблокировки мсп430. Заранее спасибо всем ответившим.


А Fuse пережен(запрограммирован- в msp430f55xx)?
yourichkg
Чтоб не плодить новых тем, хочу задать вопрос в этой теме. Суть вопроса такова. Мне нужно считать область eeprom в контроллере msp430f1232, нужно это для изготовления нового ключа для автомобиля, память программы меня интересует мало. Есть ли практическая возможность сделать подобное не зная пароля доступа к чтению? С подобными контроллерами сталкиваюсь впервые, у нас о них никто ничего не слышал, пробовал его читать JTAGом, полный ноль, собрал BSL, он с камнем конектится но ругается на пароль. Бездумно эксперементировать с этим устройством нет желания, всётаки автомобмль. Осталась одна надежда на гуру этой ветки.
MrYuran
Цитата(m1k1e @ Mar 12 2012, 17:39) *
Как получить содержимое таблицы прерываний, т.е. пароль для разблокировки мсп430. Заранее спасибо всем ответившим.

Собрать ровно так же и тем же, чем пользовались при сборке зашитой программы.
Только зачем, если есть исходники?

Цитата(yourichkg @ May 30 2012, 09:39) *
Есть ли практическая возможность сделать подобное не зная пароля доступа к чтению?

Ходили слухи про дыры в ранних ревизиях некоторых конкретных кристаллов (тех же 149), но вообще - нет.
yourichkg
Цитата(MrYuran @ May 30 2012, 11:03) *
Ходили слухи про дыры в ранних ревизиях некоторых конкретных кристаллов (тех же 149), но вообще - нет.

значит содержимое кристала полностью не доступно, жаль........................ Да, корейцы извратились. Обидно.
Meh
Цитата(d7d1cd @ Aug 19 2011, 02:28) *
Ничего не ответили. Наверное думают еще...


Вся беда в том, что никто толком не изучал BSLDEMO и BSLDEMO2.

Далее надо разобраться с ассеблером.

Самое плохое то, что никто (из откликнувшихся здесь, кроме одного) не имеет хорошего программатора.

И последнее. Добыть прошивку без питона проблемотично.


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.