motofan logo
24 страниц V « < 21 22 23 24 >
Причина закрытия (Orakul 10-07-2007):
       
> 

Раскрываем подпись прошивки, поиск простых сомножителей ключа.

FEDR
сообщение 5.7.2005, 8:01


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 17.6.2005
Пользователь №: 44 365
Модель телефона: E398

Рейтинг: 0



Цитата(dimichxp @ Вторник, 5 Июля 2005, 13:59)
Ага, будем экспортровать символы mpz_ из другой библиотеки, гыгы
*


Из оптимизированной для конкретной машины.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
rookie7799
сообщение 5.7.2005, 19:32


Новичок
*

Группа: Пользователи
Сообщений: 3
Регистрация: 1.7.2005
Пользователь №: 45 229
Модель телефона: razr v3

Рейтинг: 0



Цитата(dion @ Пятница, 1 Июля 2005, 16:56)
rookie7799, пофиксено.
*



Мужики, а чево http://moto.inhex.net/stat.txt не работает?
huh.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Voxa
сообщение 5.7.2005, 19:48


(M)otoVoxa
*****

Группа: Почётные мотофаны
Сообщений: 694
Регистрация: 13.11.2004
Из: г.Ставрополь
Пользователь №: 20 908
Модель телефона: Apple iPhone 6s 32Gb

Рейтинг: 466



Цитата(rookie7799 @ Вторник, 5 Июля 2005, 19:32)
Мужики, а чево http://moto.inhex.net/stat.txt не работает?
huh.gif
*



Нет, теперь сдесь http://moto.inhex.net/index.rsa?show=stats...y=packets&ok=Ok
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Liquid
сообщение 6.7.2005, 12:06


Новичок
*

Группа: Пользователи
Сообщений: 24
Регистрация: 4.10.2004
Пользователь №: 15 230
Модель телефона: C380
Прошивка: MotoKDE_R365_D3.08R

Рейтинг: 0



блин, я чего-то не понимаю эту затею? почти всё тут облазил, а ясности полной не нашел... Мы хотим хорошие прошивы? Да! но неужто надо в лобовую brute force ломать какую-то подпись? Может, лучше разобраться, как это всё (заливка прошивы в тело) происходит на физическом уровне, найти слабое место и, грубо говоря, обвесить проц тела проводами да и получить всё что нам надо без всяких взломов стойких ключей?
Короче, на каком этапе заливки прошивы возникает этот ключ? он физически зашит в каждый тел или проверяется программно?
Мне кажется, что взлом прошивы - это больше схемотехнический вопрос, чем программный.
ЗЫ. Умный в гору не пойдет, умный гору обойдет...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
alo33
сообщение 6.7.2005, 12:13


Мастер
****

Группа: Пользователи
Сообщений: 233
Регистрация: 10.12.2004
Из: Ульяновск
Пользователь №: 26 053
Модель телефона: Defy+
Прошивка: 4.5.1-134_DFP-231

Рейтинг: 51



Цитата(Liquid @ Среда, 6 Июля 2005, 16:06)
он физически зашит в каждый тел или проверяется программно?
*


Физически
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
dvMax
сообщение 6.7.2005, 17:41


VIP
******

Группа: Почётные мотофаны
Сообщений: 1 053
Регистрация: 29.6.2004
Пользователь №: 7 003
Модель телефона: .

Рейтинг: 409.5



Сегодня снимал юзер код с тел. Sony Er. T610, в логе с программой встретил интересные строки (пишу на русском)
Цитата
"Проверка, RSA активна ?"
"RSA активна", "Обходим RSA"
"Загружаем загрузчик в телефон"
......
Наводит на мысль, у сони 610-й так же подписана прошивка RSA подписью....
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
BeZnOg
сообщение 6.7.2005, 19:47


Мастер
****

Группа: Пользователи
Сообщений: 230
Регистрация: 24.3.2005
Из: Москва
Пользователь №: 39 439
Модель телефона: Nokia 6233
Прошивка: 05.43

Рейтинг: 55



dvMax,
Инетерсно там 1024 или 512 ключ?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Archy
сообщение 7.7.2005, 9:06


Ветеран
*****

Группа: Почётные мотофаны
Сообщений: 447
Регистрация: 10.4.2005
Из: Киев
Пользователь №: 40 468
Модель телефона: E1-L6-L7e-U9, iPhone
Прошивка: M-S1.5RC3 L7e_01.0AR

Рейтинг: 516



Че-т я недопонял, надо апдейтить клиента? Не хочет слать просчитанный и не хочет брать новый, говорит, обновите...
Прикрепите плз сверху (чтобы на каждой страничке был) мессагу с последней версией и редактируя это письмо обновляйте, проще намного будет, да и людей поболее - читать 60 страниц мало у кого время есть...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Паук
сообщение 7.7.2005, 9:35


Open Mind
*****

Группа: Почётные мотофаны
Сообщений: 452
Регистрация: 17.6.2005
Из: Полтава, Украина
Пользователь №: 44 370
Модель телефона: (M)
Прошивка: разные

Рейтинг: 530



Цитата(Liquid @ Среда, 6 Июля 2005, 14:06)
блин, я чего-то не понимаю эту затею? почти всё тут облазил, а ясности полной не нашел... Мы хотим хорошие прошивы? Да! но неужто надо в лобовую brute force ломать какую-то подпись? Может, лучше разобраться, как это всё (заливка прошивы в тело) происходит на физическом уровне, найти слабое место и, грубо говоря, обвесить проц тела проводами да и получить всё что нам надо без всяких взломов стойких ключей?
Короче, на каком этапе заливки прошивы возникает этот ключ? он физически зашит в каждый тел или проверяется программно?
Мне кажется, что взлом прошивы - это больше схемотехнический вопрос, чем программный.
ЗЫ. Умный в гору не пойдет, умный гору обойдет...
*


А вот это уже интересная идея. Ломали ведь и плейстейшн, и тот же гейтсовый X-Box мод-чипами, вытворяя потом с ними что угодно? А ведь у х-бокс биос тоже шифрованный и левые приложения запускать не давал (приставка продавалась по цене ниже себестоимости, а на играх это все возмещалось), пока ему мод-чип не прибили.
Кто тут у нас с паяльниками дружет, обмозгуйте...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
wRAR
сообщение 7.7.2005, 9:41


Ветеран
*****

Группа: Почётные мотофаны
Сообщений: 367
Регистрация: 19.2.2005
Из: Екатеринбург
Пользователь №: 37 277
Модель телефона: Galaxy S4

Рейтинг: 97



Цитата(Паук @ Четверг, 7 Июля 2005, 15:35)
Кто тут у нас с паяльниками дружет, обмозгуйте..
*


Проблема в том, что хардварно надо моддить каждый конкретный телефон. И не каждый владелец на такое способен.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Archy
сообщение 7.7.2005, 12:21


Ветеран
*****

Группа: Почётные мотофаны
Сообщений: 447
Регистрация: 10.4.2005
Из: Киев
Пользователь №: 40 468
Модель телефона: E1-L6-L7e-U9, iPhone
Прошивка: M-S1.5RC3 L7e_01.0AR

Рейтинг: 516



Это как раз понятно, но вполне реально договорится в региональных центрах с сервис-центрами (не мотороловскими оригинальными, конечно).
Я, например, гарантированно дам вам наводку в Киеве на ребят, кот с удовольствием будут народу паять за вполне реальные деньги, если им толком объяснить, что и куда паять...

Как идея?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Liquid
сообщение 7.7.2005, 21:44


Новичок
*

Группа: Пользователи
Сообщений: 24
Регистрация: 4.10.2004
Пользователь №: 15 230
Модель телефона: C380
Прошивка: MotoKDE_R365_D3.08R

Рейтинг: 0



В общем, я представляю себе так, что в ППЗУ тела есть бут-лоадер, ключ и еще хрен знает чё, неважно. Бут-лоадер обеспечивает старт системы и возможность перепрошивки Flash. При этом, при включении возможности прошивки он считывает ключ и проверяет им прошиву, кот. мы хотим залить. Не подходит - до свидания.
То есть, надо:
1) разобрать тело и найти дата-шиты на микрухи
2) найти считыватель для того типа ППЗУ, кот. в теле
3) считать ППЗУ (возможно, выпаяв его при этом)
4) искать ключ во всём том барахле, что получим.
Может, что-то не так? поправьте меня.

