Как выдрать IPL в декриптованном виде? А именно, в этом IPL лежит файлик в GZIP-формате main.bin из которого извлекается payload.bin. Так вот, ключи к ядру прошивки лежат именно в нём.
Говорят, что можно сдампить декриптованный IPL прямо во время загрузки ядра, в тот момент, когда PRE-IPL в кирке декриптует IPL. А как пойдёт загрузка системы, то ипл стирается из памяти моментом. У меня уже есть полная коллекция всех ключей включая 5.50. Но вот фактически по одному ключу к каждой модели к системным файлам, даже для 5.50 ни у кого нет до сих пор. Вот здесь, кстати, ребята уже этот вопрос обсуждали, но я что-то никак не въеду, каким макаром они там что-то ковыряют =) И здесь что-то непонятное написано: http://forums.ps2dev.org/viewtopic.php?t=3573 Кстати, вот СильверСпринг выложил тут рабочий код, как он говорит, для декриптовки IPL 6.00. mc707, может что-нибудь придумаешь: Код |
Цитата:
|
mc707, ну он писал, что как раз в 6.00 они изменили способ шифрования.
Здесь ещё интересная тема. И здесь тоже. |
Цитата:
- из первого ключа и пришедшего с preipl сида делаем хэш - этим хэшем инитим псевдослучайный генератор. - в цикле: --- берем с генератора 64 байта --- из второго ключа и этих 64 байт делаем второй хэш --- ксорим им 28-байтный кусок данных алгоритм полностью воспроизводим, но сид видимо можно добыть только расковыряв pre-ipl, про ключи тоже непонятно но вроде они во флеше а не в pre ipl |
Цитата:
|
rustot, в 6.00 поменялся адрес IPL. По моему он сдвинулся на один байт, ну и алгоритм cha поменялся.
Там-же, на максконсоли СильверСпринг об этом подтвердил. Что он выложил туфту, я не верю, потому как это очень профессиональный кодер. Он полный SDK по Нидам раскопал до 5.00 прошивки и ещё много чего на PSPDEV. Так что, я думаю, что код он выложил правильный, т.к. фейки пускать не в его правилах. Просто может он написал псевдокод, в котором нужно подставить нужные значения. Наверное он как-бы даёт намёки, для тех, кто в этом понимает. Его декриптер IPL есть в сети, причём с исходниками, так что можно его подправить и потестить. |
Цитата:
а вот то что раскриптовывает данные именно на старый адрес навевает мрачные подозрения, что это просто еще один уровень криптования добавили. и после декриптовки в 40F0000 окажется опять старый и по старому криптованный ipl rustot добавил 11-02-2010 в 01:06 вот трэйс как mt инитится 0x040EC050: $a0 = 0xBFC00040 0x040F007C: jal sub_040ED15C -- главная процедура декриптования 0x040ED170: move $a1, $a0 0x040ED1D8: jal sub_040EE494 -- инит mt19937 0x040F24A0: sw $a1, 4($a0) -- вот seed складываем в первый элемент |
rustot, эмм, ну сам понимаешь, что инструкции декриптовки в PRE-IPL заложены в ядро процессора ещё на заводе. Так что поменять механизм декриптовки уже никак не получится Sony. Только выпустив новый процессор. Хотя они могли сделать задел на будущее и заранее заложить несколько разновидностей инструкций декриптовки.
Поэтому я не представляю, что там можно поменять в шифровании. Вероятно действительно решили воспользоваться следующей второй зарезервированной инструкцией. А может заложили это программным методом в IPL. В принципе, даже если они сдвинули IPL, то и старый дешифратор его всё равно найдёт. А уже по скрамблер-коду, заложенному в IPL, определит метод шифрования. И PRE-IPL получит инструкции из самого IPL. Вот я тоже думаю, что данные Ксорятся. Но для XOR нужен ключ - или однобайтовый или состоящий из точно такого-же количества байт, как и область дешифровки. |
не, я же играюсь уже с первоначально декриптованным ipl. тот что известен как dec_ipl.bin. preipl его уже считал с флэшки, раскриптовал и положил в память. кто-то когда-тоя научился этот процесс воспроизводить и я пользуюсь результатом
но этот ipl декриптован лишь слегка, первые 8к нормального кода, а остальное опять криптовано и раскриптовывают его уже эти 8к кода, без участия pre_ipl. вот это я и пытаюсь раскриптовать. вот с этой криптовкой сони вольны играть произвольно от версии к версии, совместимость с preipl от этого не меняется |
rustot, ну в принципе у меня есть тоже самое. IPL от 6.20, в котором декриптуется только начало, а всё остальное фигвам.
Вообщем задача состоит в том, что нам нужен файл main.bin, который лежит в IPL, и причём лежит он там в GZIP-архиве, почти в начале. Вот в этом файле лежит главный 16-байтный ключ декриптовки системных файлов прошивки. Для каждой модели FAT, SLIM, BRITE он свой отдельный. Получается, для каждой прошивки требуется 3 ключа, чтобы декриптовать все системные файлы EBOOT.PBP прошивки. А в системных файлах лежат уже сотня ключей декриптовки игр, несистемных файлов, и всего прочего. Говорят, что этот main.bin выползает наружу и вынимает из кармана свой ключ во время включения PSP, чтобы расшифровать системные файлы и запустить прошивку. После этого он стирается из памяти. Вот у меня и болит голова, каким-же образом снять дамп памяти во время загрузки??? |
а можно мне dec_ipl от 6.20 заполучить? а то че я 6.0 ковыряю, я думал 6.20 еще не вытащили
|
rustot, ну так PSARDumper 6.20 его вытаскивает и декриптует начало. Точно так-же, как и Simple_IPL_Decript от Сильвера.
Они складываются в папку "PSARDUMPER". Недекриптованный IPL вытаскивается вполне корректно в файлы:
rustot, ты хоть зарегистрируйся что-ли нормально или активируй свой аккаунт. А то сидишь, как "Гость". Наверное при регистрации указал, что тебе меньше 13-ти, вот и кукуешь. Или просто в личном кабинете нужно что-то настроить. |
Цитата:
|
Цитата:
Тогда вот. Полностью разложенные и декриптованные PSARDumper-om файлы 6.20: http://slil.ru/28635506 |
Цитата:
ага, спасибо, значит можно не париться пока и продолжать ковырять 6.0. потому-что декриптованная часть кода отличается от 6.2 всего восемью байтиками. потом просто сравню и проверю про что они. rustot добавил 12-02-2010 в 23:57 блин, чтоб раскриптовать нужен дамп памяти BFC00000-BFC04000 на момент запуска ipl, то есть это может сделать только самопальный ipl. кто-нибудь занимался этим? rustot добавил 13-02-2010 в 00:13 точнее BFC00000-BFC01000. нужно собрать с iplsdk дампер этого куска памяти в файл. в инете готовый не могу найти |
Цитата:
А как вот снять дамп во время запуска PSP? Например, после запуска, снять дамп памяти легко. То есть, ты имеешь ввиду, что нужно в IPL подсунуть команду на запуск дампера? |
Цитата:
или из под готового ipl - PSP MS MultiLoader из sdk запустить програмку которая сдампит, я надеюсь этот хакерский ipl память не трет. или его модифицировать чтоб сам сдампил |
rustot, вот здесь:
Код:
int main(void) Код:
int main(void) |
это единственное чего мне сейчас не хватает, код я весь расковырял и распаковать знаю как. а что это за процедурка, кто-то уже дампил что ли? подойдет от любой версии psp, эти данные не могут меняться, иначе бы прошивки были несовместимы с разными моделями
|
rustot, не совсем понял тебя, чего не хватает, какой код расковырял и как распаковал )))
Про процедурку - это исходник KDumper из PSPSDK. В принципе изначально он видать всю память дампит с запасом, аж на 100'000 единиц. А запустить я думаю вот как. Например взять кастомный IPL от 5.50GEN. Он начинается с области пред-IPL, которая как раз и есть кастомная - это просто-напросто файл pspbtcnf.bin, в котором записаны пути к системным файлам прошивки и метки режимов, какой файл в каком режиме имеет право запускаться. После этого файлика pspbtcnf.bin идёт начало официального IPL, т.е. оффIPL в кастомпрошивке получается сдвинутым далее, по сравнению с IPL без кастомобласти, т.е. официальной прошивки. То есть, можно добавить в него (pspbtcnf.bin) строчку с путём к дамперу. И при запуске IPL, тут-же сработает дампер, снимет память и сохранит на карточку или во Flash0. |
не хватает BCF00000-BCF00FFF для того чтобы раскриптовать IPL, вытащить из него тот самый main.bin. расковырял соответственно код ipl которые все это декриптует и распаковывает, знаю алгоритм, знаю все ключи, кроме того единственного что остался в BCF00000 от предзагрузчика
только дампер не должен пользоваться системными вызовами для доступа к файлам, потому-что в этот момент системы в памяти еще нет. в iplsdk для этого есть собственная либа с поддержкой fat32. то есть взять iplsdk, собрать кастомный ipl, проверить что он запускается. потом поправить его, вставив куда-нибудь вызов: ms_save_file('ms0:/ipl/bcf_dump.bin, (const char*)0xBCF00000, 0x1000) и запустить снова |
Если у тебя нет IPL для сравнения, то я тебе щас их закину и напишу что и где находится.
Файл pspbtcnf.bin тоже находится в запакованном виде - это обычный текстовик. Его нужно распаковать, добавить строчки и назад запаковать. Ну а ты сможешь реализовать это с iplsdk. И где его взять, я что-то у себя не нашёл? Кстати, можешь пока посмотреть, как выглядет main.bin в проше 2.00: https://www.pspx.ru/forum/attachment....9&d=1263976309 Не знаю, хватит у тебя прав скачать с секретного отдела. |
так а я то что с этим всем буду делать? у меня же нет ломаной psp чтобы я мог на ней ipl собственного изготовления стартануть. старый main.bin мне ничем не поможет, тот кто его смог вытащить стопудово сдампил для этого BCF00000 но вот в открытый доступ не выложил
файлы которые стартуют из списка pspbtcnf.bin наверняка не являются нормальными приложениями, ты не можешь туда вписать какую-нибудь обычную тулзу, потому-что она попытается вызвать системные функции, а система еще не загружена. то есть туда надо вписывать такой файл который умеет напрямую с регистрами работать для записи во флэш. проще сам ipl поправить, там уже есть такие функции iplsdk.7z я не помню где отдельно видел, но он есть например внутри этого архива - http://narod.ru/disk/13354518000/371...ndDump.7z.html (только архив огромный, 300 мег) rustot добавил 13-02-2010 в 04:29 еще желательно перед дампом вставить код REG32(0xBC100050) |= 0x7000 REG32(0xBC100078) |= 2 REG32(0xBE24000C) = 1 REG32(0xBE240000) |= 1 REG32(0xBC10007C) |= 1 это код из оригинального ipl, перед тем как он начинает читать из BFC00000, вполне возможно что этот код изменяет карту памяти и без него этот адрес не будет досупен rustot добавил 13-02-2010 в 04:34 офигеть, только сейчас заметил, там уже есть этот код! int main(void) { Kprintf("ENTER:%s\n",__title__); ... ms_save_file(BIOS_FILE_NAME,(void *)0xbfc00000,0x1000); } то есть достаточно это дело запустить так как в ридмишке написано и на стике появится /psp_bios.bin, который мне и нужен |
rustot, не понимаю, как ты что-то там ковыряешь. не имея прошитой PSP :D
Нужно ведь ещё проверять. А этот архив-же мой и есть ))). Это я дампил все IPL-ы от своей PSP и выложил для тренировок. Ты отсюда наверное его стянул: https://www.pspx.ru/forum/showthread....352#post822352 И что, там есть iplsdk ))). Ща гляну. А дампил main.bin от 2.00 тоже я. Зачем выкладывать в открытый доступ. У нас есть скрытый раздел для хакеров, так что мы там кое-какие секреты обсуждаем и выкладываем. А ты-бы лучше зарегистрировался по нормальному, может тебе тоже туда дали бы доступ, т.к. я смотрю ты нехило в программировании и дизасме разбираешься. Хакер наверное каой-нибудь ))) |
так я надеялся что ты сдампишь. мне прошитой psp не хватает только для этого, все остальное я сделаю без нее. уже готовый бинарник есть, нужно только запустить
зарегиться я не могу нормально там че то глючит, считает что мне 13 лет независимо от введеной даты |
Ну ты мне тогда дай инструкции к действию, а то я уже подзабыл, что-где у меня лежит и о чём разговор ))). И лучше бы ты код, который нужно вставить сразу добавил бы в iplsdk, а я его сам скомпилю. А то мне нужно всё поднять и вникнуть поглубже.
|
Декриптовка IPL
да не нужно ничего вставлять и компилить. в iplsdk есть каталог ML_BIOS_DUMPER и там лежит именно та прога которую нужно запустить, и она создаст файл /psp_boot.bin на флешке, который мне и нужен
судя по тому что написано в ридмишке, нужно установить кастомный ipl_ms.bin, так же как его ставят когда ломают, каким то там батником. потом pspboot.bin скопировать в ms0:/ipl/ipl.bin, загрузиться с нажатым LTRG (это я не понял что такое L+R что ли? rustot добавил 13-02-2010 в 05:08 или как вариант прописать этот pspboot.bin в тот самый pspbtcnf.bin rustot добавил 13-02-2010 в 05:16 вот мультилоадер с инсталяшкой http://dl.qj.net/download/psp-ms-multiloader-ipl.html. вот после его установки и надо будет подсунуть ipl.bin из iplsdk/ML_BIOS_DUMPER |
rustot, я понял, о чём ты мне всё рассказывал. Всё это про изготовление комплекта Пандоры. Чтобы записать загрузчик в скрытую область на карту памяти. Щас я глянул эти sdk про LTRG, про pspboot.bin.
Это немного из другой оперы ))). Всё это я когда-то, года 2 назад, знал и юзал наизусть ) Но мысль вообще в правильном направлении. А Пандора и TimeMachine сейчас делаются более современными методами. Чтобы тебе более вникнуть в суть, то нужно посмотреть эту тему: https://www.pspx.ru/forum/showthread.php?t=77904 Там в "Способе №2. Для PSP с официальной прошивкой", залей себе файлы Пандоры на карту памяти. Они извлекаются из программы "PSPGrader". Просто, для изучения. Это тебе наверняка поможет и натолкнёт на путь истинный. Ты посмотришь и сравнишь IPL на карте памяти с теми, которые я дампил из Nanda.
Вот здесь полный набор PSP IPL SDK v0.5. |
Цитата:
rustot добавил 13-02-2010 в 14:06 [QUOTE=ErikPshat;866961]Вот тут и происходит загрузка прошивки. В этот момент нужно дампить память.[/LIST] нет, тут уже поздно, вся память перелопачена к этому моменту. надо чтобы сдампил ipl.bin запущенный из мультилоадера |
Цитата:
|
Цитата:
|
rustot, ага.
Всё разобрался. Пришлось изучать старые редми. Вроде всё восстановил в памяти. Это всё делалось старыми первыми тулзами по изготовлению Пандоры. Я ведь по-началу всё пытался своей Пандоре DC8 скормить. Потом пытался TimeMachine, но в ответ тишина. Потом всё-таки понял, что все эти причиндалы работали немного по другому в первых версиях Пандор. В общем я опять вернулся на Пандору 3.80. Ведь сам-же писал и подготавливал её ))). Там мультизагрузчик другой и нужны вспомогательные файлы прошивки 1.50. В принципе от первой Пандоры, в 3.80 почти ничего не изменилось, только появился мультизагрузчик. Короче я щас сижу на 5.00 М33 и у меня начинает что-то получаться. Получилось снять дамп BIOS. Но вот там есть ещё дампер main.bin, а он почему-то никак не реагирует. Позже попробую с 6.20 снять. Но что-то говорилось, что там адресация сменилась? |
main.bin скорее всего не получится так халявски снять, дампер не пытается его распаковать, а пытается поймать момент когда он уже сам распаковался в памяти и наверное это сработает только с той версией прошивки, под которую он писался, а не с любой.
можешь попробовать заменить patch_point = search_long_jump(0x040f0000,0x040f1000,0x04000000); на patch_point = search_long_jump(0x040ec000,0x040ed000,0x04000000); может получится но мне нужен только дамп биоса, main я вытащить тогда смогу сам без psp, с любой версии rustot добавил 14-02-2010 в 06:41 ps. и наверное с заменой адресов тоже не получится. он пытается найти инструкцию J 0x400000, а там сейчас переход по регистру $R25 = 0x4000000, jr $R25 |
rustot, ну это понятно, что main.bin можно итак вычислить по 1F8B )).
Но вот Биос какой-то странно маленький выходит ровно на 4096 байт. Хотя в самом конце чётко вижу надпись: Copyright (C) 2004,2005 Sony Computer Entertainment Inc. All rights reserved Ну я щас прошьюсь на 6.20 и скину тебе psp_bios.bin |
это не биос на самом деле. просто так назвали :) это просто служебные данные какие-то, оставленные в памяти pre_ipl. они используются только для вычисления ключа. gen_random(buf, 0x1000), for(i in 0..1023) buf[i] += bufBFC00000[i]. gen_key(buf, key). вот я и не могу получить key не зная что лежало в BFC00000
rustot добавил 14-02-2010 в 06:52 ps. и я думаю они будут одинаковы и для 1.0 и для 6.20, иначе бы прошивки не подходили к разным версиям материнок, а sony вынуждена совместимость держать |
Вложений: 1
Вот пока глянь на Биос от 5.00. Правильно ли всё получилось?
|
вроде все правильно, теперь пишу декриптовщик, как напишу выложу. с 6.20 стоит ковыряться только чтоб окончательно убедиться что под ней psp_bios.bin будет абсолютно тот же
|
rustot, ты был прав.
Снял биос от 6.20 и сравнил с 5.00 - они абсолютно идентичны! |
замечательно, значит распаковщик будет универсальным :) пока в лоб не получилось, стал смотреть внимательно - в алгоритме hmac_sha224 они похоже поменяли константы. извращенцы. придется пересматривать код внимательнее, я то просто увидел константы от sha224 и дальше в этот код не смотрел, думал стандарт
|
аттачить мне не дает, так что исходник только, сможешь main.bin вытащить сам
Универсально пока не получилось, вот это для 6.20 подходит. там их почему-то 2 разных ipl с 2 разными main.bin - part2_nandipl_01g.bin и part2_nandipl_02g.ipl. может это для разных версий материнок разные грузятся если перла нет, то ставишь http://strawberryperl.com/ и потом cpan Math::Random::MT Код:
#!/usr/bin/perl -w вот на эти данные желательно напустить kirk, очень вероятно что на выходе будут искомые ключи Код:
0xAA, 0x76, 0x91, 0xDC, 0xB1, 0x25, 0x49, 0x0D, вот так выглядит стартовый код main.bin. в 0xBFC00000 лежат 256 байт положенные туда из ipl, после decrypt() они выглядят так как выше заквочено, а дальше идет kirk, это только на psp можно сделать (если никто еще не сломал его, ведь откуда-то знают что он AES делает, но как именно не говорят) Код:
decrypt(0, 0, 0x400D580, 0x400D5C0, 0xBFC00000, 0x100) мне уже раскриптовали. не те это ключи, это известные Цитата:
|
Текущее время: 09:50. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.