With all the recent tweets and posts detailing the various PS3 keys, user an valued member of PSX-SCENE, has taken the various information and complied it together into a toolkit for those using windows!
Also attached now is pre-compiled version of 'fail0verflow' tools for windows! - Thanks to user
Here is a little pre-compiled windows toolkit for your decryption needs All yet available keys are included!
credits: geohot, ooPo, mathieulh, waninkoko
This kit contains cygwin compiled versions of tools made by the above mentioned devs. Thanks for the keys, too I did some slight changes on decrypt-self to support key files. Source code is included...
Usage:
decrypt-self.exe
decrypts self files
Usage: decrypt-self {self file} {elf file} {key file} {fix}
self file: file you want to decrypt
elf file: your output file
key file: use one of the included (e.g. "315.appkey")
all x**.appkey files are unknown fw numbers
find out on your own :)
fix: 0 (zero)
read-self.exe
shows self info
Usage: read-self {self file}
self file: file you want to decrypt
Сложно поверить что кто то из форумчан знает как ими воспользоватся
Думаю кому-нибудь может пригодиться. Инструкции и файлы в шапке.
Ну для наглядности приведу рабочий пример применения этих ключей и тулз.
Сегодня как раз понадобилось расковырять KIRK-ключи эмулятора PSP, находящегося в прошивке PS3. Собсно по данной теме: https://www.pspx.ru/forum/showthread.php?t=103710 KIRK - это криптографический блок, который железно вшит на заводе в процессор, ещё на стадии производства процессора.
Извлечь его из процессора очень и очень сложно, поэтому проще забрать его программный образ, который лежит в песочнице PSP для PS3 и эмулирует команды процессора PSP для управления песочницей.
Короче, сначала необходимо распаковать файл обновления прошивки. Я скачал прошивку 3.55PS3UPDATE.PUP.
Для декриптовки взял из шапки PS3-decrypt-tools-windows.rar и разархивировал.
Закинул туда файл прошивки PS3UPDATE.PUP и воспользовался инструкцией из шапки:
pup_unpack.exe
unpack pup files (get core_os_package.pkg, etc.)
Usage: pup_unpack {filename} {directory}
filename: your pup
directory: destination for pup contents
В коде всё расписано по порядку - Usage(использование): pup_unpack {filename} {directory}, где filename - это наш файл прошивки PS3UPDATE.PUP, а directory - это название папки, куда будет скидываться содержимое.
В общем создаю текстовой документ и пишу туда команду @echo off - это для того, чтобы в консоли не показывался всякий мусор, типа путей и т.п.. Со следующей строки пишу команду: pup_unpack PS3UPDATE.PUP FW355 и на следующей строке пишу паузу pause, чтобы окно консоли не закрвалось, иначе не будет видно, что произошло и были ли ошибки. Потом расширение у текстовика *.txt меняем на *.bat, тем самым превратя наш текстовик в исполняемый батник. Получился такой вот простенький код:
@echo off
pup_unpack PS3UPDATE.PUP FW355
pause
Итак, прошивка вся извлеклась в папку FW355. Там несколько мелких файлов текстовиков, но внимание привлекает большой архив TAR на 164 Mb. Разархивируем его, получаем огромную кучу файлов. Самые интересные из них - dev_flash_0XX.tar.aa.2010_11_27_051337 аж 22 архива TAR. Но первоначально это не просто архивы, а зашифрованные файлы SCE.
Ну а так как это файлы прошивки, то опять используем инструкцию из кода в шапке:
@echo off
fwpkg d dev_flash_000.tar.aa.2010_11_27_051337 dev_flash_000.tar
pause
И декриптуем все файлы, меняя по очереди в батнике названия каждого файла от 000 до 022.
Таким образом получается 22 декриптованных архива dev_flash_000.tar - dev_flash_022.tar.
Архиватором разархивирую их все в одну папку dev_flash, например.
Там собирается в итоге 7 папок. Меня интересует папка "pspemu". Там лежат 2 маленьких файла psp_emulator.self и psp_translator.self и ещё 2 папки с файлами прошивки PSP.
Ну для интереса декриптую эти 2 файла с интересными названиями. Для этого использую ещё одну инструкцию из шапки:
decrypt-self.exe
decrypts self files
Usage: decrypt-self {self file} {elf file} {key file} {fix}
self file: file you want to decrypt
elf file: your output file
key file: use one of the included (e.g. "315.appkey")
all x**.appkey files are unknown fw numbers
find out on your own :)
fix: 0 (zero)
Делаю сразу один батник на декриптовку обоих файлов:
И, как видно из инструкции, тут как раз потребуется ключ для этой прошивки и для этого вида файлов.
Поэтому беру ключ из спойлера KEYS и сохраняю его как 355.appkey:
Создаю файл под названием 355.appkey и вставляю туда ключи в чистом виде: erk (32 байта) и следом же riv (16 байт).
Другие ключи pub и priv не нужны. Ничего изобретать не надо, всё строго по ключевой инструкции:
key files:
first 32 bytes: erk
last 16 bytes: riv
Ну и декриптую батником эти 2 файла.
Собсно, как и ожидалось, ничего интересного в этих маленьких файлах не нашлось.
Внимательно осматриваю файлы в папках. Заинтересовали парочка файлов в папке \dev_flash\pspemu\release.
Это файлы emulator_api.sprx и emulator_drm.sprx. Ну для декриптовки этих SCE-заголовочных файлов я пошёл другим путём.
Скачал ещё другую тулзу PS3 Tools Collection 2.3.8. Программа устанавливает в папку "Документы" всю свою многочисленную коллекцию тулзов с единым GUI.
Там я зашёл во вкладку "Bruteforce Tools => Scetool GUI", просто выбрал файлы emulator_api.sprx и emulator_drm.sprx, и декриптовал легко и просто.
Внутри декриптованного файла emulator_drm.sprx обнаружился ещё один файл iso_spu_handler.sprx, который я извлёк вручную и снова так же декриптовал.
Lv1ldr crypto keys allow us to decrypt/re-encrypt the lv1ldr our self like Rebug team for example to make our own CFW.
So i had figured how to use this great tool to decrypt/re-encrypt extracted scrambled and encrypted lv1ldr from lv0 my self.
So i had decided to release this keys to help the public to do it them self also.
This keys is consist of two sets one for PPU and the other one for SPU.
4.21 4.25 4.30 4.31 4.40 4.41 4.45 4.46 lv1ldr crypto keys:
PPU erk:
31 A5 7D 41 FF 28 CD 29 72 1B 41 D3 47 F4 88 09
D0 1E 8C 70 A8 F2 97 D2 F6 52 C2 98 31 5D 9D 4F
D3 AD B7 9D 9B C5 5C 38 BF 49 F8 66 4F B8 42 81
14 5A 93 51 30 D5 A2 2A AE 06 5D 2B 35 42 17 5D
36 33 7F A7 2E 0C 24 F1 0B 86 05 BB 19 57 D8 1D
6D A1 D4 5D CE BF 6B 50 32 83 90 5B C1 F6 56 CC
D2 3F 40 82 34 77 8F BC A0 DA D6 8C 62 59 51 E2
0C 2C F0 6A 00 1C DA 65 E7 15 14 8C F1 EE B2 94
D2 C4 EA BF 96 8C FA 6F 23 60 8F 6F 62 57 F3 17
F5 3F D5 95 A6 56 ED C8 73 95 96 EA 6F 25 42 92
17 EC 43 91 56 6D 33 0D B1 FE 95 CD F4 5B 9F 3B
PPU riv:
B5F9F0E46307DBFA5F54BE397475E2BB
SPU erk:
E0 44 C1 E2 9C 53 FE F2 E0 64 E3 12 07 D0 9D 48
67 67 19 78 9D 59 E5 C1 F0 04 D0 02 39 0F 23 60
83 50 EB CC CA 16 A6 9A 08 E2 A8 13 F1 8B 92 EF
68 8B 16 3C B6 C4 78 1F 02 85 AE AD 4D AB 0F D2
55 5A 7B 10 D8 7D A8 C9 25 71 36 54 6E 1A 6A 33
78 2D C8 C1 B1 A8 88 A3 FB 20 00 EF BC 12 DE 7F
FC 6E C4 0E C3 78 2C 8C 53 62 5B 96 E7 23 34 E6
70 73 EC 2C 03 95 A5 DB 0A 1C AC A1 19 E6 1A 86
AD A4 40 1A DD 1C C7 64 A0 C2 DB 4D 58 E1 3F 8B
23 51 5A B7 50 DC ED 2B AE 62 6C CE 7F D0 72 42
E2 BF 4D 25 03 28 27 98 E4 A7 36 AC C3 88 41 2D
SPU riv:
20385B4B1819FD8E691BBEF17001392B
Also i had created a test files package that include this keys to test it your self.
This file contain an encrypted lv1ldr.self named as lv1ldr-enc extracted from decrypted lv0, this will be decrypted using PPU keys.
and encrypted root scrambling key named as root-key-enc extracted from decrypted lv1ldr.self, this will be decrypted using SPU keys.
Just feel free to test it your self and add them to the wiki
Продолжив листать тот же файл - emulator_drm.sprx, я вдруг обнаружил, что внутри спрятан ещё один файл с заголовком SCE, как и положено быть зашифрованному файлу SPRX. Он находится сразу после ключей 0xD916xxF0 в секции iso_spu_handler в позиции 0x8000 и практически почти до самого конца.
Изъяв и декриптовав этот файл, с самого начала сразу пришло ощущение, что это вовсе не программный код. А так оно и есть - это регистры процессора, самый настоящий ассемблерный код.
Самое интересное находится в самом конце файла. Там идут раздельные 4 секции кода - 2x256 байт (0x100) и 2x336 байт (0x150):
1-ая секция (AES128 Forward S-box)
Ну тут понятно, взглянув на первые же цифры в коде, сразу узнаваем алгоритм шифрования AES128. Этот код всегда можно встретить в любых исходниках, где используется шифрование, обычно в файле AES.c или AES128.c. Этот механизм признан во всём мире, как стандарт шифрования, разработанный Rijndael: "The Advanced Encryption Standard (Rijndael, aka AES)"
Эта секция кода называется Forward S-box.
Посмотреть и сравнить этот фрагмент кода можете, например, здесь: http://en.wikipedia.org/wiki/Rijndae...#Forward_S-box
А теперь просто сравните последнюю 4-ую секцию в спойлере над головой с кодом kirk7 в исходниках kirk_engine.c Для лучшей наглядности продублирую его здесь (то же самое, что во 2-ом посту):
Что это даёт?
Дело в том, что из известных ранее ключей, которые каким-то образом сдампили когда-то, нам полезны только ключи со скрамблер-кодами 0x4B и 0x5D, которые относятся к игровым кодам "Game EBOOT.BIN". На этом всё, все остальные KIRK-ключи нам не дают никакой пользы, потому что все остальные файлы прошивок, демо-игр, программ и всего прочего, подписаны ключами со скрамблер-кодами совершенно другими, которые отсутствуют в данном известном списке.
Обратите внимание на номера известных ключей KIRK (выделено красным):
kirk7_key02
kirk7_key03
kirk7_key04
kirk7_key05
kirk7_key07
kirk7_key0C
kirk7_key0D
kirk7_key0E
kirk7_key0F
kirk7_key10
kirk7_key11
kirk7_key12
kirk7_key38
kirk7_key39
kirk7_key3A
kirk7_key44
kirk7_key4B
kirk7_key53
kirk7_key57
kirk7_key5D
kirk7_key63
kirk7_key64
Эти красные номера - ни что иное, как номера скрамблер-кодов приватных ключей KIRK-а, которым назначены публичные ключи, лежащие в прошивке.
А каждый публичный ключ соответствует своему "Тегу", который прописан в заголовке любого зашифрованного файла.
Таким образом, файлы шифруются и декриптуются KIRK-ом в соответствии со скрамблер-кодом.
Например файлы EBOOT.BIN игр ISO/UMD шифруются и дешифруются ключем kirk7_key5D со скрамблер-кодом 0x5D. С каждой новой версией прошивки, Sony постоянно к этому скрамблеру добавляет новые "Теги" в прошивку, которыми криптуются и декриптуются испольняемые файлы игр EBOOT.BIN. Вот почему новые игры с новыми тегами нельзя запустить на старых прошивках и Sony заставляет обновиться на новую, чтобы поиграть в новую игру. Вот для примера часть списка тегов со скрамблером 0x5D:
Именно потому, что мы знаем этот ключ - kirk7_key5D, поэтому мы уже можем подписывать собственным заголовком любые игровые EBOOT.BIN для PSP. Наглядный пример тому программа SEBOOT. И вполне вероятно, что среди этого клада найденных новых Кирков в эмуляторе PSP для PS3, могут найтись подходящие под наши потребности kirk-ключики. Тем самым мы сможем сами подписывать файлы других видов, например DEMO GAME, имеющих скрамблер-код 0x60.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Последний раз редактировалось ErikPshat; 13.03.2014 в 15:45.