ЗЫ. Не стоит оказывать финансовую помощь гр-ну Чубайсу, загружая бесполезной работой тысячи (десятки тысяч) мощных компов. Он и так неплохо живёт. Подумаем лучше о себе!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Exoundeeq
сообщение 8.7.2005, 10:40


Новичок
*

Группа: Пользователи
Сообщений: 19
Регистрация: 26.11.2004
Пользователь №: 23 178
Модель телефона: c380
Прошивка: 2.31R

Рейтинг: 0



Цитата(wRAR @ Четверг, 7 Июля 2005, 9:41)
И не каждый владелец на такое способен.
*



Хех. Дело в том, что если мотомоддеру нужно будет что-то припаять, то он научится делать это. Если не научится, значит ему это не нужно. Всё просто.

Кстати, таким макаром можно сократить количество долбоё@ов в стране. ;)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
KQ_44
сообщение 8.7.2005, 11:46


Опытный
***

Группа: Пользователи
Сообщений: 115
Регистрация: 2.3.2005
Из: Киев
Пользователь №: 37 969
Модель телефона: C650=>E1

Рейтинг: 10.5



2Liquid&Co:
>>1) разобрать тело и найти дата-шиты на микрухи
Тело разбирали в C650 DSP56621 - даташиты по Нептунам и не только
Моторола фиг даст!!! Ребята уже вроде просили, а искал персонально и очень долго
- кроме общего описания на фрискале.ком больше НИЧЕГО.
>>2) найти считыватель для того типа ППЗУ, кот. в теле
ППЗУ находится в микросхеме ЦПУ + там еще много чего.
Vilko наваял прогу и телефон сам спокойненько читает содержимое ППЗУ.
Проверено - сам таким способом вытягивал Boot-загрузчик.
>>3) считать ППЗУ (возможно, выпаяв его при этом)
Тяжело выпаять что-то из большого чипсета.
Если интересует - на сайте Vilko можно взять дамп.
>>4) искать ключ во всём том барахле, что получим.
Без проблем - открытый ключ RSA там лежит,
НО потому RSA и называется НЕСИММЕНРИЧНЫМ что там 2 ключа:
открытый и приватный.
Приватный есть у ограниченного кол-ва лиц, имеющих отношение
к компании Моторола!!! Но для работы телефона он НЕ НУЖЕН.

Прошивка ППЗУ не зашифрована - открытый код.
Она просто проверяет RSA-подпись прошивки флеш-ПЗУ.
Для понимания посмотрите любое описание RSA-алгоритма
- там не сложно, можно посмотреть только ту часть,
где описан принцип подписи некоего текста.

Если паять - то ВЕСЬ Нептун(ЦПУ). А вот залит-ли в его ППЗУ код или
это можно и нужно делать после пайки: звыняйте - не знаю.
Если будете паять и сможете залить туда свое - можно показать, что
надо подправить.
Желаю успехов.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
puper
сообщение 8.7.2005, 14:47


MotoSHXCoder
****

Группа: Разработчики
Сообщений: 253
Регистрация: 16.3.2005
Из: Брест
Пользователь №: 38 940
Модель телефона: nokia :)

Рейтинг: 153.5



Мож от жары глупость пишу, но ...
Разговаривал с неким доселе незнакомым мотофановцем Arkasha18 и вот он утверждает, что у него есть RAMDLD от V3 (подписанный РСА), и есть тел В500, в которм этот загрузчик не подписан. Так вот, когда он заменил неподписанный загрузчик подписанным, тел перестал принимать неподписанные кодовые группы (тот же загрузчик обратно не ставился, на экране бесконечно надпись SW upgrade in progress...). И даже обратно неподписанный нельзя было поставить, кроме как поковырявшись внутрях. Я не доконца понимаю эту тему, но может ли тот подписанный RAMDLD проверять подпись, т.е. может есть кроме хардверного и софтверный вариант. Тогда его надо ломануть и глянуть, с чем он там сравнивает.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
HOLMS
сообщение 8.7.2005, 16:03


Ветеран
*****

Группа: Пользователи
Сообщений: 588
Регистрация: 12.4.2005
Пользователь №: 40 589
Модель телефона: E398, LG GT540

Рейтинг: 142



"Проверка, RSA активна ?"
"RSA активна", "Обходим RSA"
"Загружаем загрузчик в телефон"


dvMax,

Хм...
Истина где-то рядом...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
HOLMS
сообщение 8.7.2005, 18:01


Ветеран
*****

Группа: Пользователи
Сообщений: 588
Регистрация: 12.4.2005
Пользователь №: 40 589
Модель телефона: E398, LG GT540

Рейтинг: 142



В моём понимании:алгоритм RSA таков:
Что есть некий текст (незашифрованная подпись)-каждая буква имеет десятичное представление
от 1 до 255,например 35,62,78,112,2,231 и т.д.
Если каждое число умножить на 1024битное число (ключ)-получим абракадабру (зашифрованную подпись)

Загрузчик телефона,при запросе на прошивание,проверяет зашифрованную подпись,
расшифровывает её 1024битным ключём,который в ППЗУ и уже полученую подпись сравнивает с оригиналом!
Если результат сравнения положительный,то новая прошивка преспокойно запишется в тел...
Вопрос: где этот оригинал подписи находится?...(в ЦПУ что-ли)
Если так,то ковырять надо загрузчик!


P.S.Возможно я здесь написал полный бред!
поправте меня,пока не поздно!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
hobbit19
сообщение 9.7.2005, 9:15


квант истории
******

Группа: Пользователи
Сообщений: 1 043
Регистрация: 1.4.2005
Из: Рязань
Пользователь №: 39 980
Модель телефона: (M)oTorola
Прошивка: testing/unstable
Победитель конкурса 2008

Рейтинг: 739.5



помню как народ давно на форуме рылись в прошивки с350
пытаясь впихнуть в нее яву.вот бы не плохо и их привлеч они не плохо шарили
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
wRAR
сообщение 9.7.2005, 13:08


Ветеран
*****

Группа: Почётные мотофаны
Сообщений: 367
Регистрация: 19.2.2005
Из: Екатеринбург
Пользователь №: 37 277
Модель телефона: Galaxy S4

Рейтинг: 97



HOLMS, цифровые подписи по-другому работают.
При воздействии на сообщение (хэш прошивки) закрытым ключом (находится у людей, делающих прошивку) получается подпись. Загрузчик может посчитать хэш, затем расшифровать подпись открытым ключом (зашит) и сравнить оба хэша. Вроде так.
Открытый ключ у нас есть, надо получить закрытый, чтобы можно было им подписать переделанную прошивку.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
hobbit19
сообщение 9.7.2005, 16:24


квант истории
******

Группа: Пользователи
Сообщений: 1 043
Регистрация: 1.4.2005
Из: Рязань
Пользователь №: 39 980
Модель телефона: (M)oTorola
Прошивка: testing/unstable
Победитель конкурса 2008

Рейтинг: 739.5



о вообще взлом физически возможен??
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
HOLMS
сообщение 9.7.2005, 16:42


Ветеран
*****

Группа: Пользователи
Сообщений: 588
Регистрация: 12.4.2005
Пользователь №: 40 589
Модель телефона: E398, LG GT540

Рейтинг: 142



Цитата(wRAR @ Суббота, 9 Июля 2005, 19:08)
Загрузчик может посчитать хэш, затем расшифровать подпись открытым ключом (зашит) и сравнить оба хэша. Вроде так.

*


А каким образом загрузчик подсчитывает этот хэш?
Может определить алгоритм...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
warmwood
сообщение 9.7.2005, 17:42


Новичок
*

Группа: Пользователи
Сообщений: 11
Регистрация: 10.2.2005
Пользователь №: 36 705
Модель телефона: C650
Прошивка: R365_G_0B.D3.06R

Рейтинг: 0



А вообще грустно все. Судя по этому http://www.compulenta.ru/2003/1/28/37101/ добровольцев нам надо очень много :(
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
wRAR
сообщение 9.7.2005, 19:10


Ветеран
*****

