Сейчас на форуме: Alf, Dart Raiden, bedop66938, morgot (+7 невидимых)

 eXeL@B —› Электроника —› Неизвестный алгоритм обмена. Помогите..
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 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 байт ключа...Вопрос реально ли в этой всей каше просчитать новые ключи шифрования и точки входа/выхода для нового диапазона команд. Если кому интересно помочь мне то могу предоставить все доки и дамп по этой задаче..Так же возможна оплата труда в разумных пределах.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 16 февраля 2011 15:55
· Личное сообщение · #2

Т.е. мусор у старой прошивки тот же, что и у новой? Задача только в том, чтобы пропатчить старую прошивку, чтобы она понимала и старые и новые диапазоны команд? Или только новые? Есть ли прошивка от новых версий железки?

-----
Yann Tiersen best and do not fuck




Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 февраля 2011 19:41 · Поправил: Boryan
· Личное сообщение · #3

Про мусор не знаю, возможно остался прежний...потому как ведущий девайс принимает и старый и новый ...задача заставить железяку работать по новым командам...старые можно остатвить а можно и выкинуть. Прошивы от нового девайса нет ...есно если бы была я сюда обращаться не стал...да и не суть. Дело в другом, в самом алгоритме... можно ли каким нибудь методом вычислить новые ключи шифрования и точки входа на основе снятых пар запрос\ответ от нового девайса. Количесто пар можно снять любое. Сам дамп прошивки старой есть, если сделать реверс и полностью разложить алгоритм..и в таком виде с ним работать. Есть ли варианты? Меня пугает сама матрица по которой идут ключи...есть возможность обратного хода по ней?



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 16 февраля 2011 22:05
· Личное сообщение · #4

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

Думаю без Дампа с нового устройства, Вряди ! Аналогично, что Хэшит от MD5 Пристраивать в SHA1 !
ИМХО.



Ранг: 128.8 (ветеран), 21thx
Активность: 0.060.05
Статус: Участник

Создано: 17 февраля 2011 06:21
· Личное сообщение · #5

А дамп прошивки нельзя показать ? Иначе это гадание на кофейной гуще получается.



Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 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



Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 февраля 2011 16:13 · Поправил: Модератор
· Личное сообщение · #7

доки RUS на 78K0S http://zalil.ru/30458252
на англ тут http://zalil.ru/30523912



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 17 февраля 2011 16:56
· Личное сообщение · #8

Boryan пишет:
а нафига тогда пляски с бубном если бы была возможность снять дамп с нового девайса? ...с нового можно только логов наснимать ...

Может я и Не Прав, но Встречал и Такое(не на Микроконтроллерах)
Была програмка в которой использовался MD5 для проверки Реги - ЗаКГнили
Обновилась прога (допустим внутрь залезть не удалось) Имеем Имя и Регу в неограниченом количестве.
Вопрос, как узнать как изменился Алгоритм ?
В Том случае Автор подменил константы при просчете MD5 и Всё !
Вывод: Не имея доступа, невозможно узнать эти Константы, а тем более вычислить.
Предположу, что в Вашем случае ТАК !
Старый Вариант:
Запрос -> Алго (мусор) -> Ответ (Мусор известен)
Новый Вариант:
Запрос -> Алго (мусор) -> Ответ (Мусор не известен)
1. Если Алго Однонаправленный, то только БРУТ , если Алго не поменялся. Съэмулировать кучу запросов на определенный кусок мусора и пытаться вычислить.
2. Мог добавиться Новый Алго, Для Обработки новых команд. Без дампа, Врядли выясниш !



Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 февраля 2011 17:20 · Поправил: Boryan
· Личное сообщение · #9

