PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   PSP хакинг и девелопмент (https://www.pspx.ru/forum/forumdisplay.php?f=195)
-   -   BaryonSweeper - эмулятор сервисной батарейки JigKick для анбрика PSP (https://www.pspx.ru/forum/showthread.php?t=111113)

Valera0141 27.01.2021 08:36

ErikPshat, да чёрточки писал, так как выводил данные по другому изначально. Убрал чёрточки из кода и добавил вывод 9 байт. Вот лог с выводом этих 9 байт, что приходило с псп. Если выводить ещё и то, что отправляем в пиху, то ардуино заметно медленнее работает, так как для неё вывод в серийный порт больное дело
Start
0
FE
5A 2 1 A2
5A 2 C 97
5A B 80 (8 0 83 DA 44 B 35 64 94 ) 39
5A 2 1 A2
5A 2 C 97
5A B 80 (2 6

вот тут ардуино зависает намертво при попытке чтения сообщения, причину пока найти не могу, где то явно утечка в памяти по коду

dee098 27.01.2021 09:15

Цитата:

Сообщение от Valera0141 (Сообщение 1231176)
dee098, смотри. Там ардуино зависает, когда проходит второй цикл получения команды 0x80

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

Start
0 |
0 |
5A | 2 | 1 | A2
5A | 2 | C | 97
5A | B | 80 | D
5A | 2 | 1 | A2
5A | 2 | C | 97
5A | B | 80

Похоже на то что ваш <SoftwareSerialParity.h> либо парсер теряет пакеты. Я в своем коде использую хардверный сериал для работы с ПСП и софтверный для отладки. Как уже писал ErikPshat приведи вывод к более читаемому формату. Не так сложно дополнять байт 0 если значение меньше 0x10.

dee098 добавил 27-01-21 в 0:Jan p
Есть смысл избавиться от
Цитата:

msg = new byte[msgLength] {0x00};
Тем болле что освобождения памяти я в твоем коде не увидел.

Valera0141 27.01.2021 10:06

Цитата:

Сообщение от dee098 (Сообщение 1231179)
Похоже на то что ваш <SoftwareSerialParity.h> либо парсер теряет пакеты. Я в своем коде использую хардверный сериал для работы с ПСП и софтверный для отладки. Как уже писал ErikPshat приведи вывод к более читаемому формату. Не так сложно дополнять байт 0 если значение меньше 0x10.

dee098 добавил 27-01-21 в 0:Jan p
Есть смысл избавиться от
Тем болле что освобождения памяти я в твоем коде не увидел.

Софтварный серил пиха принимать не хочет. А в сторонней библиотеке он был переписан по нормальному с выбором режима. Через него пиха отлично принимает данные. Да и работает он без проблем. Переписал вывод информации в лог. Пробовал очищать память переменной msg, но что то не помогло это. В каком месте покопать ? И у меня вопрос. Верно ли я написал функцию byte *ECBEncryptBytes(byte *clearBytes, byte *key) ?

Valera0141 добавил 27.01.2021 в 10:06
Цитата:

Сообщение от dee098 (Сообщение 1231179)
Похоже на то что ваш <SoftwareSerialParity.h> либо парсер теряет пакеты. Я в своем коде использую хардверный сериал для работы с ПСП и софтверный для отладки. Как уже писал ErikPshat приведи вывод к более читаемому формату. Не так сложно дополнять байт 0 если значение меньше 0x10.

dee098 добавил 27-01-21 в 0:Jan p
Есть смысл избавиться от
Тем болле что освобождения памяти я в твоем коде не увидел.

А зачем избавляться от msg = new byte[msgLength] {0x00};, если это в памяти выделяет место под массив с нужным размером, а потом его заполняет циклом из псп. Без этого в переменную какую то белеберду заносит. Или я что то не знаю?

Обновил немнгого код https://drive.google.com/file/d/1rIP...ew?usp=sharing, добавив удаление из памяти заполненные переменные msg и всё, что с ним связано. Ардуино всё равно зависает в момент чтения. Ещё видно, что она перезагружается один раз сама по себе (видно по повторному выводу надписи Start). Вот лог

Start
00
00
5A 02 01 A2
5A 02 0C 97
5A 0B 80 (08 40 9A 93 08 E4 5C FF 6B ) F3
5A 02 01 A2
5A 02 0C 97
5A 0B 80 (02 2Start
5A 02 01 A2
5A 02 01 A2
5A 02 01 A2
5A 02 01 A2
12
74
5A 02 01 A2
5A 02 0C 97
5A 0B 80 (08 96 E5 62 A7 2D 8C 17 66 ) 58
5A 02 01 A2
5A 02 0C 97
5A 0B 80 (02 5

Проблема явно где то в генерации сискона

Нашёл место зависания. Переписал

for (int i = 0; i < n-1; i++)
req[i] = response[i+1];

на

for (int i = 1; i < n; i++)
req[i] = response[i];

Осталось разобраться с генерацией сискона. Что то там не то, так как пиха дальше 0x80 не проходит. Вот лог

Start
00
00
5A 02 01 A2
5A 02 0C 97
5A 0B 80 (08 A0 25 3A DB CA 63 B9 19 ) 39
5A 02 01 A2
5A 02 0C 97
5A 0B 80 (02 D7 B3 7A E1 34 8A 03 AA ) C8
5A 02 01 A2
5A 02 0C 97
5A 0B 80 (08 28 79 7F AF 2C 05 1D CB ) 2A

...

5A 02 01 A2
5A 02 0C 97
5A 0B 80 (08 0D 91 C5 45 2B 14 D5 5E ) F8
00

dee098 27.01.2021 11:02

Цитата:

Сообщение от Valera0141 (Сообщение 1231181)
А зачем избавляться от msg = new byte[msgLength] {0x00};, если это в памяти выделяет место под массив с нужным размером, а потом его заполняет циклом из псп. Без этого в переменную какую то белеберду заносит. Или я что то не знаю?

Обновил немнгого код https://drive.google.com/file/d/1rIP...ew?usp=sharing, добавив удаление из памяти заполненные переменные msg и всё, что с ним связано. Ардуино всё равно зависает в момент чтения. Ещё видно, что она перезагружается один раз сама по себе (видно по повторному выводу надписи Start). Вот лог

За тем что нет смысла удалять и создовать динамический массив в каждом цикле. Статический намного проще. Тем болле что в новом коде ты удаляешь его не в том месте.

dee098 добавил 27-01-21 в 0:Jan p
Тоже самое могу сказать и про весь остальной код. Огромное клличество new и delete в generateSysconResponses и дочерних функциях.

dee098 добавил 27-01-21 в 0:Jan p
Мой статический код работает часами (я не тестировал его более 3 часов за раз), а ваш вылетает за десяток циклов.

dee098 добавил 27-01-21 в 0:Jan p
И самое главное добавить ответ на запрос в лог.

Valera0141 27.01.2021 11:09

Цитата:

Сообщение от dee098 (Сообщение 1231186)
За тем что нет смысла удалять и создовать динамический массив в каждом цикле. Статический намного проще. Тем болле что в новом коде ты удаляешь его не в том месте.

dee098 добавил 27-01-21 в 0:Jan p
Тоже самое могу сказать и про весь остальной код. Огромное клличество new и delete в generateSysconResponses и дочерних функциях.

dee098 добавил 27-01-21 в 0:Jan p
Мой статический код работает часами (я не тестировал его более 3 часов за раз), а ваш вылетает за десяток циклов.

Как мне объяснял один чел (который на с++ работает), правильно всегда объявлять переменные и задавать им нужный размер. Так же он сказал (да и я где то читал), что предпочтительнее писать переменные вот так byte *b, чем byte b[], и изначально им присваивать первый символ. Некоторые программисты на мк вообще переменные массивов изначально циклом заполняю пустыми значениями. По моему коду он сказал, что всё ок написано, только он не знает, как нужно накатать в генерации сискона преобразование на AES. А что не так с удалением msg ? Я же сперва выделил под него память, заполнил, потом в функции обработал, затем очистил его из памяти. Сейчас мой проект работает без зависаний и быстро. Воткнул в паралель на средний контакт пихи ещё один uart и снял полный лог (что там летает по данным).

Вот хекс файл лога с контакта https://drive.google.com/file/d/1yBE...ew?usp=sharing

Вот поправленный проект https://drive.google.com/file/d/1NsS...ew?usp=sharing

По логу компилятора места в мк занимает
RAM: 733 bytes
Flash: 5530 bytes

dee098 27.01.2021 11:16

delete [] msg; должно освобождать память после каждого цикла а не только после ответа на 0x80.

Valera0141 27.01.2021 11:32

Цитата:

Сообщение от dee098 (Сообщение 1231192)
delete [] msg; должно освобождать память после каждого цикла а не только после ответа на 0x80.

Переместил delete [] msg; после свича, чтоб удалялся после каждого цикла. Изначально не подумал, что может сообщение быть при другом коде. А что с генерацией сискона? Вот с ней бы нужна помощь. Писал на основе кода байрона 7, и вот я там что то накосячил. Предположительно, что то не так написано в byte *ECBEncryptBytes(byte *clearBytes, byte *key). Я просто толком не разобрался в этой процедуре в самом байроне, так как c# знаю поверхностно

dee098 27.01.2021 11:34

Цитата:

Сообщение от Valera0141 (Сообщение 1231191)
Вот хекс файл лога с контакта https://drive.google.com/file/d/1yBE...ew?usp=sharing

Добавь нормальный дебаг вывод ответов в свой парсер.
Сомневаюсь что кто то захочет смотреть этот лог с UARTа

Valera0141 27.01.2021 11:36

Цитата:

Сообщение от dee098 (Сообщение 1231194)
Добавь нормальный дебаг вывод ответов в свой парсер.
Сомневаюсь что кто то захочет смотреть этот лог с UARTа

Сейчас сделаю и скину лог

PSP: 5A 02 01 A2
Arduino: A5 05 06 10 C3 06 76
PSP: 5A 02 0C 97
Arduino: A5 06 06 FF FF FF FF
Arduino: 52
PSP: 5A 0B 80 (02 4A E8 4F CF F4 0E 5A 0E ) 5E
Arduino: A5 12 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Arduino: 42
PSP: 5A 02 01 A2
Arduino: A5 05 06 10 C3 06 76
PSP: 5A 02 0C 97
Arduino: A5 06 06 FF FF FF FF
Arduino: 52
PSP: 5A 0B 80 (08 83 29 FA DC 91 FB DF A6 ) 7F
Arduino: A5 12 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Arduino: 42
PSP: 5A 02 01 A2
Arduino: A5 05 06 10 C3 06 76
PSP: 5A 02 0C 97
Arduino: A5 06 06 FF FF FF FF
Arduino: 52
PSP: 5A 0B 80 (02 E1 75 19 9C 76 FE 36 1C ) 47
Arduino: A5 12 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Arduino: 42
PSP: 5A 02 01 A2
Arduino: A5 05 06 10 C3 06 76
PSP: 5A 02 0C 97
Arduino: A5 06 06 FF FF FF FF
Arduino: 52
PSP: 5A 0B 80 (08 6D 20 9A 9A C8 9E D0 96 ) 85
Arduino: A5 12 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Arduino: 42
PSP: 00

dee098 27.01.2021 11:52

Не знаю какую либу ты пользовал под aes.encrypt. Она точно сама выделяет память под ответ ?

Valera0141 27.01.2021 11:57

Цитата:

Сообщение от dee098 (Сообщение 1231199)
Не знаю какую либу ты пользовал под aes.encrypt. Она точно сама выделяет память под ответ ?

Использовал эту https://www.arduino.cc/reference/en/libraries/aeslib/. Выше скинул лог

Прошу прощения, забыл убрать return(ставил для теста) в начале процедуры generateSysconResponses. Ардуино виснет вот с таким логом

Start
PSP: 00
PSP: 5A 02 01 A2
Arduino: A5 05 06 10 C3 06 76
PSP: 5A 02 0C 97
Arduino: A5 06 06 FF FF FF FF
Arduino: 52
PSP: 5A 0B 80 (08 C6 77 D7 02 19 1C 1C 5B ) 50
Key 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Key not found
Arduino: A5 12 06 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
Arduino: 52
PSP: 5A 02 01 A2
Arduino: A5 05 06 10 C3 06 76
PSP: 5A 02 0C 97
Arduino: A5 06 06 FF FF FF FF
Arduino: 52
PSP: 5A 0B 80 (02 1E E9 08 23 B3 18 39 6A ) 78
Key 0

dee098 27.01.2021 12:08

Цитата:

Сообщение от Valera0141 (Сообщение 1231201)
Использовал эту https://www.arduino.cc/reference/en/libraries/aeslib/. Выше скинул лог

на гитхабе в их же примере они используют статический буфер под ответ
Цитата:

unsigned char ciphertext[2*INPUT_BUFFER_LIMIT] = {0}; // THIS IS OUTPUT BUFFER (FOR BASE64-ENCODED ENCRYPTED DATA)
Поэтому твой ответ забит нулями.Возможно есть еще другие баги.

З.Ы. трид начинает напоминать сбор начинающих ардуинщиков. Тебе лучше писать в лс или переходи на дискорд!

DRONx86 27.01.2021 15:19

dee098, Вообщем снял еще раз лог с указанными настройками https://yadi.sk/i/CkUHDZwCwzEkCQ https://yadi.sk/i/CkUHDZwCwzEkCQ но по мойму результат не сильно изменился https://yadi.sk/d/sBgVQYQEtcVYsw. Почему то у меня при кодеровке ASCII отображаются иероглифы (пробовал поколдовать со шрифтами и языковыми настройками ничего не помогает) https://yadi.sk/i/w7VpwmGYNz0LmQ https://yadi.sk/i/w7VpwmGYNz0LmQ. В режиме отображения HEX (16-ти ричная) отображается норм, но не по байтам, т.е. не в удобочитаемом виде https://yadi.sk/i/Z002TzS2BU-uUg https://yadi.sk/i/Z002TzS2BU-uUg.
Но главное не ка отображается на моем ПК, а как будет писаться в логах для просмотра на других ПК. Открыл разными ресурсами готовый лог и вот что у меня вышло:
- WinHex отображается в 16 ричном виде, но не по байтам https://yadi.sk/i/TIV_tsegoiGqjg https://yadi.sk/i/TIV_tsegoiGqjg;
- Notepade++ с кодировкой UTF-8 вроде читаемое но не понятно что) https://yadi.sk/i/PkCWjAWzl0NOjA https://yadi.sk/i/PkCWjAWzl0NOjA;
- EmEditor впринципе тоже самое, что и WinHex-е https://yadi.sk/i/TIV_tsegoiGqjg https://yadi.sk/i/TIV_tsegoiGqjg.

Вообщем, к чему я это все, не знаю как правильно и чем снять лог, вот если бы в БорянСваппер была такая функция или может дайте конкретную прогу, хотябы название и мануал как правильно сделать, я обязательно сделаю!
P.S. Не судите строго, я стараюсь, че могу помогу)

dee098 27.01.2021 17:36

Нажмите для увеличения

Нажмите для увеличения

Нажмите для увеличения

Нажмите для увеличения

ErikPshat 28.01.2021 02:24

Цитата:

Сообщение от dee098 (Сообщение 1231213)
Нажмите для увеличения

Ничё, красиво и компактно, мне нравится! :good:
Смотрю Атмега 328P. Помню у меня дома несколько Джейлбрейков оставались на Атмеге и на PIC, а то вдруг они сгодятся. Надо бы порыскать, куда я их засунул.

Valera0141 28.01.2021 06:57

Если кому интересно, то вот вам моя версия байрона, переписанная под ардуино. Работает отлично, проверено. Прошивку затолкать можно и на атмега 8. Писал максимально приближено к коду в бароне 7 версии. Так же в архиве залил плату. Начертил для тех (для себя), кто захочет собрать портативный АКБ пандору. Код будет немного доработан в процессе под плату (добавлю по нажатию кнопочки изменение режима и световую индикацию). Потом схему ещё перерисую на smd компоненты с использованием диода (у меня его нет на данный момент, зато микрух серии к561 коробка целая). Сегодня - завтра соберу свою же схему и выложу конечный результат на фото

https://i.ibb.co/R0BhL5P/image.png

https://drive.google.com/file/d/1O8L...ew?usp=sharing


dee098 28.01.2021 09:45

Цитата:

Сообщение от ErikPshat (Сообщение 1231226)
Ничё, красиво и компактно, мне нравится! :good:
Смотрю Атмега 328P. Помню у меня дома несколько Джейлбрейков оставались на Атмеге и на PIC, а то вдруг они сгодятся. Надо бы порыскать, куда я их засунул.

Ложится в PSP довольно плотно (сам по себе не падает). Коннектор АКБ изготовил из огрызка 40 пинного двухрядного конектора. Кнопка reset переключает режим (нормальный\сервис) и встроенный LED подсвечивает когда батарейка в сервис режиме.
Нажмите для увеличения

Valera0141 28.01.2021 18:34

Собирал свою версию платы на ардуино. Вот конечный результат
https://i.ibb.co/h78zKw9/IMG-20210128-202825.jpg

dee098 28.01.2021 19:10

Цитата:

Сообщение от Valera0141 (Сообщение 1231284)
Собирал свою версию платы на ардуино. Вот конечный результат

Литионка под платой ?

ErikPshat 28.01.2021 22:41

Valera0141, вы такие фотки делайте хотя бы в макро-режиме на телефоне. Что за микросхема?

Не могли бы вы сделать простенькую, но надёжную схему понижителя напряжения и тока для внешнего источника питания, типа популярных сейчас Power Bank, которые для зарядки телефонов, они на 5V 2,5A идут, но для питания от батарейного отсека, мне кажется многовато, можно спалить матплату на PSP.


Текущее время: 08:14. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.