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

 
 
> Что там ST учудил с защитой кода.....
Dr.Alex
сообщение Jun 9 2015, 19:04
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Вроде бы сразу несколько возможностей, а всё отстой какой-то....
Если сделать RDP Level 2, то необратимо отваливается JTAG.
Если включить всё остальное вместе взятое (RDP Level 1 и PCROP), то фактически защиты нифига никакой нет.
Пример: есть бутлодырь, грузящий шифрованную АЕСом прошивку по USB.
Но если подключиться жтагом во время прошивки, то можно будет найти в RAM расшифрованную прошивку, или сразу ключи АЕСа.
Так ведь? Или я во что-то не въехал?
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 55)
adnega
сообщение Jun 9 2015, 19:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 9 2015, 22:04) *
Или я во что-то не въехал?

А какой именно камушек?
Ибо
CODE

Level 1: read protection
This is the default protection level when RDP option byte is erased. It is defined as well
when RDP value is at any value different from 0xAA and 0xCC, or even if the complement is not correct.
• User mode: Code executing in user mode can access main Flash memory and option
bytes with all operations.
• Debug, boot RAM and boot loader modes: In debug mode (with SWD) or when code
is running from boot RAM or boot loader, the main Flash memory and the backup
registers (RTC_BKPxR in the RTC) are totally inaccessible.
In these modes, even a simple read access generates a bus error and a Hard Fault
interrupt. The main Flash memory is program/erase protected to prevent malicious or
unauthorized users from reprogramming any of the user code with a dump routine. Any
attempted program/erase operation sets the PGERR flag of Flash status register
(FLASH_SR).
When the RPD is reprogrammed to the value 0xAA to move back to Level 0, a mass
erase of the main Flash memory is performed and the backup registers (RTC_BKPxR
in the RTC) are reset.

Неплохо защищает Flash и BKP. Если не хранить "необезображенную" копию в RAM не получается, то добро пожаловать в Level 2.
Чем он (Level 2) вас не устраивает? JTAG пропадает? А зачем он нужен? Не отлаживаться же.

Сообщение отредактировал IgorKossak - Jun 10 2015, 06:05
Go to the top of the page
 
+Quote Post
Aner
сообщение Jun 9 2015, 19:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Зачем так делать? Пишите свой бутлодырь с закрывашкой на конце.
Рестарт, затем грузите шифрованную АЕСом прошивку по USB. Второй рестарт, готово.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 9 2015, 20:05
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(adnega @ Jun 9 2015, 22:46) *
А какой именно камушек?

439

Цитата(adnega @ Jun 9 2015, 22:46) *
Если не хранить "необезображенную" копию в RAM не получается

Если нужна возможность фирмваре апдейта юзером, то и не получится никак.
Перед записью в любом случае инфа будет в раме, хоть побайтно, хоть поблочно, уже не так важно.
Даже если удастся удержать её в регистрах, чё толку? Регистры тоже через жтаг видны :-))))

Цитата(adnega @ Jun 9 2015, 22:46) *
Чем он (Level 2) вас не устраивает? JTAG пропадает? А зачем он нужен? Не отлаживаться же.

Может и устроит, но это требует тщательного тестирования бутлодыря.
А то есть хороший шанс запороть всю партию нафиг.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 9 2015, 20:16
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 9 2015, 23:05) *
Если нужна возможность фирмваре апдейта юзером, то и не получится никак.
Перед записью в любом случае инфа будет в раме, хоть побайтно, хоть поблочно, уже не так важно.

Еще как получится, мне кажется вы слегка "перебдели")
Ну вижу я всю раму, что с того? Где начало прошивки, где конец, по какому адресу писать во Flash, как рассчитывается CRC для проверки корректности, и т.п.
Мало иметь данные, нужно иметь синхронизацию и знать весь алгоритм.
Чтобы было понятнее, я утрирую: "а вы не боитесь за свои пароли глядя на алфавит"?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 9 2015, 20:21
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(adnega @ Jun 9 2015, 23:16) *
Еще как получится, мне кажется вы слегка "перебдели")
Ну вижу я всю раму, что с того? Где начало прошивки, где конец, по какому адресу писать во Flash, как рассчитывается CRC для проверки корректности, и т.п.
Мало иметь данные, нужно иметь синхронизацию и знать весь алгоритм.
Чтобы было понятнее, я утрирую: "а вы не боитесь за свои пароли глядя на алфавит"?

Да не, неправильно вы говорите.
Если бы всё это было сложно установить, то люди бы до сих пор не изобрели АЕС, а "шифры" писали бы, заменяя одни буквы другими :-))))))
Если чё, я и сам когда-то в реверсинге довольно серьёзные вещи делал.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 9 2015, 20:36
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 9 2015, 23:21) *
Да не, неправильно вы говорите.

