rustot, привет! Хорошая работа.
Хотя нет. Ниасилил. Поставил Strawberry, сохранил исходник как IPLDecrypt.pl. Запустил батник из этой папки с командой C:/strawberry/perl/bin/cpan Math::Random::MT Что-то там долго компилилось, но потом непонятно что вышло ))). В папке span образовалась куча файлов, но не имеющих отношения к программе. А как экзешник скомпилить, я так и не въехал. Залей лучше на www.slil.ru |
бинарник залью вечером, он дома. компилить ничего не нужно, cpan поставил недостающую либу и теперь достаточно выполнить "perl IPLDecrypt.pl part2_nandipl_01g.bin main.bin", при этом psp_bios.bin должен лежать в текущей папке
кстати psp_bios.bin оказывается и есть весь pre-ipl, а не его кусок. там все, и инит оборудования и загрузка ipl с nand или стика и его декриптовка и запуск. а ipl поддерживает две версии pre-ipl, старый который есть у нас и новый, который еще никто не добыл. "if( $sum == ord(substr($ipl,0x28A0)) ) {" как раз патчит ключ в случае если pre-ipl оказался не той версии rustot добавил 16-02-2010 в 21:23 http://slil.ru/28660285 2 декриптованных модуля, второй требует дополнительной декриптовки kirk rustot добавил 16-02-2010 в 21:36 ErikPshat, сможешь декриптовать на psp? это тот же код которым например ipl декриптуется, команда №1, ключи не нужны |
Вложений: 2
Цитата:
Щас попробую дальше... А нельзя просто выдернуть декриптованный IPL полностью? Кстати, что-то в main.bin не нашёл в прямом виде ключей. Слышал ещё про payload.bin, который находится тоже упакованный в main.bin и в котором эти ключи уж точно содержатся. Просто я исследовл main.bin от 2.00, и там ключи лежали на поверхности. Цитата:
Я-же всё-таки не программист, а просто любитель, поэтому мне не совсем понятны команды №1 и т.п. Вот во вложении Пёрл-PC-декриптер. Декриптует он part2_nandipl_0Xg.bin, извлечённый и частично декриптованный (1-ая секция) PSARDumper-ом или программой "IPL Decrypt Sample" от SilverSpring-а. |
Цитата:
как именно - я не очень в курсе, должны быть какие-то готовые тулзы. код должен выглядеть примерно так: Код:
u8 buf[0x80000]; |
В упоминавшемся чуть выше IPLSDK есть функция
int pspKirkProc(void *dst,u32 dsize,void *src,u32 ssize,u32 cmd); которая делает приблизительно тоже самое. Может быть просто сделать IPL для мультилоадера, который сделает все необходимые действия. |
Цитата:
в принципе на psp даже и декриптовать не надо, зная код можно брекпоинты в нужные места вставить и сдампить уже декриптованное из памяти. но только эти нужные места будут от версии к версии меняться |
Цитата:
|
Цитата:
|
Такс, что дальше?
|
Цитата:
Только я хз как его скармливать KIRK, полностью, кусками по 0x1000 байт, начиная сначала или со смещения 0x90 и т.п. |
Цитата:
rustot добавил 17-02-2010 в 22:12 это из обычного приложения можно делать, как psardumper, не в режиме загрузки ipl |
Вобщем я стал искать описание структуры PspKirkRegs и нашел у SilverSpring http://my.malloc.us/silverspring/200...ect-hw-access/
Там он декриптит с помощью KIRK блоками по 0x1000. |
Цитата:
|
А это что за KIRK Crypto Engine
|
kirk это и есть главная тайна psp, аппаратная криптовалка. и если часть команд у нее известно что делает и воспроизводима программно, лишь бы знать ключи, то команда №1 тайна за семью печатью, ключей не требует и работает только в одну сторону - на декриптование. а симметриная функция криптования доступна только сони. вот и получается, что декриптовать и посмотреть код от сони мы можем (при наличии ломаной psp для доступа к кирку) а вот собственный код закриптовать так, чтобы его поняла psp - не можем.
то что я выше в качестве примера привел и есть прямой доступ к кирку, KIRK_HW_REGISTER_ADDR там равен 0xBDE00000 |
Цитата:
Вот ещё инфу надыбал: http://silverspring.lan.st/NPSPTD_01.txt Это отсюда: http://www.lan.st/showthread.php?p=16132#post16132 Ага, вижу тебя там ) |
Цитата:
Вобщем код, для расшифровки я попробовал написать еще позавчера, но он как всегда не работает, а отладить/потестить мне нечем. Псплинк заставить работать у меня не получается. На файле который нужно расшифровать, моя psp просто выключается (не виснет как при косячном коде, а просто выключается, мгновенно) А править код SilverSpring во второй раз мне чот уже как-то =). |
stillllll, ну моя PSP полностью заряжена и ждёт указаний =)
Кстати, пробовал декриптить nandipl_01g.bin от 6.20 с помощью декриптера от СильверСпринга, то на выходе получается точно такой-же файл, как из PSARDumper-a part2_nandipl_01g.bin. Но вот nandipl_02g.bin и nandipl_03g.bin дампер Сильвера уже не берёт, выдаёт ошибку. Хотя PSARDumper выдаёт нормальный part2_nandipl_02g.bin, но вот part2_nandipl_03g.bin уже никто не даёт =) Пёрл 01g отлично дампит и 02g дампит. Сначала забыл расширение поменять. И ещё, смотрел я долго в main.bin на этот код, как будто он там зашифрован: Скрин |
Ну так что. Результаты уже есть и на этом остановились =)
И наверное они должны храниться в памяти друг за другом, а не затирать друг друга. Кстати, есть ещё такие проги "Kernel Damper Sample" из pspsdk и "DAMPKMEM" с исходниками от TiRaNiD. Причём первая работает и на 3.хх kernel и выводит мизер информации, а вторая работает только на 1.5 kernel и выводит кучу всякой инфы на экран. Скрины Например какой-то файл boot.bin (1Mb) и kmem.bin (4Mb). |
да, иметь полностью декриптованный ipl было бы хорошо.. его можно вручную загружать в нужной последовательности вместо зашифрованного и так загрузить прошивку. а потом уже патчить расшифрованный ipl легко и прочие файлы.
|
Цитата:
хорошо бы вообще кто-нибудь организовал на базе psp онлайн http сервис, типа принимает файл, засылает его через usb на psp, на которой крутится в цикле программка вычитывающая в цикле файл с определенным именем, отдает его kirk, результат складывает обратно в файл, http отсылает его обратно. живее б дело шло |
rustot, могу сейчас попробовать запрограммить, если пришлешь чего прогнать через kirk.
|
Цитата:
http://slil.ru/28660285 main2_enc.bin - вот его нужно подсунуть кирку целиком как есть, а не 4к кусками как ipl, это один сплошной криптованный кусок. но код (команды кирку) тот же каким декриптовались 4k куски ipl. на выходе должен получиться gzip, то есть первый байты 1F 8B main.bin - он уже декриптован, это первая часть запускаемая из ipl, которая в числе прочего декриптует то что лежит в main2_enc.bin. после его декриптовки суммарно получаем декриптованным весь ipl который изначально грузится в память. соответственно в нем заведомо должны быть ключи которыми он декриптует остальное подгружаемое с флэшки в дальнейшем |
Вложений: 2
держи...
|
отлично, спасибо. вроде ничего больше криптованного не видно
|
Итак, это все части ipl у нас теперь есть? От какой это точно прошивки?
Вечером пройдусь по ним дизассемблером посмотрю какая часть чего инициализирует и по каким адресам грузит следующую. Потом можно будет попробовать записать их в расшифрованном виде вместо зашифрованных частей. Ключи мне из них не интересны, ну а кто их хотел тоже теперь все есть. |
это 6.20
pre_ipl грузится с BFC00000, пересылает кусок себя в 80010000, оттуда покусочно грузит ipl по тем адресам какие в заголовках 4k блоков указаны. нынче это 40EC000 у загруженного ipl, несмотря на то что его весь декриптовали кирком реально декриптованы только первые 10к, которые и декриптуют все остальное первым декриптуется и распаковывается по адресу 4000000 то что обозвано у меня main.bin. на него и передается управление. тот сначала декриптует 256-байтный кусок получая из него 32 байта каких то двух ключей (см дамп выше), оставляет декриптованное в BFC00200 для последующего использования. потом декриптует сначала софтом а потом кирком то что названо main2_enc.bin, вот адрес не помню куда складывает, там 8 и 6, типа 8060000 или 8600000 или как то так. там это все в начале main.bin, найти не сложно rustot добавил 25-02-2010 в 17:29 дальше я не разбирался, решил дизасм свой сварганить сначала, интеллектуальный :) |
Цитата:
спасибо вощем. вечером дальше буду смотреть. надо объединить усилия, подумать, чего мы хотим этим достичь в первую очередь. я вот как писал хочу прежде всего загрузиться с расшифрованного ipl, чтобы убедиться, что все правильно сделали. потом патчить что надо. |
Цитата:
Код:
//80010000: lui R4, 0x8001 |
а, в этом смысле.. а я чего-то привык уже)) ну pspdecompiler есть, с исходниками..
|
Вложений: 1
Цитата:
Вот эти теги с ключами меня вообщем-то и интересовали. То есть, теги видны, а ключи остаётся дизасмить. Скрин Дело в том, что до сих пор нету ключей от прошивки 5.50 и 5.55, поэтому системные модули пока не декриптуются. А так-же, нету конечно ключей от 03g и 04g модулей, у которых ключи одинаковые. Вот на всякий я закинул, что есть из ipl (5.50, 5.55, 6.хх), во вложение. |
так там очень просто, собственно как в любом дешифраторе prxов после преобразовани заголовка.
Код:
SceUID fd = sceIoOpen("ms0:/enc.bin", PSP_O_RDONLY, 0); |
Цитата:
|
Повторное криптование
Вопрос ко всем и к Rustot в частности (поскольку у него личка не пашет ввиду отсутствия профиля):Если есть криптованный и декриптованный один и тот же файл, возможно даже и ключ, то возможно ли найти алгоритм повторного криптования декриптованного файла так чтобы закриптованный файл стал полность работоспособным ?
|
Цитата:
а практически как-то вот что-то пока не очень. правда datel вон умеют закриптовывать свои бинарники... кстати, для достижения желаемого результата надо сидеть и долго смотреть на два дателовских бинарника. у них разные заголовки для kirk по 0x40 байт и разное тело, а расшифровываются они в одно и то же. можно сделать некоторые выводы.. |
Кто может посоветовать какой нить софт для криптовки/декриптовки с использованием ключа, работающий на PC. И есть ли какие нить проги анализирующие два файла (криптованный и декриптованный) и дающие какие нить рекомендации что ли по переводу одного в другое... И где можно посмотреть инфу по алгоритмам применяемым в кодировании софта PSP (это точно AES или какой то еще метод применяется)? может где то есть исходники PRX-декрипторов которые работают на PC а не на PSP ?
|
пытаюсь загрузить первую часть ipl вручную с карты - не грузится, но и не виснет, ничего не происходит, а 3 часть виснет.. вторую не могу попробовать пока..
не понятно, почему ipl от оригинальной прошивки из прошивки запускается, а с карточки нет... |
Текущее время: 17:52. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.