Группа: Почётные мотофаны
Сообщений: 367
Регистрация: 19.2.2005
Из: Екатеринбург
Пользователь №: 37 277
Модель телефона: Galaxy S4

Рейтинг: 97



Цитата(HOLMS @ Суббота, 9 Июля 2005, 22:42)
А каким образом загрузчик подсчитывает этот хэш?
*


Не знаю подробностей реализации. Возможно, про это писалось в исходной длиннющей теме.
Обычно используется MD5.
Цитата(HOLMS @ Суббота, 9 Июля 2005, 22:42)
Может определить алгоритм...
*


Смысл?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
HOLMS
сообщение 10.7.2005, 7:12


Ветеран
*****

Группа: Пользователи
Сообщений: 588
Регистрация: 12.4.2005
Пользователь №: 40 589
Модель телефона: E398, LG GT540

Рейтинг: 142



Есть такая прога RainbowCrack
Она взламывает хэши,
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
lwc
сообщение 10.7.2005, 9:02


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 10.7.2005
Пользователь №: 45 805
Модель телефона: my name is dimichxp
Прошивка: and i have e398

Рейтинг: 0



HOLMS,

Алгоритм хеширования - SHA1.
RainbowCrack инвертирует хеш [off]неважно как[/off], а нам нужно найти коллизию хеша.
Пользователю запрещено создавать сообщения
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
hobbit19
сообщение 10.7.2005, 11:23


квант истории
******

Группа: Пользователи
Сообщений: 1 043
Регистрация: 1.4.2005
Из: Рязань
Пользователь №: 39 980
Модель телефона: (M)oTorola
Прошивка: testing/unstable
Победитель конкурса 2008

Рейтинг: 739.5



еще в поредке бреда подпись прошивки зависит от исходного размера
если внутри прошивки менять код а потом добивать ее левой инфой для соответствия размеру???
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
HOLMS
сообщение 10.7.2005, 11:57


Ветеран
*****

Группа: Пользователи
Сообщений: 588
Регистрация: 12.4.2005
Пользователь №: 40 589
Модель телефона: E398, LG GT540

Рейтинг: 142



hobbit19,
Значит что получается: если в прошивке поменять хотя-бы один байт,
то и подпись нужно будет менять!
Но как загрузчик определяет соответствие подписи и кода?
Опять-же все упирается в алгоритм этого bootloadera...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
lwc
сообщение 10.7.2005, 12:09


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 10.7.2005
Пользователь №: 45 805
Модель телефона: my name is dimichxp
Прошивка: and i have e398

Рейтинг: 0



HOLMS,

Все просто. При каждом изменении прошивки (пусть даже на 1 бит) меняется ее хеш. Этот хеш подписывается RSA ключом и полученная подпись заливается в тело. Тело считает при каждой загрузке хеш прошивки. Затем проверяется, что подписаный хеш равен хешу прошивки.
Пользователю запрещено создавать сообщения
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
JuriCh
сообщение 10.7.2005, 12:33


Новичок
*

Группа: Пользователи
Сообщений: 15
Регистрация: 3.7.2005
Пользователь №: 45 301
Модель телефона: Motorola V620

Рейтинг: 0



Извините за шутку. Фирма Motorola с вас прикалываеться. А тому кто всетаки сделает и решит эту проблему - памятник как Ленину поставят и Нобелевскую премию вручат rolleyes.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
HOLMS
сообщение 10.7.2005, 13:10


Ветеран
*****

Группа: Пользователи
Сообщений: 588
Регистрация: 12.4.2005
Пользователь №: 40 589
Модель телефона: E398, LG GT540

Рейтинг: 142



А как обстоят дела по поводу подбора SHA хеша?
Вроде как последняя надежда если не ошибаюсь!?






P.S. не принимайте в штыки мои идиотские посты,я пишу от имени всех, кто в танке!
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
lwc
сообщение 10.7.2005, 13:36


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 10.7.2005
Пользователь №: 45 805
Модель телефона: my name is dimichxp
Прошивка: and i have e398

Рейтинг: 0



HOLMS,

Найти коллизию SHA-1 хеша не такое уж и простое дело...

[off]К примеру скажу, что уже получили коллизию MD5 хеша причем оба документа были осмысленнымы (текст в формате ps) и различными.[/off]
Пользователю запрещено создавать сообщения
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
hobbit19
сообщение 10.7.2005, 15:35


квант истории
******

Группа: Пользователи
Сообщений: 1 043
Регистрация: 1.4.2005
Из: Рязань
Пользователь №: 39 980
Модель телефона: (M)oTorola
Прошивка: testing/unstable
Победитель конкурса 2008

Рейтинг: 739.5



а если в bootloaderе покапаться???
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
lwc
сообщение 10.7.2005, 15:48


Новичок
*

Группа: Пользователи
Сообщений: 5
Регистрация: 10.7.2005
Пользователь №: 45 805
Модель телефона: my name is dimichxp
Прошивка: and i have e398

Рейтинг: 0



hobbit19,

И что ты там будешь искать?
Пользователю запрещено создавать сообщения
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
wRAR
сообщение 11.7.2005, 3:03


Ветеран
*****

Группа: Почётные мотофаны
Сообщений: 367
Регистрация: 19.2.2005
Из: Екатеринбург
Пользователь №: 37 277
Модель телефона: Galaxy S4

Рейтинг: 97



Цитата(HOLMS @ Воскресенье, 10 Июля 2005, 19:10)
А как обстоят дела по поводу подбора SHA хеша?
*


С ним, ктстаи, придется плясать при _каждом_ изменении прошивки.
ЗЫ. Это тоже обсуждалось.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Arkasha18
сообщение 11.7.2005, 8:17



****

Группа: Администраторы
Сообщений: 242
Регистрация: 27.4.2004
Из: Санкт-Петербург
Пользователь №: 2
Модель телефона: E2
Прошивка: 45R

Рейтинг: 249.5



Карта памяти в С650
===
Loader - 0x10000000 - 0x1000E7FF
Ldr_Sign - 0x1000E800 - 0x1000EFFF
HWBlock - 0x1000F000 - 0x1000FFFF
SecureZone - 0x10010000 - 0x1001FFFF
PanicData - 0x10020000 - 0x1003FFFF
DSP - 0x10040000 - 0x1007FFFF
MemMap - 0x10080000 - 0x100800C3
MainFlash - 0x100800C4 - 0x1091FFFF
Graph - 0x10920000 - 0x109DFFFF
LangPack - 0x109E0000 - 0x10B1F7FF
MainFlash_Sign - 0x10B1F800 - 0x10B1FFFF
################
Есть 2 подписи:
1. для загрузчика с адреса 0х10000000 по 0х1000E7FF
начинается с 0х1000E800, оформлена как часть блока загрузчика
проверяет только код загрузчика,
2. для части прошивки с с адреса 0х10040000 по 0х1091FFFF
начинается с 0х10B1F810, оформлена в отдельный блок по адресу 0х10B1F800
проверяет блок кода DSP, карту памяти, код прошивки.
################
Все смещения относительно начала подписи!
Некие поля в сертификате обусловлены стандартом ASN.1. Они все в основном проверяются. По всем вопросам - туда.
===
Подпись загрузчика:
=
Это блок параметров, его размер >5 байт и <=512 байт
FLASH:1000E800 LdrSignParam DCB 0xB1 ; type=название не существенно, всегда должно быть 0xB1

FLASH:1000E800 DCW 0xC6 ; OffsetCert =>1000E8C6/Cert_Ldr_SignParam - это смещение на 1-й сертификат

FLASH:1000E800 DCB 2 ; HWVer - это тип железа, в данном случае Product Version

Если этот массив имеет размер 0х14 байт, то сравнивается с записанным по адресу ROM_0х00005278/Std_SerNum
Если этот массив имеет размер 0х0E байт, то сравнивается с CPU_SerNum
FLASH:1000E800 DCB 0x14 ; Size_SerNum - размер массива SerNum
FLASH:1000E800 DCB 0xDA, 0x95, 0x1B, 0x6D, 0xDC, 0x97, 0х07, 0xCE, 0x40; SerNum
FLASH:1000E800 DCB 0xEA, 0x53, 0x0F, 0x90, 0x20, 0x91, 0xB5, 0x20, 0xDD; SerNum
FLASH:1000E800 DCB 0x2F, 0xF3 ; SerNum

FLASH:1000E800 DCW 0x30FF ; CmdBlock.Cmd_InitPubKey=команда "загрузить новый RSA-ключ"
FLASH:1000E800 DCB 0xFF ; CmdBlock.SizeCertPubKey=размер сертификата без подписи
FLASH:1000E800 DCD 0x247 ; CmdBlock.OffsetCert=ссылка на сертефикат=0х1000EA47/Cert_Ldr
FLASH:1000E800 DCB 1 ; CmdBlock.PubKeyNum_TestCert=номер ключа, которым проверяется подпись сертификата
FLASH:1000E800 DCB 1 ; CmdBlock.PubKeyNum_Set_in_arrPubKey=номер нового ключа в массиве проверенных ключей

FLASH:1000E800 DCW 0xC30 ; CmdBlock.Cmd_VerifiedMem_without_HWParam=команда "проверить блок памяти"
FLASH:1000E800 DCW 0x11 ; CmdBlock.Flags=Флаг="железный" SHA-1
FLASH:1000E800 DCB 1 ; CmdBlock.MemNum=кол-во блоков в массиве
FLASH:1000E800 DCD StartFlash ; CmdBlock.MemAddr=начало проверяемого блока
FLASH:1000E800 DCD 0xE800 ; CmdBlock.MemSize=размер проверяемого блока
тут может продолжаться массив из элементов MemAddr-MemSize
FLASH:1000E800 DCD 0x3D1 ; CmdBlock.Offset_RSASign=ссылка на подпись=0х1000EBD1/Ldr_RSASign
FLASH:1000E800 DCB 1 ; CmdBlock._PubKeyNum=номер ключа, которым проверяется подпись
эта команда аналогична предыдущей
FLASH:1000E800 DCW 0xC30 ; CmdBlock.Cmd_VerifiedMem_without_HWParam
FLASH:1000E800 DCW 0x11 ; CmdBlock.Flags
FLASH:1000E800 DCB 1 ; CmdBlock.MemNum
FLASH:1000E800 DCD HWBlock ; CmdBlock.MemAddr
FLASH:1000E800 DCD 4 ; CmdBlock.MemSize
FLASH:1000E800 DCD 0x451 ; CmdBlock.Offset_RSASign=0х1000EC51/HWBlock_RSASign
FLASH:1000E800 DCB 1 ; CmdBlock._PubKeyNum <=предыдущий байт
подпись для блока параметров от 0х1000E800 и до предыдущего байта
FLASH:1000E800 RSASign_LdrSignParam DCB 0x10, 0x2F, 0xE9, 0x88, 0xD9, 4, 0xEC, 0x34, 0xD0; RSASign
FLASH:1000E800 DCB 0x55, 0xF3, 0xCD, 0xD, 0xD1, 0x14, 0x65, 0x88, 0x9E; RSASign
FLASH:1000E800 DCB 0x6B, 0xEA, 0x9F, 0x4A, 0x31, 0x21, 0x9F, 0x45, 0x61; RSASign
FLASH:1000E800 DCB 0x3D, 0x5E, 0xB8, 0xA5, 0x9D, 0xEA, 0x88, 0x63, 0x27; RSASign
FLASH:1000E800 DCB 0x71, 0x49, 0x66, 0xD2, 0xC8, 0x9F, 0xFA, 0xE9, 0x24; RSASign
FLASH:1000E800 DCB 0x4A, 0x33, 0xFC, 0xF9, 0x83, 0xF6, 0x6B, 0x8E, 0xA5; RSASign
FLASH:1000E800 DCB 0x61, 0x62, 0xF7, 0xF3, 0xA4, 0x2A, 0x40, 0x83, 0xDA; RSASign
FLASH:1000E800 DCB 0x9A, 0xBD, 0xF5, 0xA0, 0x26, 0x9B, 0xBE, 0x73, 0xCA; RSASign
FLASH:1000E800 DCB 0x82, 0xEC, 0xAE, 0x35, 0x10, 0x14, 0x5D, 0x64, 0x6C; RSASign
FLASH:1000E800 DCB 0x25, 0xB8, 0x45, 0xBB, 0xDC, 0x10, 0xB6, 0x67, 9; RSASign
FLASH:1000E800 DCB 0xE0, 0x18, 0x23, 0x5E, 0xD6, 0xBB, 0xAF, 0x8B, 0x20; RSASign
FLASH:1000E800 DCB 0xB1, 0x98, 0xA1, 0xC4, 0x4B, 0x5A, 0x4C, 0x56, 0x2E; RSASign
FLASH:1000E800 DCB 0x52, 0xEE, 0x93, 0xA4, 0x74, 0x94, 0xB1, 0x99, 0xCE; RSASign
FLASH:1000E800 DCB 0x6B, 0x96, 0x7E, 0xFF, 0x59, 0xA2, 0x12, 0xAD, 0xC8; RSASign
FLASH:1000E800 DCB 0x99, 0x10 ; RSASign

===
Сертификат предоставляет открытый RSA-ключ для проверки подписи RSASign_LdrSignParam.
Проверяется RSA-ключом под номером 0 - железный ключ, зашитый в ПЗУ (ROM_0x0000529C).
Ключ помещается в массив открытых ключей (RAM_0х03FC2E0C) под номером 1.
=
FLASH:1000E8C6 Cert_Ldr_SignParam DCB 1 ; field_0=ASN.1
FLASH:1000E8C6 DCB 2 ; field_1=ASN.1

FLASH:1000E8C6 DCB 1 ; issuer.StdHdr.Type=ASN.1
FLASH:1000E8C6 DCW 4 ; issuer.StdHdr.field_1=ASN.1
FLASH:1000E8C6 DCB 50 ; issuer.StdHdr.StrSize=размер следующей строки в байтах
FLASH:1000E8C6 DCB 'CN=Motorola PCS CA9,OU=Motorola PKI,O=Motorola Inc'; issuer.Str

FLASH:1000E8C6 DCD 0x3F9E13F0 ; validity.notBefore=это дата/время годности сертификата, не ранее
FLASH:1000E8C6 DCD 0x58DB5B70 ; validity.notAfter=это дата/время годности сертификата, не позже

FLASH:1000E8C6 DCB 1 ; subject.StdHdr.Type=ASN.1
FLASH:1000E8C6 DCW 4 ; subject.StdHdr.field_1=ASN.1
FLASH:1000E8C6 DCB 50 ; subject.StdHdr.StrSize=размер следующей строки в байтах
FLASH:1000E8C6 DCB 'C', 'N', '=', 'C', 'S', 'F', ' ', 'C', 'A', ' ', '9'; subject.Str
FLASH:1000E8C6 DCB '-', '5', ',', 'O', 'U', '=', 'M', 'o', 't', 'o', 'r'; subject.Str
FLASH:1000E8C6 DCB 'o', 'l', 'a', ' ', 'P', 'K', 'I', ',', 'O', '=', 'M'; subject.Str
FLASH:1000E8C6 DCB 'o', 't', 'o', 'r', 'o', 'l', 'a', ' ', 'I', 'n', 'c'; subject.Str
FLASH:1000E8C6 DCB ';', 'S', 'N', '=', '1', '0'; subject.Str

FLASH:1000E8C6 DCB 2 ; field_76=ASN.1
FLASH:1000E8C6 DCB 0 ; field_77=ASN.1

FLASH:1000E8C6 DCW 3 ; E.Size=размер в байтах числа Е для RSA <=4
FLASH:1000E8C6 DCB 1, 0, 1 ; E.E=число Е для RSA