Если обновляется только юзерская часть, а загрузчик фиксированный во Flash, то Level 1 вполне достаточно.
Прошивку можно вообще нешифрованной распространять (но нужно обезопасить себя от подделки прошивки) - толку от нее ноль без загрузчика.
Т.е. имея копию прошивки, враг не сможет производить устройства. Разве нет? Некоторые функции можно держать в виде экспортируемых из загрузчика.
Go to the top of the page
 
+Quote Post
Aner
сообщение Jun 9 2015, 20:43
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



QUOTE (adnega @ Jun 10 2015, 00:36) *
Если обновляется только юзерская часть, а загрузчик фиксированный во Flash, то Level 1 вполне достаточно.
Прошивку можно вообще нешифрованной распространять (но нужно обезопасить себя от подделки прошивки) - толку от нее ноль без загрузчика.
Т.е. имея копию прошивки, враг не сможет производить устройства. Разве нет? Некоторые функции можно держать в виде экспортируемых из загрузчика.

Это быстро раскалывается, с аесом, пока ни у кого из моих конкурентов не получилось, пытались раскалывать 12в импульсами, вроде как раньше пики, атмела открывали.
Пока только попалили STM процы.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 9 2015, 20:58
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(adnega @ Jun 9 2015, 23:36) *
Т.е. имея копию прошивки, враг не сможет производить устройства. Разве нет? Некоторые функции можно держать в виде экспортируемых из загрузчика.

Да вы што, ну хде хотя бы минимум фантазии??
Если протокол загрузки (и/или ключ АЕС) расколоты, то остаётся только загрузить свой код, который считает загрузчик.

Насчёт всяких колхозных "хитрушек" повторяю:: если бы они работали, то человечеству не пришлось бы изобретать шифры, хэши, цифровые подписи и так далее.

Вообще, у меня защита кода в контроллере это не основной уровень защиты.
В системе ещё есть сравнительно толстая плисина, которая производит аутентификацию специализированной микросхемы.
Но код в контроллере всё равно защитить хочется. Сегодня только комплексные меры работают. И то не против всех.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 9 2015, 21:08
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



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

Если есть загрузчик закрытый и защищенный с этим ключем, и есть ваша прошивка сформированная по этому ключу, и вы его никому не сообщили, то какой толк от того что она лежит в РАМе и ее кто-то скачал.

на пальцах
вы решаете что 1 блок прошивке пишете в 5 адрес, 2 блок в 1, 3 в 4, 4 в 2, 5 в 3.
дальше прошивка 1 2 3 4 5 превращается в 5 1 4 2 3 - это вы и распространяете. Это человек и считает из РАМ, но только ваш загрузчик разложит это как надо чтобы оно запустилось. И реверс инженерить это никаких шансов, потому что строго говоря это каша а не прошивка.

А загрузчик закрыт и как он раскладывает вам не понятно. Потому и свою прошивку сделать которая разложиться и заработает крайне трудно...

И что не так?
Напоминаю что есть платная услуга по стравливанию кристалла и добычи из него прошивки, и стоит она не космических денег. Если это действительно кому то надо он обойдет все ваши заборы, а обычный гопник и простого не победит... главное не потратить на защиту больше чем она защищает....
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 9 2015, 21:16
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(Golikov A. @ Jun 10 2015, 00:08) *

Глупости от начала до конца.
Ещё один наивный хочет защититься, переставив местами куски прошивки :-)))))))))

На всякий случай напоминаю::
Тема не о защите/взломе (уверяю, об этом я знаю больше подавляющего числа участников),
(и попрошу банальностей и сентенций на эту тему тут не писать)
Тема только об особенностях защиты в STM32F439. ВСЁ.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 9 2015, 21:24
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



ПРОСТИТЕ прочитал вашу добавку после того как написал.... Как вы просите:
да начудили они пендосы гадские... вы правы, делать нечего...


Дело ваше, вы видать в этом спец
Цитата
Если бы всё это было сложно установить, то люди бы до сих пор не изобрели АЕС, а "шифры" писали бы, заменяя одни буквы другими


эта фраза показывает что вы понимаете шифрование и зачем какой алгоритм развивают, и какие недостатки решают.

хотел дальше написать простенький и наглядный пример, но думаю приберегу бисерwink.gif...



как вам тогда такой вариант. Загрузчик не получив на вход специальной последовательности в течении какого-то времени сам отключает Jtag? Ведь он вам нужен только на случай
Цитата
Может и устроит, но это требует тщательного тестирования бутлодыря.
А то есть хороший шанс запороть всю партию нафиг.


Странно конечно видеть у такого профика сомнения в силах написать бутлоадер без ошибок, но тем не менее.. Пользователю при штатном обновлении он же не нужен, жетаг, а он дыра в вашей обороне, без кода он отключиться и проблема решена, что не так?
Go to the top of the page
 
