PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Софт для PS3 (https://www.pspx.ru/forum/forumdisplay.php?f=300)
-   -   scetool & ps3tools - утилиты де/криптовки файлов PS3 (https://www.pspx.ru/forum/showthread.php?t=106465)

rhish777 11.11.2017 12:37

ErikPshat, НЕ распаковываются pkg файлы прошивки. dev_flash.tar все распаковались.

UPD


Вот эти параметры - это и есть закрытый ключ ECDSA.
ECDSA
Код:

==> Keyset Example <==
 [metldr]
type=SELF
revision=000A
version=0003005500000000
self_type=NPDRM
erk=03C21AD78FBB6A3D425E9AAB1298F9FD70E29FD4E6E3A3C151205DA50C413DE4
riv=0A99D4D4F8301A88052D714AD2FB565E
pub=3995C390C9F7FBBAB124A1C14E70F9741A5E6BDF17A605D88239652C8EA7D5FC9F24B30546C1E44B
priv=009AC6B22A056BA9E0B6D1520F28A57A3135483F9F
ctype=27


Но их должно быть очень много. Он не единственный.
После прошивки 355 метод шифрования изменился.
Мне нужно получить свой priv=000000000000000000000000000000000000000000 для проверки.

Как взломали PS3

E2E41 07.12.2017 13:23

оставлю здесь

ErikPshat 24.01.2018 07:04

Вложений: 1
Обновление scetool by Sorvigolova

Updated to v.0.3.0

- Added Internal keys support.
- Added Signed Elf ver.2 decryption support.
- Decrypting header will now use key-bruteforce method.
- Options changed.
- Removed Pub/Priv configs, enabled all features by default.

Имейте в виду, что изменились названия команд (смотрите в консоли).
Например, --sce-type на --category, --self-auth-id -self-vendor-id --self-type на --program-auth-id --program-vendor-id --program-type и т.д.
Добавлены ключи в файл "internal_keys"
Во вложении экзешник с ключами и исходниками.

Fireball 07.02.2018 02:47

Тоже очень интересен секрет генерирования рандомного числа k для ECDSA подписей. В эмуляторе kirk на PS3 используют ch74 для генерирования 32 битного рандомного числа, затем отрезают от него 1 байт, и собирают в буфер из 0х28 таких байт, а потом сравнивают полученное большое число в буфере по модулю N. Этот N берут из параметров эллиптической кривой. Если разгадать секрет генерации этого k для ключей лоадеров, то можно повынимать все остальные недостающие priv ключи. Если же при 2 одинаковых k, для подсчёта priv (числа dA) сокращались переменные k, то при известных 2 числах k можно использовать метод подстановки.

ErikPshat 07.02.2018 13:57

Fireball, верно говоришь, вот на практитке реальный механизм ECDSA на примере декриптовки IPL-загрузчика у PSP: https://github.com/ErikPshat/ipltool

Fireball 08.02.2018 11:58

Цитата:

Сообщение от ErikPshat (Сообщение 1129038)
Fireball, верно говоришь, вот на практитке реальный механизм ECDSA на примере декриптовки IPL-загрузчика у PSP: https://github.com/ErikPshat/ipltool

Всё понятно. Тут делают srand(time(0)); а потом получают рандом и сравнивают его по модулю 0xFF rand() % 0xFF
такими остатками от деления заполняют буфер, пока число в буфере не будет больше, чем число N. Полученное в буфере число используется в качестве числа k.
А дальше всё как обычно: G умножаем на k и берём абсциссу полученной точки в качестве R и тд.
Интересно

ErikPshat 16.02.2018 01:23

Ещё одно обновление scetool.exe

in1975 16.02.2018 02:51

ErikPshat, скомпилируешь?

ErikPshat 16.02.2018 08:17

Вложений: 1
in1975, так вот он готовый лежит: https://github.com/Sorvigolova/sceto...master/Release
Команды немного другие.
Код:

scetool 0.3.0 (C) 2011-2013 by naehrwert
NP local license handling (C) 2012 by flatz
USAGE: scetool [options] command
COMMANDS                Parameters            Explanation
 -h, --help                                    Print this help.
 -k, --print-keys                              List keys.
 -i, --print-infos      File-in              Print SCE file info.
 -d, --decrypt          File-in File-out      Decrypt/dump SCE file.
 -e, --encrypt          File-in File-out      Encrypt/create SCE file.
OPTIONS                  Possible Values      Explanation
 -v, --verbose                                Enable verbose output.
 -r, --raw                                    Enable raw value output.
 -t, --template          File-in              Template file (SELF only)
 -0, --category          SELF/RVK/PKG/SPP      SCE File Type
 -1, --compress-data    TRUE/FALSE(default)  Whether to compress data or not.
 -s, --skip-sections    TRUE(default)/FALSE  Whether to skip sections or not.
 -2, --key-revision      e.g. 00,01,...,0A,... Key Revision
 -m, --meta-info        64 bytes              Use provided meta info to decrypt.
 -K, --keyset            32(Key)16(IV)
                        40(Pub)21(Priv)1(CT)  Override keyset.
 -3, --program-auth-id  e.g. 1010000001000003 Authentication ID
 -4, --program-vendor-id e.g. 01000002        Vendor ID
 -5, --program-type      LV0/LV1/LV2/APP/ISO/
                        LDR/NPDRM            Program Type
 -A, --self-app-version  e.g. 0001000000000000 Application Version
 -6, --self-fw-version  e.g. 0003004100000000 Firmware Version
 -7, --self-add-shdrs    TRUE(default)/FALSE  Whether to add ELF shdrs or not.
 -8, --self-ctrl-flags  32 bytes              Override control flags.
 -9, --self-cap-flags    32 bytes              Override capability flags.
 -a, --self-indiv-seed  256 bytes            Individuals Seed (ISO only)
 -b, --np-license-type  LOCAL/FREE            License Type
 -c, --np-app-type      SPRX/EXEC/USPRX/UEXEC App Type (U* for updates)
 -f, --np-content-id                          Content ID
 -l, --np-klicensee      16 bytes              Override klicensee.
 -g, --np-real-fname    e.g. EBOOT.BIN        Real Filename
 -j, --np-add-sig        TRUE/FALSE(default)  Whether to add a NP sig. or not.


in1975 16.02.2018 08:27

ErikPshat, в шапку добавил источник

ErikPshat 16.02.2018 08:38

in1975, хотя в прошлый раз вон выше я тоже писал прог обновление и там так же версия у него scetool 0.3.0.

Fireball 20.02.2018 03:41

Ребята, там же ничего особо не поменялось в самом последнем обновлении, просто был исправлен лоадер эллиптических кривых vsh. Версию менять не зачем.
Этот лоадер пока что используется для подписи NPDRM self файлов, а так как нет подлинного приватного ключа для неё - толку мало. Есть публичный ключ только, его можно использовать только для проверки таких подписей, в чем тоже смысл не велик.

Fireball 07.05.2018 08:26

В общем, чтобы нам разгадать секрет генерирования числа K, нам надо понять, что же за байты они берут по модулю N.
Формула: k = x mod N.
где k и N - числа длиной в 20 байт,
x - некоторое число длиной в 40 байт.

Число N нам известно, это порядок используемой эллиптической кривой. Оно есть в параметрах кривых.

UPD:
Что мы имеем:
1) число k было постоянным для сигнатур с криптофейлами в пределах одного ключсета (разные ключи и одинаковые N дают разные k).
2) если изменять число x в пределах числа N, то число k будет меняться на разницу (x_второе - x_первое).
3) для всех сигнатур в .pkg файлах были одинаковые RS, при одинаковых hash от подписываемых данных.
То есть число k оставалось неизменным при неизменном хеше от подписываемых данных.

UPD2:
Надо вот что попробовать:
если для .pkg / .edat файлов число k "подсаливают", а соль вполне себе может быть равной sha1 хешу от данных, для некоторых случаев, будет справедливо уравнение:
(k_первое - k_второе) = (h_первое - h_второе)
где k_первое, k_второе - секретные числа первой сигнатуры и второй сигнатуры ,
h_первое, h_второе - хеши sha1 от подписываемых данных для первой и второй сигнатуры соответственно.
а т.к хеши - числа известные, то можно попробовать выразить k_второе через k_первое методом подстановки.
k1 - k2 = h1 - h2
k2 = k1 + (h2 - h1)
и попробовать использовать это для подсчёта прив ключа dA для edat и pkg.
Если облом: можно еще попробовать использовать не весь хеш, а только последние его 8 байт.

rhish777 16.05.2019 21:26

Код подписи для HEN если кому то надо подписать HOMEBREW
Код:

scetool --verbose --skip-sections=FALSE --sce-type=SELF --compress-data=TRUE --key-revision=0A --self-app-version=0001000000000000 --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-ctrl-flags=0000000000000000000000000000000000000000000000000000000000000000 --self-cap-flags=00000000000000000000000000000000000000000000003B0000000100020000 --self-type=NPDRM --self-fw-version=0003005500000000 --np-license-type=FREE --np-app-type=EXEC --np-content-id=UP0181-FCEU90000_00-MLBTVPS3US000001 --np-real-fname=EBOOT.BIN --encrypt EBOOT.ELF EBOOT.BIN


