Сейчас на форуме: Alf, Dart Raiden, bedop66938, morgot (+7 невидимых) |
eXeL@B —› Электроника —› Неизвестный алгоритм обмена. Помогите.. |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 16 февраля 2011 12:37 · Личное сообщение · #1 Есть два девайса при коннекте между собой делают проверку свой-чужой по хитрому алгоритму. Ведуший девайс посылает 8 байт криптованный ключик ведомому..ведомый должен его декриптить и отправить правильный ответ.. сокращённо лог общения выглядит так 5A 0B 8004 B7A80076B00587EC 19 A5 12 06 8E759E521D19EEB0 47B29FE2342209F9 A9 где : 8004 команда запроса и далее ключ 8 байт на конце КС 1206 успешный ответ и далее 8 байт ответа плюс 8 байт криптованный ключ уже для проверки на свой-чужой ведущего девайса. Ведомый девайс собран на МК NEC....удалось взломать этот контроллер и вытащить с него дамп прошивки весом 4 к. Начал поторшить дамп в IDA на предмет взлома алгоритма...и застрял в сложности его..алго нечто отдалённо напоминающее SAFER Что на данный момент поятно..Принятый ключик разбивается побайтно и мешается попарно с ключом шифрования 8 байт ..на выходе 16 байт вперемешку. Далее эти 16 байт опускаются в кучу "мусора" представляющуюю тупо набор разных значений байт объёмом около 430 байт и там начинают перемешиваться с использованием различных логических операций посредством приблизительно около 247 проходов по этой куче...на выходе получаем ключ 16 байт из него выбрасываем 8 байт и оставшиеся 8 байт есть ответ. В чём стоит задача? Ведомый девайс старой ревизии и понимает только запросы в диапазоне от 8000 до 8005, а новые работают в диапазоне от 8008 до 800D...вот и нужно старый научить работать по новому диапазону. Тепрь про саму команду запроса 80хх ..второй байт в этой команде указывает каким ключом дешифровать посланный ключ и помимо этого указывает на точку входа в "мусор" Реально этот "мусор" весит около 2 кило! И соответсвенно имеет разные точки входа/выхода для 16 байт ключа...Вопрос реально ли в этой всей каше просчитать новые ключи шифрования и точки входа/выхода для нового диапазона команд. Если кому интересно помочь мне то могу предоставить все доки и дамп по этой задаче..Так же возможна оплата труда в разумных пределах. |
|
Создано: 16 февраля 2011 15:55 · Личное сообщение · #2 |
|
Создано: 16 февраля 2011 19:41 · Поправил: Boryan · Личное сообщение · #3 Про мусор не знаю, возможно остался прежний...потому как ведущий девайс принимает и старый и новый ...задача заставить железяку работать по новым командам...старые можно остатвить а можно и выкинуть. Прошивы от нового девайса нет ...есно если бы была я сюда обращаться не стал...да и не суть. Дело в другом, в самом алгоритме... можно ли каким нибудь методом вычислить новые ключи шифрования и точки входа на основе снятых пар запрос\ответ от нового девайса. Количесто пар можно снять любое. Сам дамп прошивки старой есть, если сделать реверс и полностью разложить алгоритм..и в таком виде с ним работать. Есть ли варианты? Меня пугает сама матрица по которой идут ключи...есть возможность обратного хода по ней? |
|
Создано: 16 февраля 2011 22:05 · Личное сообщение · #4 |
|
Создано: 17 февраля 2011 06:21 · Личное сообщение · #5 |
|
Создано: 17 февраля 2011 12:06 · Поправил: Boryan · Личное сообщение · #6 Собсна дамп..контроллер NEC upd78f9202, ядро 78K0S.. ключи в нём пока затёр..на месте 0 ключа 00..на месте 1-11,2-22 и т.д. это не суть. Прошиву писал китаец кривыми руками..версия походу отладочная, но рабочая Видно пытался реализовать мою идею, но не получилось..так и оставил в ней мусор. Tyra а нафига тогда пляски с бубном если бы была возможность снять дамп с нового девайса? ...с нового можно только логов наснимать ... db52_17.02.2011_CRACKLAB.rU.tgz - damp_no_key.bin |
|
Создано: 17 февраля 2011 16:13 · Поправил: Модератор · Личное сообщение · #7 |
|
Создано: 17 февраля 2011 16:56 · Личное сообщение · #8 Boryan пишет: а нафига тогда пляски с бубном если бы была возможность снять дамп с нового девайса? ...с нового можно только логов наснимать ... Может я и Не Прав, но Встречал и Такое(не на Микроконтроллерах) Была програмка в которой использовался MD5 для проверки Реги - ЗаКГнили Обновилась прога (допустим внутрь залезть не удалось) Имеем Имя и Регу в неограниченом количестве. Вопрос, как узнать как изменился Алгоритм ? В Том случае Автор подменил константы при просчете MD5 и Всё ! Вывод: Не имея доступа, невозможно узнать эти Константы, а тем более вычислить. Предположу, что в Вашем случае ТАК ! Старый Вариант: Запрос -> Алго (мусор) -> Ответ (Мусор известен) Новый Вариант: Запрос -> Алго (мусор) -> Ответ (Мусор не известен) 1. Если Алго Однонаправленный, то только БРУТ , если Алго не поменялся. Съэмулировать кучу запросов на определенный кусок мусора и пытаться вычислить. 2. Мог добавиться Новый Алго, Для Обработки новых команд. Без дампа, Врядли выясниш ! |
|
Создано: 17 февраля 2011 17:20 · Поправил: Boryan · Личное сообщение · #9 Tyra Тогда так ..возможно константы поменяли...но! Девайс оставил поддержку старых команд+добавил новые константы+ добавил ещё новее константы для самого последнего варианта ведомого девайса..И если учитывать, что только для старых команд мусор весит 2 кило...то для новых этот мусор должен вырасти в разы. Ведь ведущий девайс каким то образом шифрует передаваемые ключи...соответственно тоже должен иметь место под мусор и в своей памяти? А учитывая что в девайсе за свой чужой отвечает мелкая микруха BGA размером всего 6х6 мм (не суть)...и она ограниченна в своих возможностях..она попросту не может жрать много ресурсов...и сбестоимость её копеечная потому как и сам девайс стоит 5т руб.. Ну ладно не суть...оставим это. Тут вот есть новости про алго...возможно они и решат всё. Короче как я писал ранее принятый ключ 8 байт мешается с 8 байт ключом, из полученных 16 байт и "мусора" высчитываются адреса в "мусоре" откуда тупо набираются байты для ответа....иными словами, принятый ключ и ключ дешифрования хитрым алгоритмом вычисляют только адреса"мусора" откуда набирать ответ... Походу проход только в одну сторону .. Интересно кто нибудь знаком с таким алгоритмом и с чем либо подобным? Скажу одно это всё замутила фирма SONY И ещё, на одинаковый запрос 8 байт от ведущего девайса, все три ревизии ведомых девайсов дают разные ответы и они устраивают полностью ведущий девайс...Иными словами на один запрос может быть три разных ответа.. |
|
Создано: 17 февраля 2011 17:44 · Личное сообщение · #10 Boryan пишет: Иными словами на один запрос может быть три разных ответа.. Это может быть из=за того, что дивайсы разные и передают свой ID. Всё упирается в алгоритм шифровки(дешифоровки) Нарисуйте БлокСхему и наглядно увидите, что Конкретно нужно. Иделальный Вариант это написать свою програмку, которая будет правильно обрабатывать Пакеты. |
|
Создано: 17 февраля 2011 18:28 · Поправил: Boryan · Личное сообщение · #11 Tyra ID девайсы не передают...100% Я привёл тут только часть лога...все логи общения достаточно изученны и там нет тёмных пятен. А вот по ходу изучения дампа прошивки , а этот дамп снят с галимого китайского клона...создаётся впечатление от того наличия мусора и от кривости прошивки...что китайцы тупо создали свой "новый" и очень кривой метод ответов на запросы...иначе не было бы такого мусора в прошивке....если бы им был слив с оригинала .....не думаю что Sony способна на такой мусор в написании прог для контроллеров.. |
|
Создано: 17 февраля 2011 18:36 · Личное сообщение · #12 вот полный лог инициализации девайсов 5A 02 01 A2-запрос напряжения девайса A5 05 06 107905 C1-ответ о велечине напруги 5A 02 0C 97-запрос серийника A5 06 06 34127856 3A-ответ и передача серийника 5A 0B 80 08B7EE78DD9E35089B A2- далее проверка свой-чужой A5 12 06 CB5E5D56D1FD32C4BD13CCB16F24F8C8 02-тут ответ не верный (старый девайс не знает ответы на 8008) 5A 02 01 A2-и снова повторяем всё заново A5 05 06 107905 C1 5A 02 0C 97 A5 06 06 34127856 3A 5A 0B 80 024A1EFEA52887D730 57 -снижаем диапазон запроса на 8002 для старого девайса A5 12 06 6564E3675EA9C4FAF400F9EB4C367B3C 59 - всё нормально..ответ принят 5A 0A 81 A53F0E3A85541BD2 28 A5 0A 06 C0BE63BBB31BAF56 DB 5A 02 01 A2 A5 05 06 007905 D1 5A 0B 80 027C802BB92461FF17 9D A5 12 06 7C8B7FA6D99E3EC02C81D6CACC9F9F27 23 5A 0A 81 0BB506924FF89378 70 A5 0A 06 4EBADCE7C92573E2 3C в итоге инициализация прошла |
|
Создано: 17 февраля 2011 18:51 · Личное сообщение · #13 |
|
Создано: 17 февраля 2011 19:02 · Личное сообщение · #14 |
|
Создано: 17 февраля 2011 19:13 · Личное сообщение · #15 r_e пишет: Нету там никакого мусора. Может там мусора и нет, но код очень кривой даже для меня - очень слабо разбирающегося в асме... Вот пример кривости: ROM_:0F24 loc_F24: ; CODE XREF: sub_EE3+3Dj ROM_:0F24 mov E,A ; Move Byte Data Transfer ROM_:0F26 mov A,[HL] ; Move Byte Data Transfer ROM_:0F27 xor A,X ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F29 xor A,B ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F2B xor A,C ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F2D mov [HL],A ; Move Byte Data Transfer ROM_:0F2E mov A,[HL+04h] ; Move Byte Data Transfer ROM_:0F30 xor A,X ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F32 xor A,C ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F34 xor A,D ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F36 mov [HL+00h],A ; Move Byte Data Transfer ROM_:0F38 mov A,[HL+08h] ; Move Byte Data Transfer ROM_:0F3A xor A,X ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F3C xor A,D ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F3E xor A,E ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F40 mov [HL+00h],A ; Move Byte Data Transfer ROM_:0F42 mov A,[HL+0Ch] ; Move Byte Data Transfer ROM_:0F44 xor A,X ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F46 xor A,E ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F48 xor A,B ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F4A mov [HL+00h],A ; Move Byte Data Transfer ROM_:0F4C pop DE ; Pop ROM_:0F4D ret ; Return from Subroutine куча манипуляций в итоге сводится к четырехкратному перезатиранию ячейки RAM [HL] и в итоге из строчек кода играют роль лишь эти: ROM_:0F42 mov A,[HL+0Ch] ; Move Byte Data Transfer ROM_:0F44 xor A,X ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F46 xor A,E ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F48 xor A,B ; Exclusive Or Exclusive Logical Sum of Byte Data ROM_:0F4A mov [HL+00h],A ; Move Byte Data Transfer Для чего такая реализация кода ? чтобы реализовать софтово какие то тайминги ? Примеров последовательной перезаписи одного регистра или ячейки памяти в этом коде хватает... |
|
Создано: 17 февраля 2011 19:56 · Личное сообщение · #16 Androand Да, по поводу этого у меня есть некоторые сомнения. Тут или ида косячит или реально баги в коде. Потому как, например, такой кусок в базе: Code:
идет в блоке стандартных функций Code:
Как вывод, код разобрать можно. Не такая там страшная крипта как ее малюют. А уже после восстановления кода можно смотреть можно ли восстановить ключи. ----- старый пень |
|
Создано: 17 февраля 2011 20:04 · Личное сообщение · #17 |
|
Создано: 17 февраля 2011 22:37 · Личное сообщение · #18 |
|
Создано: 18 февраля 2011 00:25 · Личное сообщение · #19 PE_Kill ку ;) почему-то так и думал, что твой комментарий будет одним из первых )) помню твою любовь к "железному" софту ) Boryan проделал грандиозную работу и аналогов ей нет и не предвидется. Перспективы очень вкуснявые для обладателей девайса. Не обойди вниманием вопрос, если найдётся свободное время. Заходи на канал.. там смогу рассказать подробнее. |
|
Создано: 18 февраля 2011 00:55 · Поправил: Boryan · Личное сообщение · #20 |
|
Создано: 18 февраля 2011 04:32 · Личное сообщение · #21 |
|
Создано: 18 февраля 2011 09:21 · Личное сообщение · #22 |
|
Создано: 18 февраля 2011 09:41 · Личное сообщение · #23 |
|
Создано: 18 февраля 2011 11:45 · Личное сообщение · #24 |
|
Создано: 18 февраля 2011 13:09 · Поправил: Androand · Личное сообщение · #25 r_e пишет: Дополнение: Это ИДА косячит. Страница 34/97 мануала на русском говорит. MOV [HL+byte], A ::: [ED] [byte] Смотрим базу Code: 1. ROM:076C ED 01 mov [HL+00h],A Налицо косяк. Аналогично и с твоим кодом. Ого ... Спасибо большое за подсказку, а то две недели бьемся - не можем повторить и проверить запрос-ответ - вроде перетащили в асм процедуры по обработке 80XX запросов, таблицы байт тоже а результата нет и нет - генерится другой код и все... А есть какой нить способ поправить автоматически эти косяки в IDA - прогонкой скрипта какого нить или каждый оператор сверять с мануалом ? |
|
Создано: 18 февраля 2011 13:36 · Личное сообщение · #26 |
|
Создано: 23 февраля 2011 00:52 · Личное сообщение · #27 |
|
Создано: 23 февраля 2011 10:01 · Личное сообщение · #28 |
|
Создано: 23 февраля 2011 11:45 · Личное сообщение · #29 |
|
Создано: 23 февраля 2011 11:58 · Личное сообщение · #30 |
. 1 . 2 . >> |
eXeL@B —› Электроника —› Неизвестный алгоритм обмена. Помогите.. |