+Quote Post
mantech
сообщение Jun 10 2015, 05:58
Сообщение #13


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Dr.Alex @ Jun 9 2015, 23:05) *
Может и устроит, но это требует тщательного тестирования бутлодыря.
А то есть хороший шанс запороть всю партию нафиг.


Бутлодырь такой навороченный, что его нельзя нормально протестить? Честно говоря никогда таких проблем не было laughing.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 10 2015, 06:17
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 9 2015, 23:58) *
Если протокол загрузки (и/или ключ АЕС) расколоты, то остаётся только загрузить свой код, который считает загрузчик.

Я же вводил условие, что прошивку нужно обезопасить от подделки, чтоб свой код врагу загрузить возможности не было.
А второе условие, что алгоритм работы загрузчика закрыт.

Если с помощью JTAG можно восстановить алгоритм работы загрузчика и узнать способ подделки прошивки, то JTAG нужно отключить.
Но мне кажется это очень-очень сложным (по шагам с анализом всей RAM), по сравнению с написанием собственной прошивки.

Да, загрузчик можно написать самый простейший. Не понятно в чем сложность и как можно загубить партию?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 10 2015, 06:55
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(mantech @ Jun 10 2015, 08:58) *
Бутлодырь такой навороченный, что его нельзя нормально протестить? Честно говоря никогда таких проблем не было laughing.gif

Ребята, вы немного не зазнавайтесь там :-)))
Помнится, я тут спрашивал, например, кто какой скорости работы по USB HS добился, в ответ молчок.
То есть никто вообще USB HS не использует (а у меня бутлодырь именно через него),
хотя я несколько месяцев с СТМ работаю, а некоторые якобы уже много лет,
зато все уверяют что могут за скромное время (адекватное задаче) всё это абсолютно безглючно написать и протестить :-))))
Ну блажен кто верует :-))))

Цитата(adnega @ Jun 10 2015, 09:17) *
Я же вводил условие, что прошивку нужно обезопасить от подделки, чтоб свой код врагу загрузить возможности не было.
А второе условие, что алгоритм работы загрузчика закрыт.

Как вы не поймёте, что единственная защита это неизвестность ключа АЕС
Именно это и ТОЛЬКО это и можно подразумевать под "прошивку обезопасить от подделки" и "алгоритм работы закрыт",
ну это же банальность, почему это приходится столько раз напоминать?
Иначе ваше "условие" звучит так: у меня самый навороченный замок, главное чтобы никто не догадался что ключ всегда под ковриком.

Цитата(adnega @ Jun 10 2015, 09:17) *
Да, загрузчик можно написать самый простейший. Не понятно в чем сложность и как можно загубить партию?

Вот русским языком же говорю третий раз что загрузчик написан (и не простейший, а нормальный по юсб),
и что вариант необратимо убить жтаг допускается, но НЕ ПРИВЕТСТВУЕТСЯ. Вот и всё.
Go to the top of the page
 
+Quote Post
mantech
сообщение Jun 10 2015, 07:03
Сообщение #16


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Dr.Alex @ Jun 10 2015, 09:55) *
То есть никто вообще USB HS не использует (а у меня бутлодырь именно через него),


Может не в тему, но зачем?? Там прошивка десятки мегабайт или нужно, чтоб прошилось за микросекунду?? Хотя, о чем я, флешка шьется гораздо дольше, чем передаются данные biggrin.gif
Я не зазнаюсь, конечно, но уж бутлодыри с усб, FS, конечно, делал и не один, шифрование использовал свой доработанный алгоритм, работал с усб флешки и сд карты, за полтора года ни одного нарекания на работу бута, контроллер стм 32ф407. Не вижу никаких проблем с тестированием бутлодыря.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 10 2015, 07:08
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Я не очень понимаю смысл темы.

Вам говорят решения, в ответ мы слышим "чушь!", "фигня!", "бред!", "вы не разбираетесь, я вот все знаю". Ну знаете, так в чем проблема, к нам то вы чего пристали?
Пожаловаться на жизнь? Ну жене пожалуйтесь....

многих пользователе STM все устраивает, но они наверное меньше вас разбираются в том что
Цитата
единственная защита это неизвестность ключа АЕС

недоросли, простите....
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 10 2015, 07:20
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(mantech @ Jun 10 2015, 10:03) *
Может не в тему, но зачем??

Верно ли я вас понял что юзеру удобнее взять кустарный датакабель
(который ещё у меня монтажник должен сделать и который юзер ещё чудом не потерял),
открыть корпус, присобачить его в технологический разъём и затем долго искать разъём COM-порта на своём компе?

А прошивка может все 2 метра занимать (код + несколько прошивок для артикса).