Tyra Тогда так ..возможно константы поменяли...но! Девайс оставил поддержку старых команд+добавил новые константы+ добавил ещё новее константы для самого последнего варианта ведомого девайса..И если учитывать, что только для старых команд мусор весит 2 кило...то для новых этот мусор должен вырасти в разы. Ведь ведущий девайс каким то образом шифрует передаваемые ключи...соответственно тоже должен иметь место под мусор и в своей памяти? А учитывая что в девайсе за свой чужой отвечает мелкая микруха BGA размером всего 6х6 мм (не суть)...и она ограниченна в своих возможностях..она попросту не может жрать много ресурсов...и сбестоимость её копеечная потому как и сам девайс стоит 5т руб.. Ну ладно не суть...оставим это. Тут вот есть новости про алго...возможно они и решат всё. Короче как я писал ранее принятый ключ 8 байт мешается с 8 байт ключом, из полученных 16 байт и "мусора" высчитываются адреса в "мусоре" откуда тупо набираются байты для ответа....иными словами, принятый ключ и ключ дешифрования хитрым алгоритмом вычисляют только адреса"мусора" откуда набирать ответ... Походу проход только в одну сторону .. Интересно кто нибудь знаком с таким алгоритмом и с чем либо подобным? Скажу одно это всё замутила фирма SONY
И ещё, на одинаковый запрос 8 байт от ведущего девайса, все три ревизии ведомых девайсов дают разные ответы и они устраивают полностью ведущий девайс...Иными словами на один запрос может быть три разных ответа..



Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 17 февраля 2011 17:44
· Личное сообщение · #10

Boryan пишет:
Иными словами на один запрос может быть три разных ответа..

Это может быть из=за того, что дивайсы разные и передают свой ID.

Всё упирается в алгоритм шифровки(дешифоровки)
Нарисуйте БлокСхему и наглядно увидите, что Конкретно нужно.
Иделальный Вариант это написать свою програмку, которая будет правильно обрабатывать Пакеты.



Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 февраля 2011 18:28 · Поправил: Boryan
· Личное сообщение · #11

Tyra ID девайсы не передают...100% Я привёл тут только часть лога...все логи общения достаточно изученны и там нет тёмных пятен.
А вот по ходу изучения дампа прошивки , а этот дамп снят с галимого китайского клона...создаётся впечатление от того наличия мусора и от кривости прошивки...что китайцы тупо создали свой "новый" и очень кривой метод ответов на запросы...иначе не было бы такого мусора в прошивке....если бы им был слив с оригинала .....не думаю что Sony способна на такой мусор в написании прог для контроллеров..



Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 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
в итоге инициализация прошла



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 17 февраля 2011 18:51
· Личное сообщение · #13

Нету там никакого мусора. С чего вы взяли что он там есть? Все разбито на таблицы красиво.

-----
старый пень




Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 февраля 2011 19:02
· Личное сообщение · #14

r_e ну вот и появились точки над и Мусор это для моего уровня знаний см личку.



Ранг: 8.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 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

Для чего такая реализация кода ? чтобы реализовать софтово какие то тайминги ? Примеров последовательной перезаписи одного регистра или ячейки памяти в этом коде хватает...



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 17 февраля 2011 19:56
· Личное сообщение · #16

Androand
Да, по поводу этого у меня есть некоторые сомнения. Тут или ида косячит или реально баги в коде.
Потому как, например, такой кусок в базе:
Code:
  1. ROM:0767 Mov_AX_dwHL:                            ; CODE XREF: CryptDisp0+21Ap
  2. ROM:0767                                         ; CryptDisp0+234p
  3. ROM:0767                                         ; DATA XREF: ...
  4. ROM:0767                 mov     A,[HL]
  5. ROM:0768                 xch     A,X
  6. ROM:0769                 mov     A,[HL+01h]
  7. ROM:076B                 ret
  8. ROM:076B ; End of function Mov_AX_dwHL
  9. ROM:076C ; =============== S U B R O U T I N E =======================================
  10. ROM:076C Mov_dbHL_X:                             ; CODE XREF: CryptDisp0+211p
  11. ROM:076C                                         ; DATA XREF: ROM:0076o
  12. ROM:076C                 mov     [HL+00h],A
  13. ROM:076E                 xch     A,X
  14. ROM:076F                 mov     [HL],A
  15. ROM:0770                 ret
  16. ROM:0770 ; End of function Mov_dbHL_X

идет в блоке стандартных функций
Code:
  1. ROM:075B ; [00000006 BYTES: COLLAPSED FUNCTION Mov_AX_dwDE. PRESS KEYPAD "+" TO EXPAND]
  2. ROM:0761 ; [00000006 BYTES: COLLAPSED FUNCTION Mov_dwDE_AX. PRESS KEYPAD "+" TO EXPAND]
  3. ROM:0767 ; [00000005 BYTES: COLLAPSED FUNCTION Mov_AX_dwHL. PRESS KEYPAD "+" TO EXPAND]
  4. ROM:076C ; [00000005 BYTES: COLLAPSED FUNCTION Mov_dbHL_X. PRESS KEYPAD "+" TO EXPAND]
  5. ROM:0771 ; [0000000B BYTES: COLLAPSED FUNCTION Inc_dwHL. PRESS KEYPAD "+" TO EXPAND]
  6. ROM:077C ; [0000000B BYTES: COLLAPSED FUNCTION Dec_dwHL. PRESS KEYPAD "+" TO EXPAND]


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

-----
старый пень




Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 17 февраля 2011 20:04
· Личное сообщение · #17

Дополнение:
Это ИДА косячит. Страница 34/97 мануала на русском говорит.
MOV [HL+byte], A ::: [ED] [byte]
Смотрим базу
Code:
  1. ROM:076C ED 01                                   mov     [HL+00h],A

Налицо косяк.

Аналогично и с твоим кодом.

-----
старый пень




Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 17 февраля 2011 22:37
· Личное сообщение · #18

r_e пишет:
Налицо косяк.

Аналогичные косяки встречал при написании программ, например для PIC, на трансляьлрах высокого уровня, которые севершают кучу ненужных(мусорных) команд. Нужно полностью разбирать Алго и Отлаживать !



Ранг: 7.6 (гость), 3thx
Активность: 0=0
Статус: Участник

Создано: 18 февраля 2011 00:25
· Личное сообщение · #19

PE_Kill
ку ;) почему-то так и думал, что твой комментарий будет одним из первых )) помню твою любовь к "железному" софту )
Boryan проделал грандиозную работу и аналогов ей нет и не предвидется. Перспективы очень вкуснявые для обладателей девайса. Не обойди вниманием вопрос, если найдётся свободное время. Заходи на канал.. там смогу рассказать подробнее.



Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 февраля 2011 00:55 · Поправил: Boryan
· Личное сообщение · #20

Mercyful пасиб за добрые слова Ну сейчас перспективы уже не такие вкуснявые как до выхода хенов..



Ранг: 92.4 (постоянный), 2thx
Активность: 0.040
Статус: Участник

Создано: 18 февраля 2011 04:32
· Личное сообщение · #21

О Boryan, ты про батарею от PSP?




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 18 февраля 2011 09:21
· Личное сообщение · #22

Mercyful привет, бро. Да, до сих пор почти каждый день с железками пересекаюсь, судьба что ли такая
Boryan такое ощущение, что китайская поделка оптимизированный табличный эмулятор.

-----
Yann Tiersen best and do not fuck




Ранг: 92.4 (постоянный), 2thx
Активность: 0.040
Статус: Участник

Создано: 18 февраля 2011 09:41
· Личное сообщение · #23

блочное шифрование похожее на keeloq!



Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 февраля 2011 11:45
· Личное сообщение · #24

Yokel зачем ругаешся?;) ты оттуда? Здесь то чего делаешь?
PE_Kill пишет:
Boryan такое ощущение, что китайская поделка оптимизированный табличный эмулятор.

Это ломаемо?



Ранг: 8.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 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 - прогонкой скрипта какого нить или каждый оператор сверять с мануалом ?



Ранг: 92.4 (постоянный), 2thx
Активность: 0.040
Статус: Участник

Создано: 18 февраля 2011 13:36
· Личное сообщение · #26

Boryan всмысле откуда, на дату регистрации посмотри!



Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 февраля 2011 00:52
· Личное сообщение · #27

И что? Больше ни кто ни чего не может подсказать?



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 23 февраля 2011 10:01
· Личное сообщение · #28

Собсно, с учетом изложенного выше - в читабельный код свою БД перевели? Тесты скомпилировали? Работает как аппарат?

-----
старый пень




Ранг: 8.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 февраля 2011 11:45
· Личное сообщение · #29

пока ещё в процессе..чот не очень у нас это получается..опыта маловато



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 23 февраля 2011 11:58
· Личное сообщение · #30

О сколько нам открытий чудных
Готовят просвещенья дух
И опыт, сын ошибок трудных,
И гений, парадоксов друг...

Как закончите - пишите в топик. Посмотрим что там за крипта.

-----
старый пень



. 1 . 2 . >>
 eXeL@B —› Электроника —› Неизвестный алгоритм обмена. Помогите..
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати