Сообщение от sasiska12
Boryan,
глупый вопрос, но по djmorgan можно предположить, что может просто поменяли напряжение уровней сигналов, поэтому контроллер и молчит на ваши запросы?
|
В том то и дело что никто не молчит, общение идет полным ходом, но мы его эмулировать на компе не можем... непонятный алгоритм преобразования байт... А этот
djmorgan вообще непонятный чел, 3 сообщения написал за все время - вот и думай гонит он или и правда смышленый...
Вот нарыл еще один
документик про
Battery Authentication for Portable Power-Supply Systems
Вроде как нам в принципе подходит, PSP - это ж портабле система и батарейка у нас есть, так вот там используется алгоритм XTEA, как по мне так преобразование 8 байт очень похоже на CRC64, а вот что сони использовала непонятно...
По идее алгоритм не должен быть очень сложным, ведь его реализует железяка, которая выпускается уже лет 6-7 и я просто не представляю что можно реализовать на 8-битном микроконтроллере, наверное побольше чем просто по-битные сдвиги, но ведь и серьезный криптоалгоритм особо не засунешь наверное...
И алгоритм наверное должен быть без ключа, поскольку его никто не передает изначально, ведь как все происходит:
5A0201A2 - простая команда с консоли на проверку заряда батарейки
A505060000004F - эмулирую ответ батарейки нешифрованный, причем как видите попробовал нули подставлять, консоль нормально воспринимает, правда после нескольких попыток сбросилось время (у меня так бывает если долго без батарейки консоль держать), но может это просто совпадение...
5A020C97 - дальше запрос серийника
A50606DADA168301 - снова эмулирую нешифрованный ответ батарейки
5A0B80008EF6ADA312BF5E52C5 - и вот тут засада, консоль сгенерировала 8 байтов в запросе, скорее всего случайным образом, но наверняка запомнила их и послала батарейке, та должна преобразовать их в другие байты (скорее 8 чем 16 ) и ответить консоли ими на этот же запрос, потом консоль поймет что преобразование правильное и пошлет 81 команду что бы дальше подружится с батарейкой...
я пробовал подставлять и нули и FF в ответ и даже дублировать байты
A512068EF6ADA312BF5E520000000000000000ED
но все это консоль пресекает и начинает опрос заново...
И кстати
lport3 как то обмолвился что ему удалось запустить консоль ответив 15 раз отрицательными ответами(FF), но у меня большие в этом сомнения, поскольку сколько я не пытался - дальше команды 8000 я не могу продвинуться...
Возникла конечно идея, озвученная Стасом, подключить второй k-line к батарейке и получив запрос 8000 от консоли перенаправить его батарейке, а ответ переправить в консоль и посмотреть что будет дальше - таким образом можно будет перебрать серийники чтобы понять будет ли PSP3000 посылать запрос 80D9 на другие серийники отличные от FF и 00. Но вот пройдет ли этот метод по тайм-аутам не понятно...