Цитата(Golikov A. @ Jun 10 2015, 10:08) *
Вам говорят решения, в ответ мы слышим "чушь!", "фигня!", "бред!", "вы не разбираетесь, я вот все знаю". Ну знаете, так в чем проблема, к нам то вы чего пристали?
Пожаловаться на жизнь? Ну жене пожалуйтесь....
недоросли, простите....

Уникальный человече :-)))))))))))))))))))))))))))
НИКАКИХ РЕШЕНИЙ, тем более у ВАС, я не спрашивал, потому что ВЫ действительно не доросли.
И уж тем более не мог приставать к кому-то в СВОЕЙ теме.

ТЕМА ОБ ОСОБЕННОСТЯХ ШТАТНОЙ ЗАЩИТЫ STM32
Верно ли я понял существующие режимы или в чём-то ошибся.


Кстати, кто какие реально использует?
RDP 1?
RDP 2?
PCROP?
Что-то ещё забыл?
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 10 2015, 07:25
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 10 2015, 09:55) *
Как вы не поймёте, что единственная защита это неизвестность ключа АЕС Именно это и ТОЛЬКО это

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

По теме:
1. В USB жесткие тайминги. Отладка будет сильно затруднена, т.к. интерфейс будет отваливаться на стороне хоста. Добавить условие, что прошивать можно только через 10 минут после "power on reset" и жизнь врага станет адом.
2. В режиме отладки стирание/запись во Flash не работает. Вы даже стирание страницы не сможете произвести. Да, одну страницу враг может и утянет.

При чем тут ST и "чудачества"? Как по-вашему должен был бы работать идеальный Level 1? JTAG для одной команды Mass Erase что ли?

PS. Создается впечатление, что вас на ST насильно пересадили)
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 10 2015, 07:35
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(adnega @ Jun 10 2015, 10:25) *
А для всех ли систем это справедливо? Если есть доступ через интерфейс отладчика, очевидно, что "неизвестности ключа" мало.

В этом случае ключ быстро станет известным, а то и сами данные. Так что всё нормльно.

Цитата(adnega @ Jun 10 2015, 10:25) *
По теме:
...
...
При чем тут ST и "чудачества"? Как по-вашему должен был бы работать идеальный Level 1? JTAG для одной команды Mass Erase что ли?
PS. Создается впечатление, что вас на ST насильно пересадили)

Мне пабарабану, какое создаётся впечатление, но всё это как раз не по теме.
Если не нравится, как я написал заголовок, пожалуйтесь модератору, он переименует.
Тема: какие режимы лично ВЫ используете, и каковы их особенности.
Было бы лучше если бы левел2 был обратим. Ведь делается же массЕрасе при сбросе левела1!
Go to the top of the page
 
+Quote Post
mantech
сообщение Jun 10 2015, 07:42
Сообщение #21


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Dr.Alex @ Jun 10 2015, 10:20) *
Верно ли я вас понял что юзеру удобнее взять кустарный датакабель
(который ещё у меня монтажник должен сделать и который юзер ещё чудом не потерял),
открыть корпус, присобачить его в технологический разъём и затем долго искать разъём COM-порта на своём компе?

А прошивка может все 2 метра занимать (код + несколько прошивок для артикса).


Нет, в моем буте все гораздо удобнее - есть прошивка на флешке или сд карте, чел просто берет вставляет ее в контроллер, жмет кнопку и смотрит, пока мигает светодиод, сек 2-3 как правило, потом просто вытаскивает флеху и вставляет в след. контроллер.

Причем не надо ни кабелей, ни компа с программой для перепрошивки, по-моему очень удобно. cool.gif

ЗЫ. Использую level 2.

Сообщение отредактировал mantech - Jun 10 2015, 07:43
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 10 2015, 07:52
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 10 2015, 10:35) *
Тема: какие режимы лично ВЫ используете, и каковы их особенности.
Было бы лучше если бы левел2 был обратим. Ведь делается же массЕрасе при сбросе левела1!

Насчет названия:
Как правило темы, начинающиеся с "ST учудил", заканчиваются выводом "сам дурак".
Помню единственное исключение, когда была опечатка в документации от ST (с кем не бывает?).

По теме:
Level_1 это обратимый Level_2 в вашей терминологии.

Level_2 это способ сделать так, чтобы враг не смог стереть прошивку в принципе.

Давайте попробуем виртуально повзламывать прошивку в Level_1 через отладчик?
0. Подключаемся по JTAG.
1. По USB приходит команда обновить прошивку.
2. Загрузчик пытается стереть/подготовить сектор и обламывается. Ибо
Цитата
Any attempted program/erase operation sets the PGERR flag of Flash status register (FLASH_SR).

3. Процесс обновления заканчивается с ошибкой.

Разве не так?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 10 2015, 07:59
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(adnega @ Jun 10 2015, 10:52) *
Как правило темы, начинающиеся с "ST учудил", заканчиваются выводом "сам дурак".