FLASH:1000E8C6 DCW 128 ; N.Size=размер в байтах числа N для RSA <= 128
FLASH:1000E8C6 DCB 0xD6, 0x1C, 0x89, 1, 0x4A, 0x7E, 0xC6, 0x49, 0xDB; N.N=число N для RSA
FLASH:1000E8C6 DCB 0xFD, 0x36, 0x91, 0x79, 0x75, 0x53, 0xDE, 0xB3, 0xEC; N.N
FLASH:1000E8C6 DCB 0x2E, 0x6D, 0x6C, 0x1D, 0xC4, 0x4B, 0x63, 0x1D, 0x7C; N.N
FLASH:1000E8C6 DCB 0xFA, 0xAB, 0xBD, 0x4A, 0xB2, 0x4A, 0x91, 0x12, 0x7D; N.N
FLASH:1000E8C6 DCB 3, 0x86, 0xBA, 0x87, 0x50, 0xFD, 0xDF, 0xF7, 0x48; N.N
FLASH:1000E8C6 DCB 0xCA, 0x7D, 0x5C, 0, 0x95, 0xC3, 0xD4, 0x11, 0xBF; N.N
FLASH:1000E8C6 DCB 0xBE, 0x9D, 0xC9, 0x68, 0xBC, 0x92, 0xBB, 0x3C, 0x3F; N.N
FLASH:1000E8C6 DCB 0x2C, 0xF6, 0xF6, 0xD, 8, 0x99, 0x55, 0xBB, 0x87, 0x9C; N.N
FLASH:1000E8C6 DCB 0x3E, 0xFD, 0xE4, 0x2F, 0x89, 0x7E, 0x3E, 0x80, 0xB9; N.N
FLASH:1000E8C6 DCB 0x1D, 0x40, 0xC0, 0x6D, 0x99, 0x1F, 0x93, 0x14, 0x92; N.N
FLASH:1000E8C6 DCB 0x5C, 0x31, 0x91, 8, 0x10, 0x4E, 0xD9, 0xB8, 0x39; N.N
FLASH:1000E8C6 DCB 0xA1, 0xC6, 0x6E, 0x91, 0x6E, 0xEF, 0x46, 0xEF, 0xE0; N.N
FLASH:1000E8C6 DCB 0xAE, 0x1D, 0x9A, 0x8A, 8, 0x3D, 0x16, 0xA8, 0x68; N.N
FLASH:1000E8C6 DCB 0xA4, 0x4B, 0x1F, 0x74, 2, 0xDD, 0x42, 0x32, 0xE0; N.N
FLASH:1000E8C6 DCB 0xA1 ; N.N <=0х1000E8D5

Эта подпись относится к области от 0х1000E8C6/Cert_Ldr_SignParam до 0х1000E8D5 - это адрес байта всерху
FLASH:1000E8C6 DCW 128 ; RSASign.Size=размер в байтах RSA подписи
FLASH:1000E8C6 DCB 0x8F, 0x15, 0xBB, 0x9D, 0x96, 0x27, 0x6C, 0x2D, 0x1F; RSASign.Sign=RSA подпись
FLASH:1000E8C6 DCB 0xAC, 0x2C, 0xA8, 0x54, 0xA4, 0xFF, 0xF0, 0x1A, 0x96; RSASign.Sign
FLASH:1000E8C6 DCB 0x1C, 0xF2, 0x2C, 0x52, 0x64, 0x73, 0x69, 0x1B, 0x9A; RSASign.Sign
FLASH:1000E8C6 DCB 0x2A, 0xF8, 0xA2, 0xDF, 0xF2, 0x9C, 0x66, 0xA6, 0xAA; RSASign.Sign
FLASH:1000E8C6 DCB 6, 0x1F, 0x7A, 0x2E, 0x33, 0xBB, 0x24, 0x34, 0x3B; RSASign.Sign
FLASH:1000E8C6 DCB 0x34, 0x85, 0x5B, 0x38, 0xEF, 0xBB, 0x55, 0x50, 0xF3; RSASign.Sign
FLASH:1000E8C6 DCB 0x6B, 0xC0, 0x51, 0xB2, 0x95, 4, 0x43, 0x41, 0x10; RSASign.Sign
FLASH:1000E8C6 DCB 0x88, 0x9F, 0xE0, 0x46, 0xE7, 0x43, 0x42, 0xB7, 0xF2; RSASign.Sign
FLASH:1000E8C6 DCB 0xF4, 0xFE, 0x6C, 0x37, 0xEC, 0x12, 0xEB, 0x49, 5; RSASign.Sign
FLASH:1000E8C6 DCB 0x38, 0x7A, 0x82, 0xAB, 0x33, 0x97, 0, 0x40, 0xE5; RSASign.Sign
FLASH:1000E8C6 DCB 0xAE, 0x96, 0, 0x27, 0xEB, 0xDE, 0x68, 0xD, 0x24, 0x23; RSASign.Sign
FLASH:1000E8C6 DCB 0xC2, 0xE5, 0xD1, 0xF4, 0x5F, 0x94, 0xF6, 0xAD, 0xD1; RSASign.Sign
FLASH:1000E8C6 DCB 0xEF, 0x80, 0xE9, 0x19, 0xF2, 0x2B, 0xDB, 0xB6, 0x1B; RSASign.Sign
FLASH:1000E8C6 DCB 0x8B, 0xDE, 0x4C, 0xCB, 0x3F, 0x7C, 0xCC, 0xA8, 0x1E; RSASign.Sign
FLASH:1000E8C6 DCB 0xBB ; RSASign.Sign


FLASH:1000EA47 Cert_Ldr DCB 1 ; field_0
FLASH:1000EA47 DCB 2 ; field_1
FLASH:1000EA47 DCB 1 ; issuer.StdHdr.Type
FLASH:1000EA47 DCW 4 ; issuer.StdHdr.field_1
FLASH:1000EA47 DCB 44 ; issuer.StdHdr.StrSize
FLASH:1000EA47 DCB 'C', 'N', '=', 'C', 'S', 'F', ' ', 'C', 'A', ' ', '9'; issuer.Str
FLASH:1000EA47 DCB '-', '5', ',', 'O', 'U', '=', 'M', 'o', 't', 'o', 'r'; issuer.Str
FLASH:1000EA47 DCB 'o', 'l', 'a', ' ', 'P', 'K', 'I', ',', 'O', '=', 'M'; issuer.Str
FLASH:1000EA47 DCB 'o', 't', 'o', 'r', 'o', 'l', 'a', ' ', 'I', 'n', 'c'; issuer.Str
FLASH:1000EA47 DCD 0x3F9E13F0 ; validity.notBefore
FLASH:1000EA47 DCD 0x58DB5B70 ; validity.notAfter
FLASH:1000EA47 DCB 1 ; subject.StdHdr.Type
FLASH:1000EA47 DCW 4 ; subject.StdHdr.field_1
FLASH:1000EA47 DCB 65 ; subject.StdHdr.StrSize
FLASH:1000EA47 DCB 'C', 'N', '=', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't'; subject.Str
FLASH:1000EA47 DCB 'i', 'o', 'n', ' ', 'S', 'i', 'g', 'n', 'i', 'n', 'g'; subject.Str
FLASH:1000EA47 DCB ' ', '9', '-', '5', '-', '1', ',', 'O', 'U', '=', 'M'; subject.Str
FLASH:1000EA47 DCB 'o', 't', 'o', 'r', 'o', 'l', 'a', ' ', 'P', 'K', 'I'; subject.Str
FLASH:1000EA47 DCB ',', 'O', '=', 'M', 'o', 't', 'o', 'r', 'o', 'l', 'a'; subject.Str
FLASH:1000EA47 DCB ' ', 'I', 'n', 'c', ';', 'S', 'N', '=', '0', '7'; subject.Str
FLASH:1000EA47 DCB 2 ; field_7F
FLASH:1000EA47 DCB 0 ; field_80
FLASH:1000EA47 DCW 3 ; E.Size
FLASH:1000EA47 DCB 1, 0, 1 ; E.E
FLASH:1000EA47 DCW 128 ; N.Size
FLASH:1000EA47 DCB 0xAC, 0xC8, 0xBE, 0x80, 0xFE, 0xDC, 0x65, 0x9D, 0xB5; N.N
FLASH:1000EA47 DCB 0xC7, 0xB2, 0x3E, 0x4A, 0xEA, 0x61, 0x86, 0x91, 0x76; N.N
FLASH:1000EA47 DCB 0xAD, 0xE1, 0xD9, 0x96, 0x64, 0x9A, 0x57, 0xFA, 0x5A; N.N
FLASH:1000EA47 DCB 0x4E, 0x72, 0x32, 0xE2, 0x82, 0x26, 0x39, 0x53, 0xB5; N.N
FLASH:1000EA47 DCB 0x6E, 0x81, 0x4A, 0x63, 0x28, 0xDB, 0x82, 0x29, 0x51; N.N
FLASH:1000EA47 DCB 0x9F, 0x9B, 0xC0, 0x27, 0x16, 0x8A, 0xFD, 0xF5, 0xF0; N.N
FLASH:1000EA47 DCB 0xEB, 0xE6, 0xA0, 0x8F, 0xA7, 0x72, 5, 0x2C, 2, 0x5C; N.N
FLASH:1000EA47 DCB 0x4D, 0xF3, 0xDE, 0x29, 0xEC, 0xF9, 0x99, 0x90, 0x6F; N.N
FLASH:1000EA47 DCB 0x42, 0xD9, 0xC4, 0x15, 0x16, 0xF5, 0xDE, 0xE0, 0xCB; N.N
FLASH:1000EA47 DCB 0x80, 0xD5, 0x42, 0x65, 0xFA, 0xE8, 0x3F, 0x43, 0x25; N.N
FLASH:1000EA47 DCB 0x86, 0x44, 0x8C, 0x69, 0xF4, 0xF1, 0x48, 0xC8, 0xAB; N.N
FLASH:1000EA47 DCB 0xF9, 0x8B, 0xB9, 0x4A, 0x35, 0x3B, 0xB9, 0xAB, 0x96; N.N
FLASH:1000EA47 DCB 0x5E, 0x32, 0xE7, 0x8A, 0x6B, 0xC4, 0x52, 0x84, 0xF7; N.N
FLASH:1000EA47 DCB 0x2C, 0xFA, 0xEB, 0x6F, 0xC4, 0x96, 0x49, 4, 0xE8; N.N
FLASH:1000EA47 DCB 1 ; N.N