Такой код используется в вебмен. Если кастомное приложение все равно не запустилось, то в коде нет ошибки. Значит на HEN его пока что запустить нельзя.

np-content-id можно в коде ставить любой. На работоспособности приложения не отображается.

in1975 16.05.2019 21:39

это я использовал для *.sprx, sman так заработал, но работает нестабильно, видимо нужно код перебирать.

Код:

        @scetool -0 SELF -1 TRUE -s FALSE -2 04 -3 1070000052000001 -4 01000002 -5 APP -6 0003004000000000 -A 0001000000000000 -8 4000000000000000000000000000000000000000000000000000000000000000 -9 00000000000000000000000000000000000000000000007B0000000100020000 -e $(PPU_PRX_TARGET) $(PPU_SPRX_TARGET)
в догонку еще один код.

Ang3l42 16.05.2019 21:56

Цитата:

Сообщение от in1975 (Сообщение 1180836)
в догонку еще один код.

Он не увидит :D

rhish777 17.05.2019 00:39

Цитата:

Сообщение от Ang3l42 (Сообщение 1180840)
Он не увидит :D

Так там всего три варианта. Просто некоторые плагины работают без сжатия. А некоторые только с сжатием.
Как говориться HEN пока не стабилен ко всем подписям.

ErikPshat 26.06.2019 22:22

Вложений: 1
На всякий случай сделал файл закладок HBK для Hex Workshop: ELF PS3 File Format.hbk (архив всех закладок во вложении в шапке).
Как пользоваться закладками? - подробно расписано в теме Hex Workshop

Там разложил по полочкам формат EBOOT.ELF. Вдруг кому-то понадобится вычислить размер заголовка ELF, размер в виртуальной памяти и прочие данные:


moju 15.09.2019 11:24

не могу расшифровать пишет
[*] Loaded keysets.[*] Loaded loader curves.[*] Loaded vsh curves.[*] Using keyset [appldr 0x0010 03.61][*] Error: Could not load IDPS.[*] Error: Could not decrypt header.
или
[*] Loaded keysets.[*] Loaded loader curves.[*] Loaded vsh curves.[*] Error: Could not process D:\Data3\EBOOT.BIN
вторая ошибка с дисковой версией

ErikPshat 15.09.2019 11:50

moju, установите PS3 Tools Collection по пути по умолчанию.
Там всё это есть. Можете декриптовать с помощью C:\PS3\ps3tools\tools\scetool\ScetoolGuiPSPx.exe

Но проще, зайдите в папку C:\PS3\ps3tools\tools\EDAT_ReENCRYPT
Файлы кидайте в папку ENC
И декриптуйте батником EBOOT SELF SPRX ReENCRYPT for HEN.bat


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

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