Меня это совершенно не волнует. Я слишком большой сноб и слишком уверен в себе, чтобы об этом беспокоиться.

Цитата(adnega @ Jun 10 2015, 10:52) *
Any attempted program/erase operation sets the PGERR flag of Flash status register (FLASH_SR).

Это откуда?
У меня в RM0090 rev7 такого вроде нет.
Да и потом, ведь не обязательно подключаться сначала. Можно и в процессе. И вынуть ключ прямо из регистров блока CRYP :-))))
Go to the top of the page
 
+Quote Post
Aner
сообщение Jun 10 2015, 09:12
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Непонятно, может у вас большой сноб уже в параною перешёл? Ведь если можно подключаться в процессе, то не проще ли сам загрузчик перехватить.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 10 2015, 09:24
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(Aner @ Jun 10 2015, 12:12) *
не проще ли сам загрузчик перехватить.

Что?
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 10 2015, 09:28
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 10 2015, 10:59) *
Это откуда?
У меня в RM0090 rev7 такого вроде нет.
Да и потом, ведь не обязательно подключаться сначала. Можно и в процессе. И вынуть ключ прямо из регистров блока CRYP :-))))

Я брал у stm32f0x2, но в RM0090 rev9 в разделе 3.7.3 Read protection (RDP):
Цитата
When the read protection Level 1 is set:
– No access (read, erase, program) to Flash memory or backup SRAM can be
performed while the debug feature is connected or while booting from RAM or
system memory bootloader. A bus error is generated in case of read request.

Что по сути не отличается.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 10 2015, 09:30
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(adnega @ Jun 10 2015, 12:28) *
Я брал у stm32f0x2, но в RM0090 rev9 в разделе 3.7.3 Read protection (RDP)

Ладно. Но это ничего не меняет.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 10 2015, 09:30
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 10 2015, 10:59) *
Да и потом, ведь не обязательно подключаться сначала. Можно и в процессе. И вынуть ключ прямо из регистров блока CRYP :-))))

Достаточно ноги JTAG/SWD переопределить как GPIO, чтоб подключалось только через "under reset". Разве нет?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 10 2015, 09:36
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(adnega @ Jun 10 2015, 12:30) *
Достаточно ноги JTAG/SWD переопределить как GPIO, чтоб подключалось только через "under reset". Разве нет?

Возможно, не знаю. А да? :-)))))))
Но всё равно просматриваются варианты изучить протокол юсб (соснифить работу загрузочного софта), написать свой муляж софта, и затем покопаться жтагом во всех доступных местах (недоступен-то только флеш) чтобы заставить бутлодырь сделать ошибку.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 10 2015, 09:44
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Кста, посмотрел в модуль CRYP - регистр с ключами "write only", что логично. Т.е. вычитать ключи не получится.
Можно расшифрованную порцию хранить в батареечной SRAM, она тоже защищена от доступа в режиме отладки.
Go to the top of the page
 
+Quote Post
Aner
сообщение Jun 10 2015, 11:18
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



QUOTE (adnega @ Jun 10 2015, 13:44) *
Кста, посмотрел в модуль CRYP - регистр с ключами "write only", что логично. Т.е. вычитать ключи не получится.
Можно расшифрованную порцию хранить в батареечной SRAM, она тоже защищена от доступа в режиме отладки.

батареечный SRAM как то старо при FRAMe. Может быть и внешняя флешка с криптованной прогой, и абдейт удобно делать, при большём объеме кода. Пусть снифферят скока влезет.
Go to the top of the page
 
+Quote Post
sadat
сообщение Jun 11 2015, 16:24
Сообщение #32


Частый гость
**

Группа: Свой
Сообщений: 117
Регистрация: 6-07-05
Из: Белгород
Пользователь №: 6 575



Цитата(Dr.Alex @ Jun 10 2015, 09:55) *
Ребята, вы немного не зазнавайтесь там :-)))
Помнится, я тут спрашивал, например, кто какой скорости работы по USB HS добился, в ответ молчок.
То есть никто вообще USB HS не использует (а у меня бутлодырь именно через него),
и что вариант необратимо убить жтаг допускается, но НЕ ПРИВЕТСТВУЕТСЯ. Вот и всё.

Цитата
Или у STM32F207 (я лично получал для Mass-Storage порядка 7-8 МБайт/Сек.).
kovigor
Цитата
у меня получалось более 10мб/с в комплекте с тормозной сд-картой. на ulpi3300 и f215.
MBR
Скорость High Speed USB на STM32F2/F4
ну и далее поиском по форуме на USB3300.
Наверное, мало кто вопрос увидел.

По теме: со 2 уровня уж никак нельзя проц снять, совсем-совсем?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 11 2015, 16:56
Сообщение #33


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(sadat @ Jun 11 2015, 19:24) *
совсем-совсем?

совсем-совсем! :-)))
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 12 2015, 05:11
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Dr.Alex @ Jun 10 2015, 12:36) *
Возможно, не знаю. А да? :-)))))))

Пруф.
Go to the top of the page
 
+Quote Post
pavel-pervomaysk
сообщение Jun 12 2015, 05:34
Сообщение #35


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716



Если прибор очень востребован, дорогой, актуальный, его обязательно слижут.
Хотите защититься от копирования - ставьте адекватную цену, проблем не будет.
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Jun 12 2015, 09:04
Сообщение #36


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Я использую ROP=1 для защиты бутлоадера, обновление через USB (USB-flash). При включенном ROP=1 нельзя посмотреть содержимое RAM, FLASH или регистров, нельзя запустить код в RAM, можно только изменить уровень защиты на нулевой (ROP=0), но это приведет к автоматическому стиранию flash. Поэтому не вижу способа взлома через JTAG/SWD. ROP=1 вполне достаточно для защиты бутлоадера, а защита самой программки - это уж дело бутлоадера (шифрование, цифровая подпись).
Если я не прав, то расскажите хоть приблизительно технологию, как можно "утянуть" бутлоадер или расшифровать прошивку.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 12 2015, 09:53
Сообщение #37


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(bugdesigner @ Jun 12 2015, 12:04) *
При включенном ROP=1 нельзя посмотреть содержимое RAM, FLASH или регистров

Вы ничего не напутали?
Я знаю не ROP а RDP, и при RDP=1 как раз есть доступ к РАМ (кроме бэкап) и регистрам.
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Jun 12 2015, 11:49
Сообщение #38


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Цитата(Dr.Alex @ Jun 12 2015, 12:53) *
Я знаю не ROP а RDP, и при RDP=1 как раз есть доступ к РАМ (кроме бэкап) и регистрам.

ROP/RDP - это одно и то же (read out protection). В режиме 1 можно запустить программу из RAM, но доступ к flash из этой программы невозможен. Для полного спокойствия нужно сразу после запуска перевести линии SWD/JTAG в режим IO и доступ будет полностью отрезан.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 12 2015, 11:54
Сообщение #39


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Хочу уточнить вопрос. Задам защиту чтения Уровень 1. Загрузчик держу в секторе 0. Из него загружаю и прошиваюсь зашифрованной прошивкой.
Если я установлю защиту записи для сектора 0 nWRP[0], то при попытке записать в него выскочит ошибка WRPERR. Мне и не надо в него записывать. А что будет, если некто попытается изменить защиту чтения на Уровень 0? Должна стереться вся флэш-память. В том числе и сектор 0? И ошибка от стирания защищенного сектора уже не сработает?

Какой выигрыш я получу, защищая сектор 0 от записи? sm.gif
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Jun 12 2015, 12:11
Сообщение #40


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Цитата(ViKo @ Jun 12 2015, 14:54) *
Должна стереться вся флэш-память. В том числе и сектор 0? И ошибка от стирания защищенного сектора уже не сработает?
Какой выигрыш я получу, защищая сектор 0 от записи? sm.gif

Если защитить сектор от записи, но не установить read out protection = 1, этот сектор можно прочитать через SWD/JTAG.
Если установить read out protection = 1, то, независимо от защиты на запись, прочитать ничего нельзя.
Если установлен read out protection = 1, и установить установить read out protection = 0 (отключить звщиту), то все содержимое flash будет стерто, не взирая на защиту от записи.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 12 2015, 12:15
Сообщение #41


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(bugdesigner @ Jun 12 2015, 14:49) *
В режиме 1 можно запустить программу из RAM, но доступ к flash из этой программы невозможен.

Достаточно того, что есть доступ к РАМ и регистрам.

Цитата(bugdesigner @ Jun 12 2015, 14:49) *
Для полного спокойствия нужно сразу после запуска перевести линии SWD/JTAG в режим IO и доступ будет полностью отрезан.

Никакого полного спокойствия не предвидится.
От ресета до того, как вы отключите жтаг, пройдёт много тактов процессора, достаточно для того чтобы автоматическая программа (а не юзер, шлёпающий по кнопкам IARa) успела подключиться и помешать вам отключить жтаг.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 12 2015, 12:27
Сообщение #42


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(bugdesigner @ Jun 12 2015, 15:11) *
Если...

Интересует комбинация, которую я задал. rolleyes.gif 0 - включает защиту от записи. Сбрасываем уровень защиты чтения на 0.
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Jun 12 2015, 14:34
Сообщение #43


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Цитата(ViKo @ Jun 12 2015, 15:27) *
Сбрасываем уровень защиты чтения на 0.

Сотрутся все секторы, даже если они защищены от записи. Те защита от записи в этой ситуации игнорируется.

Цитата(Dr.Alex @ Jun 12 2015, 15:15) *
От ресета до того, как вы отключите жтаг, пройдёт много тактов процессора, достаточно для того чтобы автоматическая программа (а не юзер, шлёпающий по кнопкам IARa) успела подключиться и помешать вам отключить жтаг.

Ну и что в результате? Доступа к содержимому флеш нет. Какую полезную информацию можно получить от содержимого памяти и регистров на момент инициализации GPIO?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 12 2015, 19:27
Сообщение #44


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(bugdesigner @ Jun 12 2015, 17:34) *
Ну и что в результате? Доступа к содержимому флеш нет. Какую полезную информацию можно получить от содержимого памяти и регистров на момент инициализации GPIO?

Вы кажется пропустили всю тему.
Во-первых есть возможность не дать записать в регистры то что не нужно, то есть не дать отключить жтаг.
А за тем вынуть из РАМ либо ключ аеса либо декодированную прошивку.
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Jun 13 2015, 04:48
Сообщение #45


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Цитата(Dr.Alex @ Jun 12 2015, 22:27) *
Во-первых есть возможность не дать записать в регистры то что не нужно, то есть не дать отключить жтаг.
А за тем вынуть из РАМ либо ключ аеса либо декодированную прошивку.

Допустим, что мы успели приаттачиться к DP до момента, пока он не был отключен. Теперь нам нужно пропустить момент отключения DP и запустить ядро процессора. Что у нас получится - HardFault, потому, что доступ к flash при подключенном DP заблокирован. Можете провести экспериментик - напишите маленькую программку, чтоб гоняла какой-нибудь цикл, поставьте RDP=1 и попробуйте подключиться к SWD/JTAG дебаггером. А потом попробуйте запустить свой код из flash.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 13 2015, 09:39
Сообщение #46


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(bugdesigner @ Jun 13 2015, 07:48) *
Допустим, что мы успели приаттачиться к DP до момента, пока он не был отключен. Теперь нам нужно пропустить момент отключения DP и запустить ядро процессора. Что у нас получится - HardFault, потому, что доступ к flash при подключенном DP заблокирован. Можете провести экспериментик - напишите маленькую программку, чтоб гоняла какой-нибудь цикл, поставьте RDP=1 и попробуйте подключиться к SWD/JTAG дебаггером. А потом попробуйте запустить свой код из flash.

Не надо запускать свой код из флеш.
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Jun 13 2015, 12:01
Сообщение #47


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Цитата(Dr.Alex @ Jun 13 2015, 12:39) *
Не надо запускать свой код из флеш.

А что тогда делать? Предложите хоть какой-нибудь алгоритм действий. Запустить свой код из ОЗУ- не получите доступ к флэш. В ОЗУ ничего интересного нет. Что дальше делать?

Сообщение отредактировал bugdesigner - Jun 13 2015, 12:02
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 13 2015, 12:05
Сообщение #48


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Надоело повторять каждому одно и то же. Для начала помешать проге отключить жтаг (есть доступ к регистрам), а затем найти в раме или регистрах либо ключи аеса, либо расшифрованные куски прошивки.
Читайте тему с начала (на все подобные вопросы уже отвечено), либо не пишите здесь вовсе.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 13 2015, 13:54
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



А через жтаг можно узнать текущую выполняемую команду, если она выполняется из флешь и та защищена от чтения? Разве есть доступ к конвейерам и прочим патрохам откуда можно узнать код команды?

Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 13 2015, 14:04
Сообщение #50


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Варианты навскидку:
1) прописывать PC, пытаясь перепрыгнуть нежелательный участок
2) останавливать проц через каждые несколько тактов и перезаписывать "опасные" регистры, не давая проге записать туда то что ей нужно
Go to the top of the page
 
+Quote Post
bugdesigner
сообщение Jun 13 2015, 14:23
Сообщение #51


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 12-06-15
Из: Земля
Пользователь №: 87 133



Даже если не отключать дебаг порт, можно и нужно написать бутлоадер так, чтоб по содержимомоу памяти и регистров нельзя было ничего утянуть.
1. Ключи AES разместить в flash, и заносить их сразу в регистры CRYP_Kxx (прочитать их нельзя - доступ Write Only)
2. Запихивать блочками по 4 байта прошивку из внешнего носителя (USB, SD) и вычитывая сразу занписывать во внутреннюю flash
В результате, в любой момент времени, в памяти нет ни кусочков прошивки, ни ключей.


Цитата(Dr.Alex @ Jun 13 2015, 17:04) *
Варианты навскидку:
1) прописывать PC, пытаясь перепрыгнуть нежелательный участок
2) останавливать проц через каждые несколько тактов и перезаписывать "опасные" регистры, не давая проге записать туда то что ей нужно