FLASH:1000EA47 DCW 0x80 ; RSASign.Size
FLASH:1000EA47 DCB 0x22, 0x3F, 0xB4, 0x1D, 0xBE, 0xC8, 0x8B, 0xEF, 0xD9; RSASign.Sign
FLASH:1000EA47 DCB 0x41, 0x82, 0x75, 0xBB, 0x27, 0x14, 0x25, 0xF2, 0x77; RSASign.Sign
FLASH:1000EA47 DCB 0x4D, 0x78, 0xEA, 0x75, 0x87, 0x4C, 0x7A, 0xE4, 3; RSASign.Sign
FLASH:1000EA47 DCB 0xC9, 0x18, 0xCC, 0xBA, 0x22, 0x11, 0xEA, 0x86, 0xD5; RSASign.Sign
FLASH:1000EA47 DCB 0x87, 0xB4, 0xB0, 0xB9, 0xB2, 0xBD, 0x80, 0x66, 0xC9; RSASign.Sign
FLASH:1000EA47 DCB 0x6C, 0x55, 2, 0xD6, 0x61, 0x3F, 6, 0x18, 9, 0x1B; RSASign.Sign
FLASH:1000EA47 DCB 0x75, 0x18, 0xCA, 0x21, 0x83, 0x52, 0xC9, 0x17, 0x36; RSASign.Sign
FLASH:1000EA47 DCB 2, 0x9A, 0x84, 0x66, 2, 0x35, 0xFC, 0x72, 0x7C, 0xCE; RSASign.Sign
FLASH:1000EA47 DCB 0xB6, 0xCC, 0xC3, 0x91, 0x12, 0x81, 0x2C, 0x82, 0x97; RSASign.Sign
FLASH:1000EA47 DCB 0x8A, 0xE5, 0x62, 0xE6, 0x6D, 0xAF, 0x6E, 0xB8, 0xAB; RSASign.Sign
FLASH:1000EA47 DCB 0x16, 0xC5, 0x53, 0x8B, 0x64, 0x37, 0x8B, 0x7B, 0xC4; RSASign.Sign
FLASH:1000EA47 DCB 0x2B, 0x85, 0x9C, 0xDC, 0x37, 0x3E, 0x55, 0x42, 0x5B; RSASign.Sign
FLASH:1000EA47 DCB 0xEB, 0x57, 0xD5, 0x9E, 0x11, 0xF3, 0x7D, 0x4A, 0x92; RSASign.Sign
FLASH:1000EA47 DCB 0x16, 0x81, 0x92, 0xF5, 0x12, 0xC3, 0x33, 0x24, 0x60; RSASign.Sign

FLASH:1000EBD1 Ldr_RSASign DCB 4, 0x11, 0x51, 0x72, 0x23, 0x52, 0x1E, 0x98, 0x9B
FLASH:1000EBD1 DCB 0xB, 4, 0x78, 0x81, 0xE4, 0xFF, 0x79, 0x6C, 0xB7, 0xB2
FLASH:1000EBD1 DCB 0xFC, 0x41, 0xF5, 0xCC, 7, 0x50, 0xD, 0xD, 0xC9, 0xAB
FLASH:1000EBD1 DCB 0x49, 0x21, 0xFD, 0xF8, 0xEA, 0x22, 0xBB, 0xF4, 0xF2
FLASH:1000EBD1 DCB 0x13, 0x58, 0xEE, 0xF6, 0xAF, 0x85, 0xDF, 0x8B, 0x18
FLASH:1000EBD1 DCB 6, 0xB4, 0xED, 0x70, 0x78, 0xF8, 0x33, 0x36, 0x60
FLASH:1000EBD1 DCB 0x63, 0xE5, 0xD8, 0x7F, 0x3D, 0x8A, 0x4A, 0x54, 0x88
FLASH:1000EBD1 DCB 0x7D, 0xE8, 0xCA, 0x29, 0xA2, 0xDA, 0x41, 0x55, 0xB
FLASH:1000EBD1 DCB 0x6F, 0x26, 0xFA, 0xD7, 0x70, 0xF7, 0xEA, 0x81, 0x9F
FLASH:1000EBD1 DCB 0x7C, 0x2E, 0xCD, 0xAA, 0xD0, 0x2A, 0x47, 0x2A, 0x45
FLASH:1000EBD1 DCB 0x68, 0x71, 0x3A, 0x5B, 0x96, 0x8C, 0xA5, 0x46, 0x9C
FLASH:1000EBD1 DCB 0xF4, 0x14, 0x47, 0xB0, 0x93, 0x21, 0x4D, 0x89, 0xC1
FLASH:1000EBD1 DCB 0x30, 0xD6, 0xC0, 0xAF, 0xD0, 0x2C, 0xE8, 0xA5, 0x60
FLASH:1000EBD1 DCB 0xBA, 0x18, 0x6D, 0x91, 0x81, 0x88, 0xB5, 0x69, 0xE4

FLASH:1000EC51 HWBlock_RSASign DCB 0x96, 0xE2, 0x70, 0xA5, 0xBA, 0x7C, 0xD6, 1, 0xAC
FLASH:1000EC51 DCB 0xF5, 0xAA, 0xE6, 0x9A, 0x22, 0x29, 0x2F, 0x48, 0x9D
FLASH:1000EC51 DCB 9, 0x29, 0xAB, 0x31, 0xB, 0x85, 0x15, 0xD3, 0xC4, 0xAA
FLASH:1000EC51 DCB 0x6C, 0xE1, 0xFE, 0xA7, 0xCE, 0x60, 0xA1, 0x48, 0xB0
FLASH:1000EC51 DCB 2, 0x56, 0xB6, 0x27, 0x70, 0x59, 0xB1, 0x96, 0x90
FLASH:1000EC51 DCB 0x83, 0xC, 0x3C, 0xD8, 0x4E, 0x7F, 0x83, 0x11, 0xA6
FLASH:1000EC51 DCB 0x5A, 0x2E, 0x17, 0x44, 0xE7, 0xDA, 0x8C, 0xE6, 0xC7
FLASH:1000EC51 DCB 0x47, 0x87, 0xB2, 0xEB, 0xC4, 0x9D, 9, 0x13, 0x71
FLASH:1000EC51 DCB 0x4F, 0x45, 0x13, 0xFD, 0x82, 0xE2, 0x46, 0xE0, 0x94
FLASH:1000EC51 DCB 0x91, 0xB, 6, 0x55, 0x21, 0xDD, 0xBB, 0xAD, 0xB6, 0xEE
FLASH:1000EC51 DCB 0xCA, 0x80, 0xCF, 0xEE, 0x32, 0x6E, 0xF2, 0xB6, 0xDD
FLASH:1000EC51 DCB 0x68, 0x72, 0x5F, 0x23, 0x8D, 0xD5, 0x94, 0xD0, 4
FLASH:1000EC51 DCB 0x8D, 0x1D, 6, 0x9D, 0xC6, 0x63, 0x51, 0x63, 0x98
FLASH:1000EC51 DCB 0x88, 0x9F, 0x73, 0x5A, 0x87, 0xCE, 0x7A, 0x49, 0x2E

##############
Подпись прошывки: аналогична подписи загрузчика. Отличие в проверке одного блока памяти.

FLASH:10B1F810 FlashSignParam DCB 0xB1 ; type

FLASH:10B1F810 DCW 0xB4 ; OffsetCert

FLASH:10B1F810 DCB 2 ; HWVer

FLASH:10B1F810 DCB 0x14 ; Size_SerNum
FLASH:10B1F810 DCB 0xDA, 0x95, 0x1B, 0x6D, 0xDC, 0x97, 7, 0xCE, 0x40; SerNum
FLASH:10B1F810 DCB 0xEA, 0x53, 0xF, 0x90, 0x20, 0x91, 0xB5, 0x20, 0xDD; SerNum
FLASH:10B1F810 DCB 0x2F, 0xF3 ; SerNum

FLASH:10B1F810 DCW 0x30FF ; CmdBlock.Cmd_InitPubKey
FLASH:10B1F810 DCB 0xFF ; CmdBlock.SizeCertPubKey
FLASH:10B1F810 DCD 0x235 ; CmdBlock.OffsetCert
FLASH:10B1F810 DCB 1 ; CmdBlock.PubKeyNum_TestCert
FLASH:10B1F810 DCB 1 ; CmdBlock.PubKeyNum_Set_in_arrPubKey

FLASH:10B1F810 DCW 0xC30 ; CmdBlock.Cmd_VerifiedMem_without_HWParam
FLASH:10B1F810 DCW 0x11 ; CmdBlock.Flags
FLASH:10B1F810 DCB 1 ; CmdBlock.MemNum
FLASH:10B1F810 DCD Block_DSP ; CmdBlock.MemAddr
FLASH:10B1F810 DCD 0x8E0000 ; CmdBlock.MemSize
FLASH:10B1F810 DCD 0x3BF ; CmdBlock.Offset_RSASign
FLASH:10B1F810 DCB 1 ; CmdBlock._PubKeyNum

FLASH:10B1F810 DCB 0x0E, 0xBD, 0x06, 0x51, 0x6B, 0xA4, 0x76, 0xDF, 0x82, 0xA0; RSASign
FLASH:10B1F810 DCB 0x66, 0xCB, 0x16, 0xFF, 0x2E, 0xB2, 0x6F, 0x9A, 0xC0; RSASign
FLASH:10B1F810 DCB 0x6E, 0xA8, 0x40, 0x55, 0xD4, 0x4B, 0x35, 0x72, 0x25; RSASign
FLASH:10B1F810 DCB 0xAA, 0x76, 0x48, 0xC5, 0x77, 0x66, 0xCC, 0xC7, 0x26; RSASign
FLASH:10B1F810 DCB 0x6B, 0xDC, 0x84, 0x49, 0x3A, 0xFB, 0x89, 0xD8, 0xEE; RSASign
FLASH:10B1F810 DCB 0x9B, 0x29, 0xE3, 0xAD, 0xEF, 0xB6, 0x0D, 0x4F, 0x17; RSASign
FLASH:10B1F810 DCB 0x85, 0x41, 0xFF, 0x59, 0x10, 0x74, 0xC3, 0x35, 0x4D; RSASign
FLASH:10B1F810 DCB 0x10, 0x6D, 0x94, 0x94, 0x9E, 0x47, 0x2E, 0x33, 0xC9; RSASign
FLASH:10B1F810 DCB 0x67, 0x82, 0x17, 0x2D, 0x54, 0x84, 0xA7, 0xD6, 0x85; RSASign
FLASH:10B1F810 DCB 0x26, 0x03, 0xD6, 0xB2, 0x81, 0x49, 0xF9, 0x96, 0x75; RSASign
FLASH:10B1F810 DCB 0x4E, 0x7F, 0xFD, 0x37, 0x65, 0x90, 0x58, 0xBA, 0x05; RSASign
FLASH:10B1F810 DCB 0x1F, 0xF5, 0x62, 0x3D, 0xBC, 0xE2, 0x20, 0x63, 0xD0; RSASign
FLASH:10B1F810 DCB 0x7A, 0x81, 0x4D, 0xC7, 0xF1, 0xF2, 0xF9, 0x44, 0xEB; RSASign
FLASH:10B1F810 DCB 0x29, 0x41, 0xB7, 0x04, 0xEB, 0xD2, 0xC7, 0x3B, 0xDE; RSASign
FLASH:10B1F810 DCB 0x2F ; RSASign

FLASH:10B1F8C4 Cert_Flash_SignParam DCB 1 ; field_0
FLASH:10B1F8C4 DCB 2 ; field_1

FLASH:10B1F8C4 DCB 1 ; issuer.StdHdr.Type
FLASH:10B1F8C4 DCW 4 ; issuer.StdHdr.field_1
FLASH:10B1F8C4 DCB 50 ; issuer.StdHdr.StrSize
FLASH:10B1F8C4 DCB 'C', 'N', '=', 'M', 'o', 't', 'o', 'r', 'o', 'l', 'a'; issuer.Str
FLASH:10B1F8C4 DCB ' ', 'P', 'C', 'S', ' ', 'C', 'A', '9', ',', 'O', 'U'; issuer.Str
FLASH:10B1F8C4 DCB '=', 'M', 'o', 't', 'o', 'r', 'o', 'l', 'a', ' ', 'P'; issuer.Str
FLASH:10B1F8C4 DCB 'K', 'I', ',', 'O', '=', 'M', 'o', 't', 'o', 'r', 'o'; issuer.Str
FLASH:10B1F8C4 DCB 'l', 'a', ' ', 'I', 'n', 'c'; issuer.Str

FLASH:10B1F8C4 DCD 0x3F9E13F0 ; validity.notBefore
FLASH:10B1F8C4 DCD 0x58DB5B70 ; validity.notAfter

FLASH:10B1FA45 DCB 0x54, 0xA6, 0xCF, 0xE8, 0xE9, 0xDC, 0xA1, 0xE0, 0x47; RSASign.Sign
FLASH:10B1FA45 DCB 7, 0x20, 0xCB, 0x97, 0xE, 0x2F, 0x14, 0x9E, 0xA8, 0x76; RSASign.Sign
FLASH:10B1FA45 DCB 0xA, 0xE5, 0x36, 2, 0xAF, 0x88, 0x13, 0xD8, 0x77, 0x85; RSASign.Sign
FLASH:10B1FA45 DCB 0x94, 0xB7, 2, 0x38, 0xDA, 0xE2, 0x66, 0xCF, 0, 0x8F; RSASign.Sign
FLASH:10B1FA45 DCB 0xA2, 0x9B, 0x8B, 0xF2, 0x1B, 0xB9, 0x92, 0x1B, 0x79; RSASign.Sign
FLASH:10B1FA45 DCB 0xF, 0xEB, 0x65, 0x30, 0xC2, 0xFF, 0xB4, 0xCE, 0xAB; RSASign.Sign
FLASH:10B1FA45 DCB 0x5C, 0x55, 0xDC, 0x2E, 0x3D, 0xD1, 0x6B, 0x9A, 0x1B; RSASign.Sign
FLASH:10B1FA45 DCB 0x1F, 0x62, 0x8D, 0x57, 0x67, 0x2C, 0x9C, 0x78, 0xEF; RSASign.Sign
FLASH:10B1FA45 DCB 0xB, 0xF1, 0xA4, 0xA7, 0x56, 0x9A, 0x50, 0x8C, 0x1C; RSASign.Sign
FLASH:10B1FA45 DCB 0xF, 0xA1, 0xF3, 0x73, 0xE1, 0x20, 0x5F, 0x7A, 0xF2; RSASign.Sign
FLASH:10B1FA45 DCB 0xB4, 0x61, 0x59, 2, 0xFE, 0xB6, 0xEF, 0xB9, 0xEE; RSASign.Sign
FLASH:10B1FA45 DCB 0x65, 0x12, 0xA9, 0x6D, 0x35, 0x9D, 0x86, 0xB2, 0x6D; RSASign.Sign
FLASH:10B1FA45 DCB 0xAE, 0x65, 0xA, 0xFC, 7, 0xD3, 0x5D, 0x69, 0x72, 0x85; RSASign.Sign
FLASH:10B1FA45 DCB 0x8E, 0x97, 0x3A, 0x74, 0xB4, 0x2B, 0x79; RSASign.Sign

FLASH:10B1FBCF Flash_RSASign DCB 0x71, 0x34, 0x5B, 0x53, 0xCE, 0xA1, 0xDD, 0x83, 0x5D
FLASH:10B1FBCF DCB 1, 0xAA, 0x7A, 0x4A, 0xE8, 0xB2, 0x20, 0xB3, 0x4A
FLASH:10B1FBCF DCB 0xAB, 0x4C, 0xC1, 0x47, 0x7C, 0x78, 0xD1, 0x81, 0x9F
FLASH:10B1FBCF DCB 0x7E, 0x3D, 0xF7, 0xF, 0xAD, 0xA4, 0x65, 0xAC, 0x11
FLASH:10B1FBCF DCB 0x1D, 0x33, 0xEE, 0x10, 0x4C, 0xDC, 0xE8, 0xE7, 0xF4
FLASH:10B1FBCF DCB 0xD5, 0x6A, 2, 0x3E, 0x93, 0x49, 0xCC, 0x1E, 0xA9
FLASH:10B1FBCF DCB 0x43, 0xF, 0xF8, 0xFE, 0xA0, 0x11, 0xE2, 0x78, 0x47
FLASH:10B1FBCF DCB 0x82, 5, 0xDA, 0x2F, 0x56, 0xBA, 0xD8, 0x8D, 0x70
FLASH:10B1FBCF DCB 0x60, 0x2C, 0x86, 0xCD, 0x20, 0xCF, 0, 0x2D, 0xE7
FLASH:10B1FBCF DCB 0x27, 0x86, 0x1E, 0xF2, 0x54, 0x87, 0x23, 0x38, 3
FLASH:10B1FBCF DCB 0x2F, 0xA9, 0x27, 0x48, 0xA8, 0xB0, 0xE5, 2, 0xF6
FLASH:10B1FBCF DCB 0x14, 0x87, 0x66, 0x58, 0x1E, 0xFA, 0x81, 0xD0, 0x47
FLASH:10B1FBCF DCB 0x50, 0, 0x87, 0xB6, 0x5D, 0x7B, 0xE6, 0xC1, 0xC5
FLASH:10B1FBCF DCB 0xFC, 0x39, 0x26, 0xC5, 0xC4, 0xEA, 0x33, 0xFD, 4
FLASH:10B1FBCF DCB 0x77, 0xE9

Это так :) Если вдруг кому интересно будет...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
warmwood
сообщение 11.7.2005, 10:22


Новичок
*

Группа: Пользователи
Сообщений: 11
Регистрация: 10.2.2005
Пользователь №: 36 705
Модель телефона: C650
Прошивка: R365_G_0B.D3.06R

Рейтинг: 0



Стоит такой клиент:
12.05.2005 07:36 14 843 mingwm10.dll
02.07.2005 00:53 856 576 motorsa.exe
13.05.2005 03:47 7 422 464 qt-mt333.dll
на старой машине с p3-667(w2k) работает медленно, но не вылетает.
на P4-2800HT(wxp/sp2) - иногда (раз или два за один блок) вылетает.
Хотел бы уехать в отпуск и оставить, так ведь вылетает :(
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Liquid
сообщение 12.7.2005, 8:10


Новичок
*

Группа: Пользователи
Сообщений: 24
Регистрация: 4.10.2004
Пользователь №: 15 230
Модель телефона: C380
Прошивка: MotoKDE_R365_D3.08R

Рейтинг: 0



Цитата(Arkasha18 @ Понедельник, 11 Июля 2005, 12:17)
Проверяется RSA-ключом под номером 0 - железный ключ, зашитый в ПЗУ (ROM_0x0000529C).
Ключ помещается в массив открытых ключей (RAM_0х03FC2E0C) под номером 1.
=
*



Так вот, ПЗУ-отдельная микросхема или НЕ перезаписываемый блок в процессоре?
Если бы имелась возможность перезаписать этот ключ ИЛИ заставить загрузчик считывать ключ из другого места, то мы, наверное, смогли бы
а) сгенерировать свои ключи и подменить мотороловский открытый ключ своим ключём, прошивки соответственно тоже подписывать своим ключём
ИЛИ
б) также сгенерировать свои ключи, и заставить загрузчик считывать наш ключ не из ПЗУ, а из какого-нить другого блока памяти

Ну как, братцы?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Arkasha18
сообщение 12.7.2005, 9:10



****

Группа: Администраторы
Сообщений: 242
Регистрация: 27.4.2004
Из: Санкт-Петербург
Пользователь №: 2
Модель телефона: E2
Прошивка: 45R

Рейтинг: 249.5



Liquid,
Ключ не перезаписать. Он зашит не в прошиваемой части. (ROM в Neptune LTE)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Liquid
сообщение 12.7.2005, 13:09


Новичок
*

Группа: Пользователи
Сообщений: 24
Регистрация: 4.10.2004
Пользователь №: 15 230
Модель телефона: C380
Прошивка: MotoKDE_R365_D3.08R

Рейтинг: 0



Я всё-таки думаю, что на этапе отладки прошивы разработчики НЕ пользуются ключами, т.к. это небольшой дополнительный геммор...Может, они используют загрузчик, не проверяющий ключи? значит, и нам просто надо отучить загрузчик заниматься ерундой. на фиг нам не нужны никакие ключи ;)
ИМХО, проверка подлинности вставляется, когда уже готовый коммерческий продукт выбрасывают на рынок...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
KQ_44
сообщение 19.7.2005, 12:26


Опытный
***

Группа: Пользователи
Сообщений: 115
Регистрация: 2.3.2005
Из: Киев
Пользователь №: 37 969
Модель телефона: C650=>E1

Рейтинг: 10.5



Liquid:
Уважаемый Вы совершенно правы.
Перед началом проверки проверяются 3 младшие бита адреса 0x24850000.
В зависимости от их значения и вибирается тип поведения.
Как сказал Vilko (Пусть дас Аллах ему большой гарем!!!) :)
- эти 3 бита - это версия чипа
(типа: для разработчиков, для готового изделия, ну и еще че нить).
Смотрю я, надо от и до описать процес начальной загрузки...

2all:
Уважаемые! Vilko очень хорошо логически отлопатил проверку подписи;
могу выдать сертификат. :) Учитывая доступную информацию,
нет НЕЖЕЛЕЗНОГО метода обойти RSA-подпись, кроме прямого взлома.

Кому интересно, вот вам ссылка:
http://www.freescale.com/files/wireless_co...ief/I250-21.pdf
Это описание платформы, на которой собран С650.
ОЧЕНЬ РЕКОМЕНДУЮ ПОЧИТАТЬ, та много интересного!!!

Если лень качать, то вот:
DSP56631 Dual-Core Baseband Processor IC: (он же Нептун!!!)
Features:
Dual core:
ARM7TDMI-S™ (52 MHz) MCU (это процессор)
DSP56600 (130 MHz) processor (а это сопроцессор)
Integrates:
64K × 32 bits RAM - это ОЗУ
448K × 32 bits ROM accessible by the ARM7TDMI-S MCU; а это ПЗУ,
где лежит алгоритм проверки RSA-подписи
и открытый RSA-ключ, который портит нам жизнь
Phone security enhancements (а это для таких умных как мы!!!)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Раскрываем подпись прошивки, поиск простых сомножителей ключа. · Раскрытие секретного ключа для подписи прошивок · Forum
 

24 страниц V « < 21 22 23 24 >
Причина закрытия (Orakul 10-07-2007):
Закрытая темаСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 18.7.2025, 6:33

Форум живёт: