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

moju 15.09.2019 12:31

Спасибо заработало с PSN игры
а с дисковой игры пишет ...illeal input file format not a SELF
peror: No error


но всё равно СПАСИБО мне главное что что-то одно заработало

ErikPshat 15.09.2019 21:01

Цитата:

Сообщение от moju (Сообщение 1193256)
а с дисковой игры пишет ...illeal input file format not a SELF
peror: No error

Ну так очевидно, тот дисковый EBOOT.BIN совсем не тот за кого себя выдаёт. Видимо вы недокачали дисковый образ, поэтому тот EBOOT.BIN извлёкся испорченным. Вы хоть посмотрите внутренности его, наверняка он вообще не SCE и даже не ELF, может быть там внутри только одна строка текста "Привет Мир!", а вы пытаетесь его декриптовать :D

jekakmv 16.09.2019 15:13



jokvader 23.08.2020 01:15

Недавно узнал что репаки для CFW непойдут на HEN прошивке, из-за того что слишком старые.
А что бы это исправить нужно пофиксить репак при помощи этой программы.
Где то есть понятный туториал как при помощи scetool делается этот фикс?
На пример этот же пресловутый CS:GO для PS3 от d30n пофиксить.

in1975 23.08.2020 20:12

jokvader, https://www.pspx.ru/forum/showthread.php?t=109279

alexgp 28.09.2020 10:07

Этой прогой нужно переподписать инфемос фестиваль крови для хена ?

ErikPshat 28.09.2020 21:51

Цитата:

Сообщение от alexgp (Сообщение 1221967)
Этой прогой нужно переподписать инфемос фестиваль крови для хена ?

А что там переподписать? Когда она готовая к употреблению лежит: https://www.pspx.ru/forum/showpost.php?p=1183104
Да, для самостоятельного переподписывания вам понадобится именно этот комплект утилит.

alexgp 30.09.2020 15:07

Цитата:

Сообщение от ErikPshat (Сообщение 1222002)
А что там переподписать? Когда она готовая к употреблению лежит: https://www.pspx.ru/forum/showpost.php?p=1183104
Да, для самостоятельного переподписывания вам понадобится именно этот комплект утилит.

да уже увидел )

rupor 12.04.2022 18:46

Вроде как последний scetool 0.3.1 и еще какие-то утилиты https://www.psx-place.com/threads/he...scetool.36975/

in1975 13.04.2022 08:17

Интересно.
ebootromexplode

Код:

#!/bin/sh

if [ $# -ne 2 ] ; then
    echo "Usage: pupexplode <pup> <out_dir>"
    echo "pupexplode expands all important files in a PUP and tries to decrypt every file as a self"
    exit 1
fi

pup=$1
outdir=$2

cosunpack $pup $outdir || exit

cd $outdir || exit

cosunpack nand_update nand
cd nand

for f in NAND_UPDATE.pkg.*; do
    unpkg $f ${f}_unpkg || exit
    cat ${f}_unpkg/content >> mega_content.bin || exit
done

cd ..

cosunpack ros coreos
cd coreos

for f in *.pkg; do
        unpkg $f ${f%.pkg}
done

cd ..

cosunpack coreos/CORE_OS_PACKAGE/content coreos/CORE_OS_PACKAGE/

for k in $(find . -name "*.self" -or -name "*.sprx" -or -name "*.isoself" -or -name "*ldr" -or -name "*lv0"); do
        scetool -p ~/data -d $k ${k}.elf
done

ebootromexplode060
Код:

#!/bin/sh

if [ $# -ne 2 ] ; then
    echo "Usage: pupexplode <pup> <out_dir>"
    echo "pupexplode expands all important files in a PUP and tries to decrypt every file as a self"
    exit 1
fi

pup=$1
outdir=$2

cosunpack $pup $outdir || exit

cd $outdir || exit



cosunpack ros coreos
cd coreos

for f in *.pkg; do
        unpkg $f ${f%.pkg}
done

cd ..

cosunpack coreos/CORE_OS_PACKAGE/content coreos/CORE_OS_PACKAGE/

for k in $(find . -name "*.self" -or -name "*.sprx" -or -name "*.isoself" -or -name "*ldr" -or -name "*lv0"); do
        scetool -p ~/data -d $k ${k}.elf
done

ebootromexplodedec
Код:

#!/bin/sh

if [ $# -ne 2 ] ; then
    echo "Usage: pupexplode <pup> <out_dir>"
    echo "pupexplode expands all important files in a PUP and tries to decrypt every file as a self"
    exit 1
fi

pup=$1
outdir=$2

cosunpack $pup $outdir || exit

cd $outdir || exit

cosunpack lv0_bank0 lv0_out
cosunpack individual indiv
cd indiv
cosunpack individual_1 one
cd ..

cosunpack os coreos
cd coreos

for f in *.pkg; do
        unpkg $f ${f%.pkg}
done

cd ..

cosunpack coreos/CORE_OS_PACKAGE/content coreos/CORE_OS_PACKAGE/

for k in $(find . -name "*.self" -or -name "*.sprx" -or -name "*.isoself" -or -name "*ldr" -or -name "*lv0"); do
        scetool -p ~/data -d $k ${k}.elf
done

pupexplode

Код:

#!/bin/sh

if [ $# -ne 2 ] ; then
    echo "Usage: pupexplode <pup> <out_dir>"
    echo "pupexplode expands all important files in a PUP and tries to decrypt every file as a self"
    exit 1
fi

pup=$1
outdir=$2

pupunpack $pup $outdir || exit

cd $outdir || exit

mkdir update_files
cd update_files
tar xvf ../update_files.tar || exit

for f in dev_flash*; do
    unpkg $f ${f}_unpkg || exit
    tar xvf ${f}_unpkg/content || exit
done

for f in *.pkg; do
    unpkg $f ${f%.pkg}
    if [ $f = "CORE_OS_PACKAGE.pkg" ]; then
        cosunpkg CORE_OS_PACKAGE/content CORE_OS_PACKAGE/
    fi
done

for k in $(find . -name "*.self" -or -name "*.sprx" -or -name "*.isoself" -or -name "*ldr" -or -name "*lv0"); do
        scetool -p ~/data -d $k ${k}.elf
done



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

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