Это в принципе невозможно. Как только Вы подключитесь к дебаг порту (DP) - сразу потеряете доступ к flash. Вы можете изменить PC, но не сможете запустить процессор - получите ошибку что-то типа "невозможно получить инструкцию". Таким образом Вы не можете ни продолжить, не перезапустить выполнение программы из flash. Единственное что можно - это отключиться и ресетнуть МК.
Пошаговое выполнение, естественно, невозможно.
Все это было проверено мной несколько лет назад на железе, можете запустить дебаггер и попробовать. Если найдете "лазейку" - снимаю шляпу.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 13 2015, 15:51
Сообщение #52


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
то в принципе невозможно. Как только Вы подключитесь к дебаг порту (DP) - сразу потеряете доступ к flash

Ага спасибо, примерно так я себе это и видел.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 13 2015, 19:11
Сообщение #53


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(bugdesigner @ Jun 13 2015, 17:23) *
Это в принципе невозможно. Как только Вы подключитесь к дебаг порту (DP) - сразу потеряете доступ к flash. Вы можете изменить PC, но не сможете запустить процессор - получите ошибку что-то типа "невозможно получить инструкцию".

Вы уже достали со своей флешью. Она нафиг мне не нужна.
Вы судите с колокольни юзера, давящего на кнопочки отладчика в иаре или кайле.
Но о ВСЕХ возможностях и ВСЕХ ограничениях интерфейса это ничего не говорит.
Go to the top of the page
 
+Quote Post
Timmy
сообщение Jun 14 2015, 04:08
Сообщение #54


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Dr.Alex @ Jun 13 2015, 22:11) *
Вы уже достали со своей флешью. Она нафиг мне не нужна.
Вы судите с колокольни юзера, давящего на кнопочки отладчика в иаре или кайле.
Но о ВСЕХ возможностях и ВСЕХ ограничениях интерфейса это ничего не говорит.

Флэш обязательно нужна. В те моменты времени, когда дебаг порт доступен для подключения, ключ шифрования лежит только во флэш, и вынуть его оттуда после подключения к дебаг порту не получится никак(чисто аппаратные способы взлома не учитываемsm.gif). И, наоборот, когда ключ шифрования теоретически доступен для вытаскивания отладчиком(например, при переписывании из флэша в криптомодуль он светится в регистрах процессора), дебаг порт уже недоступен.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jun 14 2015, 06:49
Сообщение #55


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(adnega @ Jun 10 2015, 10:52) *
Давайте попробуем виртуально повзламывать прошивку в Level_1 через отладчик?
0. Подключаемся по JTAG.
1. По USB приходит команда обновить прошивку.


Гм. Когда вы подключаетесь через JTAG к залоченному процу, код из FLASH исполняться не будет. Вы можете подключиться житагом и загрузить свой собственный код из ОЗУ к примеру. Однако этот код не будет иметь доступа к FLASH

Цитата
No access (read, erase, program) to Flash memory or backup SRAM can be
performed while the debug feature is connected or while booting from RAM or
system memory bootloader. A bus error is generated in case of read request.


Цитата(Dr.Alex @ Jun 10 2015, 10:59) *
Да и потом, ведь не обязательно подключаться сначала. Можно и в процессе. И вынуть ключ прямо из регистров блока CRYP :-))))


Когда вы подключите житаг к работающему процу, произойдет сброс. Регистры блока крип при этом обнулятся. Ваш загрузчик из FLASH не сможет быть запущен при подключенном житаге и Level1

Т.е. максимум что вы получите - это содержимое ОЗУ на момент сброса.

UPD Тут я похоже наврал, сброса не будет. Но регистры блока cryp - write-only. Кроме того, вам уже написали выше, что можно отключить ножки отладки - таким образом во время работы программы вы к процу подключиться не сможете - только после сброса.


Цитата(Dr.Alex @ Jun 10 2015, 12:36) *
Но всё равно просматриваются варианты изучить протокол юсб (соснифить работу загрузочного софта), написать свой муляж софта, и затем покопаться жтагом во всех доступных местах (недоступен-то только флеш) чтобы заставить бутлодырь сделать ошибку.


И как вы предлагаете защититься от этого на уровне проца? Опять же, вам уже писали, за не слишком космическую денежку можно вычитать из проца вашу программу вместе со всеми ключами. Подозреваю это будет проще и дешевле предлагаемого вами
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Jun 14 2015, 10:15
Сообщение #56


Профессионал
*****

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Неужели не понятно, что если бы был 100-процентный способ отключить жтаг при левеле1, то не требовался бы левел2?

Поскольку каждый вновь зашедший начинает перечислять все глупости заново (как и всегда),
и совершенно не хочет думать головой, приходится закрыть тему.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 3rd July 2025 - 04:26
Рейтинг@Mail.ru


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