с возможностью восстановления PSP-3000 на базе TA-090 и TA-092
За чуть более, чем десять лет все пользователи PSP-3000 и позднее свыклись с тем, что их консоли не поддаются восстановлению в домашних условиях из соображений "безопасности" Сони. По сей день владельцы этих консолей боятся брика, как огня. Поскольку гарантия на все PSP уже закончилась, брикнутые PSP поздних моделей отправляются разве что на запчасти, либо в долгий ящик, откуда бы не вернулись никогда... если бы не существовала эта тема
Благодаря усердному труду известных хакеров сцены PlayStation (zecoxao, Proxima, Mathieu Hervais) на костях до недавнего времени закрытой темы по взлому батарейки Пандоры на PSP-3000 было продолжено дело Бори - были успешно сдамплены прошивки системных контроллеров некоторых поздних моделей, а из них были получены ключи системного контроллера, используемые для генерации шифрованных запросов 0x80 и 0x81, отсутствие которых в потребительских батарейках поставило крест на легкодоступной Пандоре. Proxima создал скрипт, позволяющий генерировать требуемые ответы.
Применить это к физическим PSP можно только при наличии эмулятора контроллера батарейки - того, что мы всей командой хотим Вам представить.
Видеоинструкция по анбрику PSP-3000 (доступны русские субтитры!)
Демонстрация работы BaryonSweeper на 3000 TA-090 (спасибо Yoti за снятие проклятья безэкрания!)
BaryonSweeper стал возможен благодаря:
M4j0r - помощь в эксплуатации глюка Voltage Fault Injection сискона;
Wildcard, Sean Shablack aka Kyp40 aka FBIsoBOT - Эксплуатация глюка и дамп сискона;
Proxima - обратная разработка прошивки сискона, скрипт генерации ответов на запросы аутентификации;
khubik - код эмулятора батарейки, порт скрипта генерации ответов, дизайн интерфейса;
dogecore - порт скрипта генерации ответов, починка потоков, код интерфейса;
Mathieu Hervais - код хоумбрю decrypt_os2, decrypt_sp;
SSL/Zerotolerance - возможность обратного шифрования для расшифрованных файлов;
zecoxao - порты decrypt_os2 и decrypt_sp на ПК, обеспечение платами, помощь в порте скрипта генерации ответов;
Yoti - улучшения decrypt_sp, MSID Dumper, PSP-3000 для тестов (<3), участие в теме взлома Пандоры PSP-3000;
EriKPshat - информация о JigKick, участие в теме взлома Пандоры PSP-3000, инструкции по созданию комплектов Пандоры, создание официального сервисного комплекта JigKisk PSP-100x/200x из дампа оригинальной сервисной карты;
Boryan, lport3, dx3d, stasik007 и многие другие из темы взлома Пандоры PSP-3000 - записи коммуникации батарейки и PSP, обратная разработка протокола коммуникации, схемы аппаратного обеспечения для взаимодействия с PSP и многое другое...
PSP-1000: поддерживаются все модели, необходимости в клоне официальной карты JigKick нет.
PSP-2000: поддерживаются все модели; клон официальной карты JigKick или DdC V9 необходим только TA-088v3 (DATE CODE 8C).
PSP-3000: частичная поддержка, матплатам от TA-093 и старше требуется официальной карты JigKick - 90v2 и 92 могут использовать DdC V9!
TA-095v1 (DATE CODE 0C, 0D) - поддерживается в pysweeper, требуется клон карты JigKick
TA-095v1 (DATE CODE отсутствует) - поддерживается в pysweeper, требуется клон карты JigKick
TA-095v2 (DATE CODE 1A, 1B, 1C, 1D) - поддерживается в pysweeper, требуется клон карты JigKick
PSP-N1000 (PSPgo) - не поддерживается
PSP-E1000 (PSP Street) - поддерживается, но отсутствует образ карты
Поддержка моделей, указанных в списке как неподдерживаемые ожидается и вводится по мере дампа и обратной разработки прошивок системных контроллеров. Точных дат нет, просим вас не требовать добавить новые консоли - это будет сделано сразу же, как только будут получены ключи для конкретной модели. Также идёт поиск решения проблемы с отсутствием дампов карт JigKick, способных восстанавливать консоли с минимальной версией прошивки 6.30 и выше - скорее всего, поддержка таких консолей появится в последнюю очередь.
Решение нашлось - уважаемые draanPSP и balika001 смогли создать собственную карту Пандоры со своим IPL, поэтому теперь зависимости от официальных карт JigKick у нас больше нет https://twitter.com/balika011/status...917561345?s=20
Создание аппаратной части эмулятора батареи
Для изготовления потребуется конвертер из USB в TTL (подойдёт Arduino с замкнутыми RESET и GND), резистор на 10 кОм, диод 1N4148 и немножко креатива с тем, как подключить землю и сам однопроводный UART (он же K-Line) к PSP, причём не допустив к среднему контакту родную батарею PSP
Авторский метод - через жертвенную батарею либо изоляцию контакта на уже существующей. Не забудьте соединить земли USB-TTL с PSP, иначе ничего не заработает.
Альтернативу реализовал dee098 - вам не потребуется компьютер и USB-TTL-адаптер, лишь Arduino, что делает возможным реализацию портативного инструмента восстановления. Пока только для продвинутых пользователей, способных без посторонней помощи поменять ответы на требуемые запросы, скачать здесь - pspSerial_v01_20210116 (1).7z
Если хотите превратить вариант с Arduino / ATMega328p в конечный продукт и у вас хватает на это усидчивости и терпения - Valera0141 с некоторой помощью от dee098 сделал свой проект портативной сервисной батарейки.
Что такое USB-TTL преобразователь?
USB-TTL преобразователь определяется в системе как последовательный порт, обеспечивая согласование уровней и, собственно, связь с устройствами, использующими UART (как в нашем случае). Может быть исполнен в схожести в флешкой или как кабель.
Коммуникация с устройствами происходит через пины RX (как правило - белый) и TX (как правило - зелёный). Также обязательно соединять землю. Для общения с PSP нам требуется объединить 2 провода в 1 - для этого необходимо сделать переходник на однопроводный UART. Схемы даны ниже.
Предельно простая схема переходника на однопроводный UART (K-Line) и подключение к USB-TTL на диоде и резисторе
3.3 - 5V - питание
Ground - земля
PSP middle contact - однопроводная шина, идущая в средний контакт PSP
Не забывайте про цоколёвку микросхем (дуга слева). Не забудьте соединить резистором на 200-300 ом замкнутые нижние крайние две ноги с третьей справа верхней ногой.
Схема переходника на однопроводный UART (K-Line) и подключение к USB-TTL для CD4011 и её полных аналогов
Выполняется по аналогии с предыдущим за исключением чуть другого расположения выводов.
Если вы собрали всё правильно, убедились в наличии общей земли между адаптером, консолью и компьютером, желательно всё прозвонили - попробуйте запустить COM-терминал (например, Termite), подключиться к USB-TTL и вставить псевдобатарею (если у вас нет возможности чем-то заменить контактную группу батарейки, можете попробовать такой способ - использовать родную батарею, изолировав средний контакт и поместив на его место проводок от однопроводной шины). Если увидите пакеты типа 5A 02 01 A2 - поздравляем, собрали правильно, можете приступать к следующему шагу.
Если что-то не заработало - убедитесь в работоспособности USB-TTL адаптера, в правильности и надёжности подключения и в том, что земля адаптера соединена с землёй PSP - это обязательно! Если не заработает, можете попробовать поменять TX и RX местами - они могут быть перепутаны на самом адаптере
В противном случае, собирайте один из двух вариантов с микросхемой.
Насчёт этого вам следует обратиться за инструкцией в любую из этих тем:
Вставьте карту памяти (с обычной Пандорой или клоном официального JigKick по необходимости) в PSP.
Подключите свой USB-TTL преобразователь, к которому прилажен переходник на однопроводный UART (K-line), ведущий в PSP.
Скачайте и распакуйте архив с программой последней версии и откройте baryonswp.exe. Как правило, он лежит в папке baryonswp/bin/Release.
Убедитесь, что земли всех звеньев в цепи связаны, иначе ничего не выйдет!
Нажмите на кнопку Start Service и подключите вашу PSP. Соединение будет логироваться в Connection Monitor.
Для запуска в сервисный режим укажите серийный номер FFFFFFFF.
Если PSP или COM-порт будут отключаться при подключении батареи к PSP - вероятно, не хватает тока.
В сервисном режиме дождитесь надписи "OK" на весь экран. Процесс восстановления завершён.
Всем удачного поднятия кладбищ, ждите вестей о более поздних моделях. В архиве с каждой версией- исходный код на растерзание.
Критические обновления (с поддержкой новых моделей) будут отмечены зелёным цветом.
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
вот тут ардуино зависает намертво при попытке чтения сообщения, причину пока найти не могу, где то явно утечка в памяти по коду
Последний раз редактировалось Valera0141; 27.01.2021 в 08:53.
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};
Тем болле что освобождения памяти я в твоем коде не увидел.
Последний раз редактировалось dee098; 27.01.2021 в 09:42.
Причина: добавил, подумав
Похоже на то что ваш <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
Похоже на то что ваш <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). Вот лог
А зачем избавляться от 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
И самое главное добавить ответ на запрос в лог.
Последний раз редактировалось dee098; 27.01.2021 в 11:02.
Причина: добавил, подумав
За тем что нет смысла удалять и создовать динамический массив в каждом цикле. Статический намного проще. Тем болле что в новом коде ты удаляешь его не в том месте.
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 и снял полный лог (что там летает по данным).
delete [] msg; должно освобождать память после каждого цикла а не только после ответа на 0x80.
Переместил delete [] msg; после свича, чтоб удалялся после каждого цикла. Изначально не подумал, что может сообщение быть при другом коде. А что с генерацией сискона? Вот с ней бы нужна помощь. Писал на основе кода байрона 7, и вот я там что то накосячил. Предположительно, что то не так написано в byte *ECBEncryptBytes(byte *clearBytes, byte *key). Я просто толком не разобрался в этой процедуре в самом байроне, так как c# знаю поверхностно
dee098, Вообщем снял еще раз лог с указанными настройками https://yadi.sk/i/CkUHDZwCwzEkCQ но по мойму результат не сильно изменился https://yadi.sk/d/sBgVQYQEtcVYsw. Почему то у меня при кодеровке ASCII отображаются иероглифы (пробовал поколдовать со шрифтами и языковыми настройками ничего не помогает) https://yadi.sk/i/w7VpwmGYNz0LmQ. В режиме отображения HEX (16-ти ричная) отображается норм, но не по байтам, т.е. не в удобочитаемом виде https://yadi.sk/i/Z002TzS2BU-uUg.
Но главное не ка отображается на моем ПК, а как будет писаться в логах для просмотра на других ПК. Открыл разными ресурсами готовый лог и вот что у меня вышло:
- WinHex отображается в 16 ричном виде, но не по байтам https://yadi.sk/i/TIV_tsegoiGqjg;
- Notepade++ с кодировкой UTF-8 вроде читаемое но не понятно что) https://yadi.sk/i/PkCWjAWzl0NOjA;
- EmEditor впринципе тоже самое, что и WinHex-е https://yadi.sk/i/TIV_tsegoiGqjg.
Вообщем, к чему я это все, не знаю как правильно и чем снять лог, вот если бы в БорянСваппер была такая функция или может дайте конкретную прогу, хотябы название и мануал как правильно сделать, я обязательно сделаю!
P.S. Не судите строго, я стараюсь, че могу помогу)
Ничё, красиво и компактно, мне нравится!
Смотрю Атмега 328P. Помню у меня дома несколько Джейлбрейков оставались на Атмеге и на PIC, а то вдруг они сгодятся. Надо бы порыскать, куда я их засунул.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Если кому интересно, то вот вам моя версия байрона, переписанная под ардуино. Работает отлично, проверено. Прошивку затолкать можно и на атмега 8. Писал максимально приближено к коду в бароне 7 версии. Так же в архиве залил плату. Начертил для тех (для себя), кто захочет собрать портативный АКБ пандору. Код будет немного доработан в процессе под плату (добавлю по нажатию кнопочки изменение режима и световую индикацию). Потом схему ещё перерисую на smd компоненты с использованием диода (у меня его нет на данный момент, зато микрух серии к561 коробка целая). Сегодня - завтра соберу свою же схему и выложу конечный результат на фото
Ничё, красиво и компактно, мне нравится!
Смотрю Атмега 328P. Помню у меня дома несколько Джейлбрейков оставались на Атмеге и на PIC, а то вдруг они сгодятся. Надо бы порыскать, куда я их засунул.
Ложится в PSP довольно плотно (сам по себе не падает). Коннектор АКБ изготовил из огрызка 40 пинного двухрядного конектора. Кнопка reset переключает режим (нормальный\сервис) и встроенный LED подсвечивает когда батарейка в сервис режиме.
Valera0141, вы такие фотки делайте хотя бы в макро-режиме на телефоне. Что за микросхема?
Не могли бы вы сделать простенькую, но надёжную схему понижителя напряжения и тока для внешнего источника питания, типа популярных сейчас Power Bank, которые для зарядки телефонов, они на 5V 2,5A идут, но для питания от батарейного отсека, мне кажется многовато, можно спалить матплату на PSP.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram