PDA

Просмотр полной версии : scetool & ps3tools - утилиты де/криптовки файлов PS3


Страницы : [1] 2

ErikPshat
22.11.2016, 11:09
scetool v0.2.9.2

Консольная утилита для де/криптовки файлов PS3 + GUI

12145
scetool (C) 2011-2013 by naehrwert
NP local license handling (C) 2012 by flatz

==> Setup <==
- /data/keys : Keyfile.
- /data/ldr_curves : Loader curves (7744 bytes).
- /data/vsh_curves : VSH curves (360 bytes).
- /data/idps : IDPS as binary file
- /data/act.dat : act.dat
- /rifs/* : *.rif files
- /raps/* : *.rap files

==> Keyfile Format <==
[keyname]
type={SELF, RVK, PKG, SPP, OTHER}
revision={00, ..., 18, 8000}
version={..., 0001000000000000, ...}
self_type={LV0, LV1, LV2, APP, ISO, LDR, UNK_7, NPDRM}
key=...
erk=...
riv=...
pub=...
priv=...
ctype=...

==> Keyset Example <==
[metldr]
type=SELF
revision=00
self_type=LDR
erk=0000000000000000000000000000000000000000000000000000000000000000
riv=00000000000000000000000000000000
pub=0000000000000000000000000000000000000000000000000000000000000000000000000000 0000
priv=000000000000000000000000000000000000000000
ctype=00

==> NPDRM Key(set) Names <==
- [NP_tid]: Title ID OMAC1 key.
- [NP_ci]: Control info OMAC1 key.
- [NP_klic_free]: Free klicensee.
- [NP_klic_key]: klicensee key.
- [NP_idps_const]: IDPS constant.
- [NP_rif_key]: rif key.
- [NP_sig]: Footer signature ECDSA keyset.

==> Override Keyset <==
It should be a single hex-string consisting of:
32 bytes (Key) 16 bytes (IV) 40 bytes (Pub) 21 bytes (Priv) 1 byte (CType).

==> History <==
Version 0.2.9.2
- Extended Info for ELF Header and other types.
- Added keysets 19, 1A, 1B 1C 1D for 3.74 - 4.81 FW.
Version 0.2.9.1
- Minor update 0.0.1 --self-fw-version for APP by someone
http://www.maxconsole.com/threads/uniofficial-minor-update-to-scetool.31333/
Version 0.2.9
- Plaintext sections will now take less space in metadata header keys array.
- Added option to specifiy a template SELF to take configuration values from.
- Added option to override the keyset used for en-/decryption.
- Fixed NP application types.
- [Firmware Version] will now be written to control info only.
- [Application Version] will now be written to application info only.
Version 0.2.8 (intermediate release):
- Fixed minor bugs where scetool would crash.
- Added SPP parsing.
- Decrypting RVK/SPP will now write header+data to file.
Version 0.2.7:
- Added local NP license handling.
- Added option to override klicensee.
- Added option to disable section skipping (in SELF generation).
Version 0.2.5:
- Added option to use provided metadata info for decryption.
- "PS3" path environment variable will now be searched for keys/ldr_curves/vsh_curves too.
Version 0.2.4:
- Added option to display raw values.
- Moved factory Auth-IDs to <public build> (as they are on ps3devwiki now).
Version 0.2.2:
- Added options to override control/capability flags (32 bytes each).
- Fixed where a false keyset would crash scetool when decrypting a file.
- Some source level changes and optimizations.
Version 0.2.1:
- zlib is required to use scetool.
- 'sdk_type' was changed to 'revision' in data/keys.

==> Greetings to <==
- ps3dev.net
- you know who you are!

==> Trivia <==
http://bit.ly/QUji89
Последние изменения

Version 0.2.9.2

- Extended Info for ELF Header and other types.
- Added keysets 19, 1A, 1B 1C 1D for 3.74 - 4.81 FW.



Инструкция по использованию:

Удерживая SHIFT, в папке с утилитой нажмите правой кнопкой в пустом месте папки и выберите "Открыть окно команд".
В открывшемся окне консоли введите команду: scetool - вы увидите полный список команд.
Для русской версии введите в консоли команду: scetool_ru - вы увидите полный список команд на русском.
Так же, вы можете воспользоваться графической оболочкой GUI (только для EBOOT.BIN): запустите файл ScetoolGui.exe

По кнопке "Help" выводится список всех команд;
По кнопке "Show Keys" выводится список имеющихся ключей для разных прошивок;
По кнопке "Show File Info" выводится информация о загруженном EBOOT.BIN.

scetool 0.2.9.2 <PRIVATE BUILD:ErikPshat> (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, --sce-type 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, --self-auth-id e.g. 1010000001000003 Authentication ID
-4, --self-vendor-id e.g. 01000002 Vendor ID
-5, --self-type LV0/LV1/LV2/APP/ISO/
LDR/NPDRM SELF 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.Пример декриптовки EBOOT.BIN:scetool.exe --decrypt EBOOT.BIN EBOOT.ELF


Пример шифрования EBOOT.BIN:scetool.exe --sce-type=SELF --compress-data=TRUE --skip-sections=TRUE --key-revision=0A --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-type=APP --self-app-version=0001000000000000 --self-fw-version=0003005500000000 --self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 --encrypt EBOOT.ELF EBOOT.BINРасшифровка параметров:
Знак [B]= (равно) указывать не обязательно, а в сокращённых командах запрещено, только через пробел или вообще без пробела.

--sce-type=SELF // указываем тип SCE, могут быть SELF/RVK/PKG/SPP
--compress-data=TRUE // указываем сжимать или нет, выставляем одно из двух - TRUE/FALSE(default)
--skip-sections=TRUE // указываем пропускать секции или нет, одно из двух - TRUE(default)/FALSE
--key-revision=0A // указываем Ревизию ключа в зависимости от прошивки - 00, 01, ..., 1D.
--self-auth-id=1010000001000003 // указываем ID Аутентификации, для ретэйл-игр и обновлений - всегда такой.
--self-vendor-id=01000002 // указываем ID Производителя, для CoreOs/dev_flash files/Games - всегда такой.
--self-type=APP // указываем тип приложения, для дисковых игр - APP, для PSN игр - NPDRM.
--self-app-version=0001000000000000 // указываем версию приложения, тут просто v1.0
--self-fw-version=0003005500000000 // указываем версию прошивки, под ревизию ключа 0A идёт прошивка 3.55
--self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 // 32 байта capability флаги
--encrypt EBOOT.ELF EBOOT.BIN // указываем, что производим шифрование ELF в BIN


Тоже самое, только сокращёнными параметрами: scetool -0 SELF -1 TRUE -s TRUE -2 0A -3 1010000001000003 -4 01000002 -5 APP -A 0001000000000000 -6 0003005500000000 -9 00000000000000000000000000000000000000000000003B0000000100040000 -e EBOOT.ELF EBOOT.BIN

Скачать: :download: scetool_v0.2.9.2.zip (https://www.pspx.ru/forum/attachment.php?attachmentid=14296) (полная сборка с GUI и исходниками)
Скачать: :download: ps3tools.7z (https://www.pspx.ru/forum/attachment.php?attachmentid=18233) (сборник утилит комплекта ps3tools)
Источник 1: :github: https://github.com/naehrwert/scetool
Источник 2: :github: https://github.com/nevik-xx/psl1ght/tree/master/tools/scetool
Источник 3: :github: https://github.com/euss/ps3tools - ps3tools (компиляция: `autoreconf -i; ./configure; make; make install')
Источник 4: :github: https://github.com/ErikPshat/scetool

Ветка 3.0 (изменены команды):

Источник: :github: https://github.com/Sorvigolova/scetool/tree/master/Release

SELF File Format and Decryption (http://www.psdevwiki.com/ps3/SELF_File_Format_and_Decryption)

Введение
Это формат, используемый исполняемыми файлами на PS3. В нем есть определенный заголовок, который называется SCE-заголовком, где он хранит все параметры для этого процесса

SCE Header - Заголовок SCE
Он состоит из информации о структуре и смещениях self. Первая часть находится в открытом виде до Metadata Info.
Metadata Info - Информация о метаданных
Информация о метаданных сама по себе находится под AES 256 CBC. Эта часть содержит KEY + IV для дальнейшей расшифровки заголовка с использованием AES 128 CTR.
Metadata - Метаданные
Заголовок метаданных, Заголовки секций метаданных, Хеш секции, Возможности и Подпись находятся под AES 128 CTR слоем и дешифруются с помощью ключа выше.
Metadata Header - Заголовок метаданных
Заголовок метаданных содержит информацию, необходимую для аутентификации заголовка и структуры метаданных. Подпись представляет собой ECDSA хеша SHA1 собственного файла, начинающегося с 0x0 и заканчивающегося на 0x0 + signatureInputLength.
Data Sections - Секции данных
Секции данных могут быть зашифрованы с использованием AES 128 CTR и/или сжаты. HMAC-SHA1 используется для аутентификации, они не должны быть изменены.

Примечание: в этот формат могут быть подписаны не только файлы ELF/PRX, другие известные файлы с заголовком SCE:

revoke (e.g. RL_FOR_PACKAGE.img/RL_FOR_PROGRAM.img and pkg.srvk/prog.srvk)
spp (e.g. default.spp)
package (e.g. .pkg/.spkg_hdr.X)
edat


Криптография
Это небольшое резюме о том, как работает криптография в self. В основном здесь находятся шаги, выполняемые загрузчиками:

Все загрузчики имеют статический ключ и iv, называемый соответственно erk и riv, это ключи для первого этапа дешифрования, которые используются для дешифрования первых первых 0x40 байтов метаданных self, используя AES256CBC.
Затем результат используется как ключ и iv для дешифровки остальной части метаданных с использованием AESCTR, наконец, дешифрованные метаданные содержат ключи и iv для каждого раздела данных, которые все еще дешифруются через AES128CTR. Эта модель безопасности основана на том факте, что первые 0x40 байт метаданных self, однажды дешифрованные статическим ключом AES256CBC в загрузчике, никогда не должны быть одинаковыми от одного бинарника к другому. То же самое относится к любому другому значению, используемому в качестве ключа AES128CTR или iv.
Загрузчики также участвуют в распаковке бинарных файлов с использованием zlib.
SELF аутентичность основана на других независимых шагах, HMAC-SHA1 от секции данных и ECDSA для актуальной сигнатуры в заголовке.


SCE Header - Заголовок SCE
Для начала, перед разбором кода структуры заголовка, давайте разберёмся, что означают эти странные значения и столбцы.

Слева - мы видим смещение в файле, а через пробел - его название, столбиком по порядку, смещение за смещением.
Справа - мы видим комментарии к этому смещению, заключённые между символами /* ... */ (такой вид комментария может использоваться в многострочном режиме, тогда как такой вид // только в однострочном)
Что означают uint8_t, uint16_t, uint32_t, uint64_t?

u - unsigned - беззнаковое
int - integer - целое
8/16/32/64 - число, кол-во битов, где 8 бит = 1 байт, значит 16 бит = 2 байта, 32 бит = 4 байта, 64 бит = 8 байт.
Что в целом означает: беззнаковое целое число, а буква _t - означает, что это Тип данных, а не функция или процедура.

typedef struct {
uint32_t magic; /* 53434500 = SCE\0 */
uint32_t hdr_version; /* header version */
uint16_t key_revision; /* key_revision (http://www.psdevwiki.com/ps3/Revision_versus_Version) */
/* 0x0 retail (type 0)
* 0x1 retail (0.92-3.30)
* 0x2 retail (type 1)
* 0x3 unknown (npdrm1?)
* 0x4 retail (3.40-3.42)
* 0x5 unknown (npdrm1?)
* 0x6 unknown (npdrm2?)
* 0x7 retail (3.50)
* 0x8 unknown (npdrm1?)
* 0x9 unknown (npdrm2?)
* 0xa retail (3.55)
* 0xb unknown (npdrm1?)
* 0xc unknown (npdrm2?)
* 0xd retail (3.56)
* 0xe unknown (npdrm1?)
* 0xf unknown (npdrm2?)
* 0x10 retail (3.60-3.61)
* 0x11 unknown (npdrm1?)
* 0x12 unknown (npdrm2?)
* 0x13 retail (3.65)
* 0x14 unknown (npdrm1?)
* 0x15 unknown (npdrm2?)
* 0x16 retail (3.70-3.74)
* 0x17 unknown (npdrm1?)
* 0x18 unknown (npdrm2?)
* 0x19 retail (4.00-4.11)
* 0x1A unknown (npdrm1?)
* 0x1B unknown (npdrm2?)
* 0x1C retail (4.20-)
* 0x1D unknown (npdrm1?)
* 0x1E unknown (npdrm2?)
* 0x8000 DEBUG (devkit)
*/
uint16_t header_type; /* 1 self, 2 srvk/img, 3 pkg , 4 spp - : "category" SCE_File_Types (http://www.psdevwiki.com/ps3/SCE_File_Types) */
uint32_t metadata_offset; /* metadata offset */
uint64_t header_length; /* SCE file header length */
uint64_t data_length; /* length of encapsulated data */
} __attribute__((packed)) SCE_HDR;


Ну и для закрепления этой секции SCE Header, предлагаю посмотреть визуально смещения этих 7-ми позиций:

13234


SELF Header - Заголовок SELF
typedef struct {
uint64_t header_type; /* 3 - SELF */
uint64_t appinfo_offset; /* app info offset */
uint64_t elf_offset; /* ELF #1 offset */
uint64_t phdr_offset; /* program header offset */
uint64_t shdr_offset; /* section header offset */
uint64_t section_info_offset; /* section info offset */
uint64_t sceversion_offset; /* version offset */
uint64_t controlinfo_offset; /* control info offset */
uint64_t controlinfo_length; /* control length */
uint64_t padding; /* padding */
} __attribute__((packed)) SELF_HDR;
Комментарий: Реальные данные ELF расположены после заголовка SCE (см. размер заголовка). Он зашифрован, если флаг не равен 0x8000. unfself работает, вырезав заголовок SCE из (фейкового) SELF.

Визуальное отображение этих 10-ти позиций:

13235


App Info
typedef struct {
uint64_t authid; /* auth id (http://www.psdevwiki.com/ps3/Authentication_IDs) */
uint32_t vendor_id; /* vendor id (http://www.psdevwiki.com/ps3/Vendor_IDs) */
uint32_t self_type; /* app type (http://www.psdevwiki.com/ps3/SELF_Types)
* 1 level0,
* 2 level1,
* 3 level2,
* 4 application,
* 5 isolated SPU module,
* 6 secure loader,
* 7 unknown, handled by appldr,
* 8 NPDRM app */
uint64_t version; /* app version (http://www.psdevwiki.com/ps3/Revision_versus_Version) */
uint64_t padding; /* UNKNOWN */
} __attribute__((packed)) APP_INFO;
Комментарий: Выровнено по 0x10 байт.


ELF Header - Заголовок ELF
typedef struct {
uint8_t e_ident[16]; /* ELF identification */
uint16_t e_type; /* object file type */
uint16_t e_machine; /* machine type */
uint32_t e_version; /* object file version */
uint64_t e_entry; /* entry point address */
uint64_t e_phoff; /* program header offset */
uint64_t e_shoff; /* section header offset */
uint16_t e_flags; /* processor-specific flags */
uint32_t e_ehsize; /* ELF header size */
uint16_t e_phentsize; /* size of program header entry */
uint16_t e_phnum; /* number of program header entries */
uint16_t e_shentsize; /* size of section header entry */
uint16_t e_shnum; /* number of section header entries */
uint16_t e_shstrndx; /* section name string table index */
} __attribute__((packed)) ELF;
Комментарий: смотрите спецификацию здесь: ELF Header (http://www.sco.com/developers/gabi/latest/ch4.eheader.html) ELF-64 Object File Format (http://www.openwatcom.com/ftp/devel/docs/elf-64-gen.pdf)


ELF Program Headers
typedef struct {
uint32_t p_type; /* type of segment */
uint32_t p_flags; /* segment attributes */
uint64_t p_offset; /* offset in file */
uint64_t p_vaddr; /* virtual address in memory */
uint64_t p_paddr; /* reserved */
uint64_t p_filesz; /* size of segment in file */
uint64_t p_memsz; /* size of segment in memory */
uint64_t p_align; /* alignment of segment */
} __attribute__((packed)) ELF_PHDR;
Комментарий: смотрите спецификацию здесь: ELF Program Headers (http://www.sco.com/developers/gabi/latest/ch5.pheader.html)


ELF Section Headers
typedef struct {
uint32_t sh_name; /* section name */
uint32_t sh_type; /* section type */
uint64_t sh_flags; /* section attributes */
uint64_t sh_addr; /* virtual address in memory */
uint64_t sh_offset; /* offset in file */
uint64_t sh_size; /* size of section */
uint32_t sh_link; /* link to other section */
uint32_t sh_info; /* miscellaneous information */
uint64_t sh_addralign; /* address alignment boundary */
uint64_t sh_entsize; /* size of entries, if section has table */
} __attribute__((packed)) ELF_SHDR;



Segment Information
typedef struct {
uint64_t offset;
uint64_t size;
uint32_t compressed; // 2=compressed
uint32_t unknown1;
uint32_t unknown2;
uint32_t encrypted; // 1=encrypted
} __attribute__((packed)) SECTION_INFO;



SCE Version Info
typedef struct {
uint32_t subheader_type; // 1 - sceversion
uint32_t present; // 0 - FALSE / 1 - TRUE
uint32_t size;
uint32_t unknown4;
} __attribute__((packed)) SCEVERSION_INFO;


Data
typedef struct {
uint16 unknown_1;
uint16 unknown_2; //0x0001
uint32 unknown_3;
uint32 unknown_4; //Number of sections?
uint32 unknown_5;
////
uint64 offset; //Data offset.
uint64 size; //Data size.
//// <- these are supposed to be sections
} SCE_VERSION_DATA_30;



Control Information
typedef struct {
uint32_t type; // 1==control flags; 2==file digest; 3==npdrm
uint32_t size;
uint64_t next; // 1 if another Control Info structure follows 0 if not union {
// type 1 0x30 bytes
struct {
uint32_t ctrl_flag1; // ctrl_flag 0x80000000(all?);0x40000000(root);0x20000000(dbg);0x00000000(normal?)
uint32_t unknown2;
uint32_t unknown3;
uint32_t unknown4;
uint32_t unknown5;
uint32_t unknown6;
uint32_t unknown7; // 0;8;9;0xC
uint32_t unknown8; // 0;1;2;4
} control_flags; // type 2 0x40 bytes
struct {
uint8_t digest1[20]; //hash digest, same for every file
uint8_t digest2[20]; //sha1 hash digest calculated of .elf file...
uint64_t padding;
} file_digest40; // type 2 0x30 bytes
struct {
uint8_t digest1[20];
uint64_t unknown2;
} file_digest30; // type 3 0x90 bytes
struct {
uint32_t magic;
uint32_t unknown2;
uint32_t license; /* license_type 1 network, 2 local, 3 free */
uint32_t type; /* app_type 1 exec, 0x21 update */
uint8_t content_id[48];
uint8_t digest[16]; // sha-1 hash of debug self/sprx created with make_fself_npdrm
uint8_t invdigest[16]; //hash_cid_fname
uint8_t xordigest[16]; //hash_ci
uint64_t unknown3;
uint64_t unknown4;
} npdrm;
};
} __attribute__((packed)) CONTROL_INFO;



Metadata Information
typedef struct {
uint8_t key[16];
uint8_t key_pad[16];
uint8_t iv[16];
uint8_t iv_pad[16];
} __attribute__((packed)) METADATA_INFO;



Metadata Header
typedef struct {
uint64_t signatureInputLength;
uint32_t unknown02; //Should be signature algorithm. It always = 1(ECDSA)
uint32_t sectionCount;
uint32_t keyCount;
uint32_t optHeaderSize;
uint32_t unknown06;
uint32_t unknown07;
} __attribute__((packed)) METADATA_HEADER;
Комментарий:

Заголовок метаданных расположен после информации метаданных в файле SELF.
Он расшифровывается с использованием AES128CTR с помощью записей ключа и ivec из информации метаданных.
Длина входной сигнатуры - это количество байтов, которые используются для генерации SHA-1, который используется для генерации сигнатуры ECDSA. Длина должна быть от начала до самой подписи. Используется расшифрованная версия входных данных.
Это присутствует только в том случае, если присутствует метаданные.



Metadata Section Headers
typedef struct {
uint64_t data_offset;
uint64_t data_size;
uint32_t type; // 1 = shdr, 2 == phdr, 3 == unknown
uint32_t program_idx;
uint32_t hashed; //2=yes
uint32_t sha1_idx;
uint32_t encrypted; // 3=yes; 1=no
uint32_t key_idx;
uint32_t iv_idx;
uint32_t compressed; // 2=yes; 1=no
} __attribute__((packed)) METADATA_SECTION_HEADER;
Комментарий:

Заголовки разделов метаданных расположены после заголовка метаданных в файле SELF.
Количество разделов указывается в элементе sectionCount в заголовке метаданных.
Они дешифруются с использованием AES128CTR с помощью записей ключа и ivec из информации метаданных.
Данные разделов дешифруются с использованием AES128CTR с ключом и ivec из ключей метаданных, заданных keyIndex и ivecIndex.
Секционные данные также должны быть несжаты с использованием zlib.
ДанныеОценты заголовков секций метаданных соответствуют, в общем, данным о данных о сегментах.
Это присутствует только в том случае, если присутствует заголовок метаданных.



Section Hash
typedef struct {
uint8_t sha1[20];
uint8_t padding[12];
uint8_t hmac_key[64];
} __attribute__((packed)) SECTION_HASH;
Комментарий:

Ключи метаданных (хеш раздела) расположены после заголовков раздела метаданных в файле SELF.
Количество ключей указывается в элементе keyCount в заголовке метаданных.
Они дешифруются с использованием AES128CTR с помощью записей ключа и ivec из информации метаданных.
Если sha1Index указывает на ключ, тогда ключ [sha1Index] и ключ [sha1Index + 1] образуют 160-битный хеш. Key [sha1Index + 2] на клавишу [key [sha1Index + 6] образуют 512-битный ключ для HMAC-SHA1. HMAC-SHA1 рассчитывается по дешифрованным данным и перед декомпрессией.



Capabilities Info
typedef struct {
uint32_t Type; // 1,2
uint32_t capabilities_size; // capabilities Type 1 0x30, Type 2 0x100
uint32_t next; // 1 if there is another cap flag structure after this, 0 if not
uint32_t unknown2;
uint64_t unknown3;
uint64_t unknown4;
uint64_t flags;
uint32_t unknown6;
uint32_t unknown7;
} __attribute__((packed)) CAPABILITIES_INFO;



Signature
typedef struct {
uint8_t r[21];
uint8_t s[21];
uint8_t padding[6];
} __attribute__((packed)) SIGNATURE;
Комментарий:

Подпись находится после информации подписи в файле SELF.
Это даже присутствует, если информация подписи отсутствует.
Он расшифровывается с использованием AES128CTR с помощью записей ключа и ivec из информации метаданных.



Self Section Info
typedef struct {
uint8_t *data;
uint64_t size;
uint64_t offset;
} SELF_SECTION;

ErikPshat
22.11.2016, 14:14
UPDATE!

Небольшое исправление:

В ScetoolGui.exe исправлены ссылки на Wiki - это в левом окне знак [?]

Архив в шапке обновлён.

rhish777
22.11.2016, 14:29
Вот молодец. Теперь все ровненько стало.

ErikPshat
23.11.2016, 15:50
UPDATE!

Небольшое обновление: - Добавлен вывод Meta Info Original. - Исправлено, когда в дисковых играх (категория APP) не добавлялась версия прошивки при подписи. В приватной версии открывается пункт вставки индивидуального Seed (--self-indiv-seed 256 bytes). Добавлена библиотека libz-1.dll.

Последние изменения

Version 0.2.9.1

Minor update 0.0.1 --self-fw-version for APP by someone
Источник: :offsite: http://www.maxconsole.com/threads/uniofficial-minor-update-to-scetool.31333/


here's the source code for visual c++/windows with some a few small updates

includes:

1. prints original meta info keys. the meta info keys are used to encrypt/decrypt the self metadata. official scetool displays the meta info keys after they have been incremented. The original keys are only useful for someone who wants to use the same keys as the original self. Use of the incremented keys would not give the same result.
in sce.cpp add 2 global variables for the key and iv after the includes and after: aes_crypt_cbc(&aes_ctxt, AES_DECRYPT, sizeof(metadata_info_t), iv, (u8 *)ctxt->metai, (u8 *)ctxt->metai);


add (near line 842): memcpy(mik_key, (u8 *)ctxt->metai->key, 0x10);

memcpy(mik_iv, (u8 *)ctxt->metai->iv, 0x10);


and in _print_metadata_info change: _hexdump(fp, " Key", 0, mi->key, METADATA_INFO_KEY_LEN, FALSE);

_hexdump(fp, " IV ", 0, mi->iv, METADATA_INFO_IV_LEN, FALSE);


to: _hexdump(fp, " Key", 0, mik_key, METADATA_INFO_KEY_LEN, FALSE);

_hexdump(fp, " IV ", 0, mik_iv, METADATA_INFO_IV_LEN, FALSE);
2. added firmware version written to self header for disc games (not only NPDRM) in self.cpp:
if(self_type == SELF_TYPE_NPDRM)

cid->fw_version = sce_hexver_to_decver(sconf->fw_version);

else

cid->fw_version = 0;


to: if(self_type == SELF_TYPE_NPDRM)

cid->fw_version = sce_hexver_to_decver(sconf->fw_version);

else if(self_type == SELF_TYPE_APP)

cid->fw_version = sce_hexver_to_decver(sconf->fw_version);

else

cid->fw_version = 0;
3. switch build from public to private to skip placement of watermarks in resigned files
in config.h uncomment line 13:/*! Private build. */

//#define CONFIG_PRIVATE_BUILD

#define BUILD_FOR "naehrwert"


to:/*! Private build. */

#define CONFIG_PRIVATE_BUILD

//#define BUILD_FOR "naehrwert"


and line 22:/*! scetool version. */

#ifdef CONFIG_PRIVATE_BUILD

#ifdef BUILD_FOR

#define SCETOOL_VERSION SCETOOL_VERSION_BASE " <PRIVATE BUILD:" BUILD_FOR ">"

#else

#error Specify a name in BUILD_FOR.


to something like:/*! scetool version. */

#ifdef CONFIG_PRIVATE_BUILD

#ifdef BUILD_FOR

#define SCETOOL_VERSION SCETOOL_VERSION_BASE " <PRIVATE BUILD:" BUILD_FOR ">"

#else

//#error Specify a name in BUILD_FOR.

#define SCETOOL_VERSION SCETOOL_VERSION_BASE " <Public Private Build>"
4. custom versions should display a separate version number in addition to the official version build number that they are based on (2.9). main.cpp line 147:
static void print_version()

{

printf("scetool " SCETOOL_VERSION " (C) 2011-2013 by naehrwert\n");

printf("NP local license handling (C) 2012 by flatz\n");

//printf("[Build Date/Time: %s/%s]\n", __DATE__, __TIME__);

}


to something like:static void print_version()

{

printf("\nFUNCTION: print_version\n");

printf("scetool " SCETOOL_VERSION " (C) 2011-2013 by naehrwert\n");

printf("NP local license handling (C) 2012 by flatz\n");

printf("minor update 0.0.1 <Public Build> 2014 by someone\n");

//printf("[Build Date/Time: %s/%s]\n", __DATE__, __TIME__);

}

rupor
24.11.2016, 11:19
ErikPshat, ну вроде нормально все, крипт и декрипт без ошибок. Вот только работоспособность этого EBOOT сейчас возможности проверить нет.

ErikPshat
24.11.2016, 11:39
rupor, не факт, что прямо так и заведётся. Для каждой игры нужно подбирать правильные параметры, там Ревизию ключа под версию прошивки, саму версию. Вернее, там практически менять него, там правильно уже выставлена Ревизия ключа и версия прошивки. Единственное, нужно правильно подобрать вот этот параметр:

--self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 // 32 байта capability флаги

Каким образом выдёргивать и откуда вообще брать эти флаги, пока не имею понятия. А этот флаг я взял от SELF Resigner, там подпись идёт под 4.10, на что намекают цифры в коде. Думаю там несколько флагов по 8 байт:

0000000000000000
0000000000000000
000000000000003B
0000000100040000

rhish777
24.11.2016, 13:23
scetool --verbose --skip-sections=FALSE --sce-type=SELF --compress-data=%ce% --key-revision=1C --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=0004002100000000 --np-license-type=FREE --np-app-type=%apptype% --np-content-id=%contentid% --np-real-fname=EBOOT.BIN --encrypt EBOOT.ELF EBOOT.BIN

scetool --verbose --skip-sections=FALSE --sce-type=SELF --compress-data=FALSE --key-revision=1C --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=0004002100000000 --np-license-type=FREE --np-app-type=%apptype% --np-content-id=%contentid% --np-real-fname=EBOOT.BIN --encrypt EBOOT.ELF EBOOT.BIN

scetool --verbose --skip-sections=FALSE --sce-type=SELF --compress-data=FALSE --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=%apptype% --np-content-id=%contentid% --np-real-fname=EBOOT.BIN --encrypt EBOOT.ELF EBOOT.BIN

scetool --verbose --skip-sections=FALSE --sce-type=SELF --compress-data=%ce% --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=%apptype% --np-content-id=%contentid% --np-real-fname=EBOOT.BIN --encrypt EBOOT.ELF EBOOT.BIN

scetool --verbose --sce-type=SELF --skip-sections=FALSE --self-add-shdrs=TRUE --compress-data=FALSE --key-revision=1C --self-app-version=0001000000000000 --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-ctrl-flags=0000000000000000000000000000000000000000000000000000000000000000 --self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 --self-type=APP --self-fw-version=0004002100000000 --encrypt EBOOT.ELF EBOOT.BIN

scetool --verbose --sce-type=SELF --skip-sections=FALSE --compress-data=%ce% --self-add-shdrs=TRUE --key-revision=1C --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-ctrl-flags=0000000000000000000000000000000000000000000000000000000000000000 --self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 --self-app-version=0001000000000000 --self-type=APP --self-fw-version=0004002100000000 --encrypt EBOOT.ELF EBOOT.BIN

scetool --verbose --sce-type=SELF --skip-sections=FALSE --self-add-shdrs=TRUE --compress-data=FALSE --key-revision=0A --self-app-version=0001000000000000 --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-ctrl-flags=0000000000000000000000000000000000000000000000000000000000000000 --self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 --self-type=APP --self-fw-version=0003005500000000 --encrypt EBOOT.ELF EBOOT.BIN

scetool --verbose --sce-type=SELF --skip-sections=FALSE --compress-data=%ce% --self-add-shdrs=TRUE --key-revision=0A --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-ctrl-flags=0000000000000000000000000000000000000000000000000000000000000000 --self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 --self-app-version=0001000000000000 --self-type=APP --self-fw-version=0003005500000000 --encrypt EBOOT.ELF EBOOT.BIN

scetool --verbose --sce-type=SELF --skip-sections=FALSE --self-add-shdrs=TRUE --compress-data=FALSE --key-revision=0A --self-app-version=0001000000000000 --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-ctrl-flags=0000000000000000000000000000000000000000000000000000000000000000 --self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 --self-type=APP --self-fw-version=0003005500000000 --encrypt EBOOT.ELF EBOOT.BIN

scetool --verbose --sce-type=SELF --skip-sections=FALSE --self-add-shdrs=TRUE --compress-data=%ce% --key-revision=0A --self-app-version=0001000000000000 --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-ctrl-flags=0000000000000000000000000000000000000000000000000000000000000000 --self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 --self-type=APP --self-fw-version=0003005500000000 --encrypt EBOOT.ELF EBOOT.BIN

ErikPshat
24.11.2016, 13:37
rhish777, ага, только вместо переменных, заключённых в процентах %_% нужно подставлять реальные значения.

--compress-data=%ce% --np-app-type=%apptype% --np-content-id=%contentid%

Вообще принцип такой:

Находим официальный EBOOT.BIN от игры, который имеет MinVer для официальной прошивки, например 3.30/3.40/3.55 и т.д.. Это нужно, чтобы подписываемая игра работала на низших прошивках и имела меньшие ограничения.
С помощью того же GUI к scetool выписываем нужные параметры.
Декриптуем EBOOT.BIN в EBOOT.ELF
Подбираем параметры от этого же EBOOT.BIN и обратно шифруем EBOOT.ELF. Имейте в виду, что если оригинальный EBOOT.BIN в той же папке, то при шифровке он перезапишется.
Сравниваем оригинал и подписанный файл. Если они разные, например по MD5, значит подпись не удалась. Короче, нужно правильно подобрать все параметры так, чтобы обратно файл подписывался в точности так же, как оригинал.
Если параметры подобраны так, как надо и файл подписался точно так же, значит мы воспроизвели точную подпись Sony!
Теперь берём EBOOT.BIN от Мультимена и подписываем его под эту игру этими же параметрами.
Так же подписываем все сопутствующие модули Мультимена в SDAT, как это мы делаем с играми.
Создаём под него LIC.EDAT
Инжектируем в бэкап и отправляем на плойку. Должно запуститься, т.к. сэмулирована официальная подпись Сони.

Vanik
24.11.2016, 13:57
ErikPshat, eboot должен быть от патча или может быть от самой игры?

rhish777
24.11.2016, 14:02
Ага, только вместо переменных, заключённых в процентах %_% нужно подставлять реальные значения.

--compress-data=%ce% --np-app-type=%apptype% --np-content-id=%contentid%

Потому и написал что для экспериментов.

rhish777 добавил 24.11.2016 в 14:02
Сравниваем оригинал и подписанный файл. Если они разные, например по MD5, значит подпись не удалась. Короче, нужно правильно подобрать все параметры так, чтобы обратно файл подписывался в точности так же, как оригинал.



Вот с этим пунктом и выходит косяк.

ErikPshat
24.11.2016, 14:06
Вот с этим пунктом и выходит косяк.
Потому что параметры левые. А нужно их вытащить у оригинала.

ErikPshat, eboot должен быть от патча или может быть от самой игры?
От патча, потому что мы EBOOT.BIN берём от патча и заменяем в папке с дисковой игрой.
Отсюда вывод, что его нужно подписывать, как NPDRM, потому что патч PSN-овский.

rhish777
24.11.2016, 16:43
scetool --verbose --sce-type=SELF --skip-sections=FALSE --self-add-shdrs=TRUE --compress-data=FALSE --key-revision=1C --self-app-version=0001000000000000 --self-auth-id=1010000001000003 --self-vendor-id=01000002 --self-ctrl-flags=0000000000000000000000000000000000000000000000000000000000000000 --self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 --self-type=NPDRM --self-fw-version=0004004000000000 --np-license-type=FREE --np-app-type=EXEC --np-content-id=UP9000-NPUA80719_00-RAIN000000000001 --np-real-fname=EBOOT.BIN --encrypt EBOOT.ELF EBOOT.BIN

Проверьте на официальной прошивке. Может заведется.

SNES ЭМУЛЯТОР прошивка 4.40 (https://mega.nz/#!YcM3waKT!tA63mQJZOPImGd_yw1XDHvC8v2RUkUrsb2mSr9y6fD4)

Vanik
24.11.2016, 16:52
rhish777, нет, чёрный экран.

rhish777
24.11.2016, 17:53
rhish777, нет, чёрный экран.
А ошибку уже не выдает не какую?

Vanik
24.11.2016, 18:02
rhish777, нет, я просто по ошибке взял другие параметры в батнике.

Я думаю ковырять игры, которые не имеют лик.дат в папке. Это, например, Call Of Juarez или CoD World at War. У них версии 2.4, но я почему-то не могу выбрать в качестве ревизии --key-revision=03, программа просто заканчивает работу и не меняет eboot. =\

in1975
24.11.2016, 21:48
Проверьте на официальной прошивке. Может заведется.

SNES ЭМУЛЯТОР прошивка 4.40 (https://mega.nz/#!YcM3waKT!tA63mQJZOPImGd_yw1XDHvC8v2RUkUrsb2mSr9y6fD4)

Ошибка 80010017

ps3 ss 4.76

ErikPshat
24.11.2016, 22:01
rhish777, так ты добился 100% совпадения подписки EBOOT.BIN с оригиналом? Думаю нет.

Из обновления нужно в точности брать оригиналы PARAM.SFO с иконками от патча, потому что они проверяются. Не на кастомной прошивке же запускать собираемся.

rhish777
24.11.2016, 22:19
rhish777, так ты добился 100% совпадения подписки EBOOT.BIN с оригиналом? Думаю нет.

Из обновления нужно в точности брать оригиналы PARAM.SFO с иконками от патча, потому что они проверяются. Не на кастомной прошивке же запускать собираемся.

А я и думаю откуда у меня такие значения??? Даже больше чем в оригинале :lol:

SCE File Keys:
00: 39 F5 7B 12 7C F3 20 8D 18 3E 11 B5 39 2B 51 13
01: BC 39 EC 54 00 00 00 00 00 00 00 00 00 00 00 00
02: 40 CC 7C 21 53 BE A5 F4 48 EC 36 91 B1 B4 23 8F
03: 04 BB 23 E3 4A FA 04 D3 80 F5 D9 E4 80 EB 3A 39
04: 8B B7 F3 5E A1 30 75 34 A2 3E 8B 20 7F 43 E2 B7
05: 8F E1 84 92 EB 22 BF B5 16 58 36 6F F1 43 A1 C7
06: 46 7E 6A BC B0 CB 30 ED 85 C9 92 4B ED EE 18 58
07: 0C 36 7B 39 E6 A6 16 12 31 EB B4 AA A2 85 59 7D
08: F4 7B 7F C8 57 36 91 09 46 DA E7 79 1E 1F 07 85
09: 66 67 91 28 00 00 00 00 00 00 00 00 00 00 00 00
0A: A8 FF 85 8D C2 77 B5 B5 EC F2 FE 30 52 92 48 0C
0B: 8D E1 C8 F5 8C 85 77 80 9C 9B C7 CB 55 76 AF DD
0C: 11 ED 9F 17 A0 3E 0A 8F C4 69 27 25 13 2C CD BC
0D: 9D 4F 66 0F 38 72 B1 01 9F 60 55 9A A2 4B 32 C1
0E: E8 35 C6 29 A2 A8 16 BF 68 CF 38 9C 63 04 07 42
0F: AA E0 E5 87 F3 18 E5 BC 2D 53 B1 F0 68 77 35 1D
10: F6 ED E9 DB F6 A3 38 89 1E 3D 6E 70 F1 7D BF 87
11: A2 13 A5 11 00 00 00 00 00 00 00 00 00 00 00 00
12: 67 1C 45 B6 C0 49 70 54 B8 2E A6 23 0E 52 E7 DC
13: 5A B4 D2 72 A9 E3 23 F4 C3 E5 6C 93 CF D0 7B EB
14: A0 36 A1 22 72 21 1C 64 D7 FE 3C 88 67 0A EA CB
15: AB 4D 3D E2 6C CF 55 4C 3F C3 AC BC 1B 7D 78 A9
16: D4 F9 74 D4 3E DB 71 00 44 8D E7 68 85 BB F9 03
17: 70 B4 30 8B 41 69 4A 44 25 1B EB D4 1B 48 93 6B
18: 44 4E 66 80 62 15 71 2B 37 A2 89 5F C5 69 0C 59
19: 25 86 AA 50 00 00 00 00 00 00 00 00 00 00 00 00
1A: D0 68 CD 11 17 3C B5 28 6B 0A B6 C6 B7 ED 5F F6
1B: 59 04 D5 60 F2 2E 8B 89 1A 3E C4 E0 73 3B F9 46
1C: F2 6B 82 8C C4 C1 88 86 85 5A 52 A1 AB D9 35 DD
1D: AD 05 A2 71 16 20 00 EC 6C 4E C3 F6 CD 58 DD B3
1E: DA 78 27 80 96 90 F8 3B FC A5 24 B0 F6 7B 54 9A
1F: 3E 1A B7 EB 08 6B D7 DD 11 B8 D4 C3 DC DE A3 FD
20: DF A7 AF 5C 14 B5 6C C3 36 B7 09 96 43 E4 10 DE
21: A5 FD CB AC 00 00 00 00 00 00 00 00 00 00 00 00
22: 0E 86 B7 FB 9B A4 32 DE 11 9B A2 A9 32 BB 1E 64
23: 57 C7 6B 1E 65 89 07 07 CD 1F 91 FF 8D F3 FD 99
24: 2D D4 D5 F4 AA AD 57 84 B2 38 5E B1 9A 4B 24 03
25: 0F 62 5C 9B 51 84 63 27 5B C1 1F 7A F2 3D 8A 03
26: 58 96 1F 5F 77 17 B7 4F 07 6D 1D F6 D5 34 D7 00
27: 97 C5 B0 16 D9 D4 25 B5 7F 60 F3 0C CD 71 79 01
28: 98 7C 8E 22 8B 3A 02 FB 54 55 1B 96 E1 F5 B9 6F
29: 7F 2D F0 D4 00 00 00 00 00 00 00 00 00 00 00 00
2A: 6D AF F5 FF 81 8B E6 EB 6A 72 2E A6 BB 3B E2 CE
2B: F5 B6 76 A3 6C 74 0F 45 7B A5 06 C8 F9 CF 8F FC
2C: 31 9F E1 F1 CA 8E D0 EC 92 D9 BA EF F0 41 A9 7F
2D: 9E BD D7 C8 7A 26 E7 45 89 18 F4 8B 2E E6 00 F8
2E: 03 54 B0 E3 1E FF F8 FA DC A2 F3 6B D1 86 6B 92
2F: DD F5 6C 2E 6A DE 13 96 E1 A7 AD C9 2E DF 7B B9
30: 47 A2 F1 3D B9 AE CE 99 D4 B8 92 14 82 9D F6 BA
31: 4B A8 EA 9C 00 00 00 00 00 00 00 00 00 00 00 00
32: 65 82 2F DE 9D EE CF 9F 5D A8 81 65 FB 16 94 18
33: 8C C0 66 4A 4D D8 23 EB B2 69 5F 39 D9 65 CB F4
34: 6F 8E 56 AE C7 AE 8C 24 1B 1C EE 3D F9 15 AB 21
35: 2D F9 6E 41 62 CA 1D CB C7 60 0B B5 81 D4 C9 DC
36: 12 E0 92 9F CF C5 CC 05 89 BE A0 96 02 C9 0D 05
37: 1E DC B7 5B 8A 49 39 46 C8 9A DD B0 C4 82 9C 6F
38: 83 BA C9 51 06 7C 2A B9 90 10 11 BF EC 2D AF 5C
39: 15 F3 20 BD 00 00 00 00 00 00 00 00 00 00 00 00
3A: 08 09 6D 99 C3 5D 0A 44 69 2D 71 95 27 59 EE 95
3B: FB 8A 9F DA 04 A3 D9 61 AF 5F 1D 3E A0 27 AD 37
3C: DC 05 1E 4B 77 E5 99 9A D9 09 AB BB 4A 16 59 50
3D: 59 8F 50 AB 0E 42 87 91 A6 D6 79 5B 8D 13 EB 16
3E: D9 25 87 7A 96 E9 D2 D3 21 86 0F 39 56 EB FF DB
3F: D0 90 3D 9C B0 F5 77 A1 B3 3B 2D 8F 54 BD 97 62
40: 6B E0 39 25 47 6A 68 30 BE DC 82 90 EC 75 5C 6A
41: 14 89 F9 60 00 00 00 00 00 00 00 00 00 00 00 00
42: A2 2A D0 BF 27 45 3E 00 73 02 AD A3 4B 27 75 CF
43: 53 6B E3 20 71 EC 9B EA 37 97 7F 07 7B 5D 62 E8
44: D0 61 19 47 B7 D1 23 B6 8B F5 34 60 35 3D 10 6E
45: D8 C9 BB F6 38 87 08 11 1A 1A 0C 5C B1 48 2A 18

Я думаю этот параметр как раз наиболее важно подобрать с оригиналом.

rhish777 добавил 24.11.2016 в 22:19
Сколько смотрел EBOOT.BIN с защитой NPDRM у всей этот параметр такой.

SCE File Keys:
00: 73 53 CB F9 12 D1 DB 3E FF C5 8E 51 14 5E 31 4C
01: 8D 48 81 67 00 00 00 00 00 00 00 00 00 00 00 00
02: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
03: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
04: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
05: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
06: 8F AF 37 70 A0 07 DA 5B 6A CA A2 87 31 94 C6 14
07: A9 88 BF 8B E9 96 AF 2B 6A AB DB 42 00 00 00 00
08: 8A 8F 36 E1 9E 92 40 75 99 F1 54 29 D1 6C 37 18
09: B7 CC 6C DA 00 00 00 00 00 00 00 00 00 00 00 00
0A: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
0B: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
0C: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
0D: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
0E: 22 4A 32 64 C7 B1 28 E1 46 78 60 75 8C 5D 3B 17
0F: 15 9F C6 CB C4 E1 1D 59 FF BC 23 96 00 00 00 00
10: 43 EE 66 1A AB 3A A6 60 46 C6 83 5E 34 5E 96 8B
11: CF F2 6C 13 00 00 00 00 00 00 00 00 00 00 00 00
12: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
13: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
14: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
15: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
16: 87 B3 5E 12 D6 C0 EE 28 1F 3F DE FB 78 01 8C 26
17: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
18: 43 EE 66 1A AB 3A A6 60 46 C6 83 5E 34 5E 96 8B
19: CF F2 6C 13 00 00 00 00 00 00 00 00 00 00 00 00
1A: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
1B: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
1C: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
1D: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
1E: 87 B3 5E 12 D6 C0 EE 28 1F 3F DE FB 78 01 8C 26
1F: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
20: 43 EE 66 1A AB 3A A6 60 46 C6 83 5E 34 5E 96 8B
21: CF F2 6C 13 00 00 00 00 00 00 00 00 00 00 00 00
22: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
23: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
24: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
25: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
26: 87 B3 5E 12 D6 C0 EE 28 1F 3F DE FB 78 01 8C 26
27: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
28: C7 C8 43 D4 7B 5C 0F 48 12 4B EE 40 DB 11 5F C6
29: 83 A6 E5 44 00 00 00 00 00 00 00 00 00 00 00 00
2A: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
2B: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
2C: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
2D: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
2E: FC 8A 49 F3 D6 9A C1 6C 1F 1E 73 6A 18 F6 ED 76
2F: 97 EA 52 FC 00 00 00 00 00 00 00 00 00 00 00 00
30: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
31: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
32: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
33: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7

ErikPshat
25.11.2016, 05:56
Сегодня наткнулся на целую кладезь утилит ps3tools (https://github.com/euss/ps3tools).
Вы то тут все старые волки и наверняка всё давно знаете, а я только что заинтересовался PS3, поэтому всё начинаю с нуля и для меня это новое открытие.

В общем решил скомпилить это странное чудо, немного почесав репу, дотумкался как это дело реализовать...
В файле INSTALL как-то не для меня была написана инструкция, поэтому я пошёл другим путём и удачно получилось таким методом.
Так как там нет файла Makefile, а есть configure.ac, то пришлось сделать переконфигурацию командой autoreconf -i, таким образом получился файл configure, затем произвёл конфигурацию командой ./configure, после чего появился Makefile, теперь можно компилировать командой make.
Это я не от нефиг делать пишу, а для вас, детки. Учитесь, пока ваш Кэп живой.
ErikP@ErikPshat ~/ps3tools/trunk
$ autoreconf -i
configure.ac:8: installing `./install-sh'
configure.ac:8: installing `./missing'
Makefile.am: installing `./depcomp'

ErikP@ErikPshat ~/ps3tools/trunk
$ ./configure
checking for a BSD-compatible install... /mingw/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /c/PSDK3v3/mingw/msys/1.0/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for __gmpz_init in -lgmp... yes
checking for inflate in -lz... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /c/PSDK3v3/mingw/msys/1.0/bin/grep
checking for egrep... /c/PSDK3v3/mingw/msys/1.0/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking arpa/inet.h usability... no
checking arpa/inet.h presence... no
checking for arpa/inet.h... no
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking for inttypes.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for stdint.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for unistd.h... (cached) yes
checking for inline... inline
checking for off_t... yes
checking for size_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for uint64_t... yes
checking for uint8_t... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for sys/param.h... yes
checking for getpagesize... yes
checking for working mmap... no
checking for stdlib.h... (cached) yes
checking for GNU libc compatible realloc... yes
checking for getpagesize... (cached) yes
checking for memset... yes
checking for strrchr... yes
checking for strstr... yes
checking for strtoul... yes
checking for strtoull... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands

ErikP@ErikPshat ~/ps3tools/trunk
$ make
make all-am
make[1]: Entering directory `/home/ErikP/ps3tools/trunk'
CC tools.o
In file included from tools.c:29:0:
common.h:44:0: предупреждение: "ERROR" redefined
c:\psdk3v3\mingw\bin\../lib/gcc/mingw32/4.5.2/../../../../include/wingdi.h:313:0: замечание: this is the location of the previous definition
CC aes.o
CC sha1.o
CC ec.o
CC bn.o
CC mingw_mmap.o
mingw_mmap.c: В функции 'mingw_mmap':
mingw_mmap.c:38:31: предупреждение: приведение вызова функции типа 'long int' к несоответствующему типу 'void *'
CC sceverify.o
CCLD sceverify.exe
CC readself.o
CCLD readself.exe
CC readself2.o
CCLD readself2.exe
CC unself.o
CCLD unself.exe
CC self.o
self.c: В функции 'self_load_sections':
self.c:319:14: предупреждение: 'size' may be used uninitialized in this function
CC unself2.o
CCLD unself2.exe
CC makeself.o
CCLD makeself.exe
CC self_rebuilder.o
CCLD self_rebuilder.exe
CC ungpkg.o
CCLD ungpkg.exe
CC norunpack.o
CCLD norunpack.exe
CC pupunpack.o
CCLD pupunpack.exe
CC puppack.o
CCLD puppack.exe
CC unpkg.o
CCLD unpkg.exe
CC pkg.o
CCLD pkg.exe
CC cosunpkg.o
CCLD cosunpkg.exe
CC cospkg.o
CCLD cospkg.exe
CC cosunpack.o
CCLD cosunpack.exe
CC undat.o
CCLD undat.exe
CC dat.o
CCLD dat.exe
CC unspp.o
CCLD unspp.exe
CC eidsplitr.o
eidsplitr.c:6:1: предупреждение: no previous prototype for 'DumpEidData'
eidsplitr.c: В функции 'main':
eidsplitr.c:62:6: предупреждение: 'pPrefix' may be used uninitialized in this function
CCLD eidsplitr.exe
CC spp.o
CCLD spp.exe
CC scekrit.o
CCLD scekrit.exe
make[1]: Leaving directory `/home/ErikP/ps3tools/trunk'

ErikP@ErikPshat ~/ps3tools/trunkНакомпилировалась целая куча утилит, думаю полезных, залил в шапку. Вот список:

ps3tools

cospkg.exe
cosunpack.exe
cosunpkg.exe
dat.exe
eidsplitr.exe
makeself.exe
norunpack.exe
pkg.exe
puppack.exe
pupunpack.exe
readself.exe
readself2.exe
scekrit.exe
sceverify.exe
self_rebuilder.exe
spp.exe
undat.exe
ungpkg.exe
unpkg.exe
unself.exe
unself2.exe
unspp.exe

rhish777
26.11.2016, 07:39
--self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 // 32 байта capability флаги

Каким образом выдёргивать и откуда вообще брать эти флаги, пока не имею понятия. А этот флаг я взял от SELF Resigner, там подпись идёт под 4.10, на что намекают цифры в коде. Думаю там несколько флагов по 8 байт:

0000000000000000
0000000000000000
000000000000003B
0000000100040000

Из EBOOT.BIN Брать через scetool



Type Capability Flags
Size 0x00000030
Next [FALSE]
unknown_3 0x0000000000000000
unknown_4 0x0000000000000000
Flags 0x000000000000003B [ 0x01 0x02 REFTOOL DEBUG RETAIL ]
unknown_6 0x00000001
unknown_7 0x00002000


PS: Я понял так, если все патчи для игр привязаны к LIC.DAT значит они все же имеют лицензию. Значит нужно пытаться переподписать приложение или игру которая не имеет никакой привязки. Тогда нам должна улыбнуться удача.

А у патча врятли хеш совпадет с переподписанным.

12179

ErikPshat
26.11.2016, 23:04
rhish777, отлично, молодец, что копаешь. У меня пока не было времени этим заняться. Постоянно отвлекают занятия по форуму, да ещё в личку, почему-то ко мне, каждый день пишут вопросы юзеры со всего мира по типу "How to install emulator gPspKai" или "Как вкрутить лампочку, чтобы не порезать руки". Уже начинает напрягать.

rhish777
27.11.2016, 02:41
rhish777, отлично, молодец, что копаешь. У меня пока не было времени этим заняться. Постоянно отвлекают занятия по форуму, да ещё в личку, почему-то ко мне, каждый день пишут вопросы юзеры со всего мира по типу "How to install emulator gPspKai" или "Как вкрутить лампочку, чтобы не порезать руки". Уже начинает напрягать.

Я взял бесплатное приложение из стора NPUP31353 MLBTV PREMIUM и пытаюсь подпись на основе его сделать.
Так как для подписи нужно именно такое приложение без всяких привязок к EDAT, LIC.DAT, RIF, RIV и т. д...

Меня первое что смущает - это то, что первый Metadata Offset 0x00000480 такой всегда выходит.
А у подписанных EBOOT.BIN самой сони он такой Metadata Offset 0x000004A0

ErikPshat
27.11.2016, 02:46
Меня первое что смущает - это то, что первый Metadata Offset 0x00000480 такой всегда выходит.
А у подписанных EBOOT.BIN самой сони он такой Metadata Offset 0x000004A0
И никак не получается его изменить? Никакими параметрами?
Значит в исходниках так наглухо закреплено, если это так.
Это получается, что EBOOT создаётся на 0x20 байтов меньше. Это же адресация блока, где начинаются метаданные.

Выложи на http://rgho.st/ этот EBOOT и PARAM с картинками.

rhish777
27.11.2016, 02:55
И никак не получается его изменить? Никакими параметрами?
Значит в исходниках так наглухо закреплено, если это так.
Оно и понятно. Никто не пытался по сей день подписать файлы для официальной прошивки.

И тот огромный ключ SCE File Keys: который я вставлял постом выше, тоже не понятно как генерируется.
Не могу подобрать как не извращаюсь с параметрами. Всегда выходит либо больше оригинала, либо меньше.
А размер получаемого файла и вовсе всегда меньше оригинала. Это говорит о том что каких то еще параметров в утилите все еще нет.

rhish777
27.11.2016, 03:40
ErikPshat,
33 строки кода. это я уже видел. Именно это скорее всего отвечает за запуск.


Сегодня как буду дома попробую подписать своим IDPS. Этот пункт в scetool меня больше всего заинтересовал.

ErikPshat
27.11.2016, 03:59
SCE File Keys:"] SCE File Keys:
00: 73 53 CB F9 12 D1 DB 3E FF C5 8E 51 14 5E 31 4C
01: 8D 48 81 67 00 00 00 00 00 00 00 00 00 00 00 00
02: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
03: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
04: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
05: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
06: 8F AF 37 70 A0 07 DA 5B 6A CA A2 87 31 94 C6 14
07: A9 88 BF 8B E9 96 AF 2B 6A AB DB 42 00 00 00 00
08: 8A 8F 36 E1 9E 92 40 75 99 F1 54 29 D1 6C 37 18
09: B7 CC 6C DA 00 00 00 00 00 00 00 00 00 00 00 00
0A: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
0B: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
0C: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
0D: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
0E: 22 4A 32 64 C7 B1 28 E1 46 78 60 75 8C 5D 3B 17
0F: 15 9F C6 CB C4 E1 1D 59 FF BC 23 96 00 00 00 00
10: 43 EE 66 1A AB 3A A6 60 46 C6 83 5E 34 5E 96 8B
11: CF F2 6C 13 00 00 00 00 00 00 00 00 00 00 00 00
12: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
13: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
14: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
15: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
16: 87 B3 5E 12 D6 C0 EE 28 1F 3F DE FB 78 01 8C 26
17: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
18: 43 EE 66 1A AB 3A A6 60 46 C6 83 5E 34 5E 96 8B
19: CF F2 6C 13 00 00 00 00 00 00 00 00 00 00 00 00
1A: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
1B: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
1C: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
1D: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
1E: 87 B3 5E 12 D6 C0 EE 28 1F 3F DE FB 78 01 8C 26
1F: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
20: 43 EE 66 1A AB 3A A6 60 46 C6 83 5E 34 5E 96 8B
21: CF F2 6C 13 00 00 00 00 00 00 00 00 00 00 00 00
22: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
23: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
24: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
25: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
26: 87 B3 5E 12 D6 C0 EE 28 1F 3F DE FB 78 01 8C 26
27: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
28: C7 C8 43 D4 7B 5C 0F 48 12 4B EE 40 DB 11 5F C6
29: 83 A6 E5 44 00 00 00 00 00 00 00 00 00 00 00 00
2A: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
2B: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
2C: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
2D: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
2E: FC 8A 49 F3 D6 9A C1 6C 1F 1E 73 6A 18 F6 ED 76
2F: 97 EA 52 FC 00 00 00 00 00 00 00 00 00 00 00 00
30: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
31: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
32: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
33: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7 00: 73 53 CB F9 12 D1 DB 3E FF C5 8E 51 14 5E 31 4C
01: 8D 48 81 67 00 00 00 00 00 00 00 00 00 00 00 00
02: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
03: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
04: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
05: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
06: 8F AF 37 70 A0 07 DA 5B 6A CA A2 87 31 94 C6 14
07: A9 88 BF 8B E9 96 AF 2B 6A AB DB 42 00 00 00 00
08: 8A 8F 36 E1 9E 92 40 75 99 F1 54 29 D1 6C 37 18
09: B7 CC 6C DA 00 00 00 00 00 00 00 00 00 00 00 00
0A: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
0B: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
0C: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
0D: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
0E: 22 4A 32 64 C7 B1 28 E1 46 78 60 75 8C 5D 3B 17
0F: 15 9F C6 CB C4 E1 1D 59 FF BC 23 96 00 00 00 00
10: 43 EE 66 1A AB 3A A6 60 46 C6 83 5E 34 5E 96 8B
11: CF F2 6C 13 00 00 00 00 00 00 00 00 00 00 00 00
12: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
13: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
14: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
15: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
16: 87 B3 5E 12 D6 C0 EE 28 1F 3F DE FB 78 01 8C 26
17: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
18: 43 EE 66 1A AB 3A A6 60 46 C6 83 5E 34 5E 96 8B
19: CF F2 6C 13 00 00 00 00 00 00 00 00 00 00 00 00
1A: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
1B: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
1C: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
1D: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
1E: 87 B3 5E 12 D6 C0 EE 28 1F 3F DE FB 78 01 8C 26
1F: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
20: 43 EE 66 1A AB 3A A6 60 46 C6 83 5E 34 5E 96 8B
21: CF F2 6C 13 00 00 00 00 00 00 00 00 00 00 00 00
22: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
23: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
24: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
25: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
26: 87 B3 5E 12 D6 C0 EE 28 1F 3F DE FB 78 01 8C 26
27: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
28: C7 C8 43 D4 7B 5C 0F 48 12 4B EE 40 DB 11 5F C6
29: 83 A6 E5 44 00 00 00 00 00 00 00 00 00 00 00 00
2A: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
2B: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
2C: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
2D: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7
2E: FC 8A 49 F3 D6 9A C1 6C 1F 1E 73 6A 18 F6 ED 76
2F: 97 EA 52 FC 00 00 00 00 00 00 00 00 00 00 00 00
30: BE F7 E3 7B ED B1 84 8A 80 E1 04 6A BC F4 6C D3
31: 05 F3 B5 EF 89 D4 FC CB 2F 29 E9 44 52 4E C6 A1
32: 51 6B 81 C2 20 FE AE 22 26 66 85 6B 1F 7E 7F E9
33: 30 92 4A 8F 4D 27 3A 0E 04 D7 97 E1 0B 06 15 A7

scetool 0.2.9.1 <PRIVATE BUILD:ErikPshat> (C) 2011-2013 by naehrwert
NP local license handling (C) 2012 by flatz
[Build Date/Time: Nov 23 2016/14:51:52]


SCE Header:
Magic 0x53434500 [OK]
Version 0x00000002
Key Revision 0x001C
Header Type [SELF]
Metadata Offset 0x000004A0
Header Length 0x0000000000000A80
Data Length 0x0000000000122F48

Metadata Info Incremented:
Key 30 32 54 29 E1 72 C0 D6 19 3D 5C DB 08 63 B4 8D
IV 83 F4 BA 94 FD 5D BB 09 A7 BF 28 18 EB AF E0 BE

Metadata Info Original:
Key 30 32 54 29 E1 72 C0 D6 19 3D 5C DB 08 63 B4 8D
IV 83 F4 BA 94 FD 5D BB 09 A7 BF 28 18 EB AF E0 66

Metadata Header:
Signature Input Length 0x00000000000009E0
unknown_0 0x00000001
Section Count 0x00000007
Key Count 0x00000034
Optional Header Size 0x00000030
unknown_1 0x00000000
unknown_2 0x00000000

Metadata Section Headers:
Idx Offset Size Type Index Hashed SHA1 Encrypted Key IV Compressed
000 00000A80 00067C73 02 00 [YES] 00 [YES] 06 07 [YES]
001 00075EF0 00006990 02 01 [YES] 08 [YES] 0E 0F [YES]
002 0007C880 00000000 02 02 [YES] 10 [YES] 16 17 [NO ]
003 0007C880 00000000 02 03 [YES] 18 [YES] 1E 1F [NO ]
004 0007C880 00000000 02 04 [YES] 20 [YES] 26 27 [NO ]
005 0007C880 00002C41 03 1D [YES] 28 [NO ] -- -- [NO ]
006 0007F5F8 000007C0 01 03 [YES] 2E [NO ] -- -- [NO ]

SCE File Keys:
00: 5D 4E 52 70 28 0B 78 37 4B 05 13 AB 12 1B 23 B8
01: 01 9A 54 89 00 00 00 00 00 00 00 00 00 00 00 00
02: 5A C4 DC 2B 99 0F 0B 7E EC 68 9F 51 25 B8 0F 5B
03: E4 0A 0C 3D 99 2B FD 67 BA AF 55 9D B5 41 D1 77
04: 6A 5A 48 E8 93 21 AE 66 FB 8F D6 15 B8 ED 48 A7
05: 12 90 0C 1F A5 AA C6 72 1D 3F 42 F7 94 1B DA 7C
06: 5B 0D 57 8C 44 EB 3C E2 96 20 0F 0B 5C 0A AD 7E
07: 60 20 D8 08 CB 61 02 05 2D 2D 24 50 00 00 00 00
08: 5D 99 8A D6 DC 2A 77 ED 4B 6D 6C 9C A1 1B AC 44
09: 2D 13 55 8A 00 00 00 00 00 00 00 00 00 00 00 00
0A: 5A C4 DC 2B 99 0F 0B 7E EC 68 9F 51 25 B8 0F 5B
0B: E4 0A 0C 3D 99 2B FD 67 BA AF 55 9D B5 41 D1 77
0C: 6A 5A 48 E8 93 21 AE 66 FB 8F D6 15 B8 ED 48 A7
0D: 12 90 0C 1F A5 AA C6 72 1D 3F 42 F7 94 1B DA 7C
0E: 19 69 8C 35 6C C1 EC 67 A5 99 A8 8F 50 55 0A 57
0F: B5 D0 2A FA 64 75 D8 92 CF 14 57 F4 00 00 00 00
10: E9 ED 1F 31 76 48 69 7B 21 CD 7D 4D DF 98 D7 5F
11: 54 DF AB 80 00 00 00 00 00 00 00 00 00 00 00 00
12: 5A C4 DC 2B 99 0F 0B 7E EC 68 9F 51 25 B8 0F 5B
13: E4 0A 0C 3D 99 2B FD 67 BA AF 55 9D B5 41 D1 77
14: 6A 5A 48 E8 93 21 AE 66 FB 8F D6 15 B8 ED 48 A7
15: 12 90 0C 1F A5 AA C6 72 1D 3F 42 F7 94 1B DA 7C
16: 55 D0 D6 37 17 66 1F 33 E8 2F 98 E5 CD 11 99 14
17: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
18: E9 ED 1F 31 76 48 69 7B 21 CD 7D 4D DF 98 D7 5F
19: 54 DF AB 80 00 00 00 00 00 00 00 00 00 00 00 00
1A: 5A C4 DC 2B 99 0F 0B 7E EC 68 9F 51 25 B8 0F 5B
1B: E4 0A 0C 3D 99 2B FD 67 BA AF 55 9D B5 41 D1 77
1C: 6A 5A 48 E8 93 21 AE 66 FB 8F D6 15 B8 ED 48 A7
1D: 12 90 0C 1F A5 AA C6 72 1D 3F 42 F7 94 1B DA 7C
1E: 55 D0 D6 37 17 66 1F 33 E8 2F 98 E5 CD 11 99 14
1F: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
20: E9 ED 1F 31 76 48 69 7B 21 CD 7D 4D DF 98 D7 5F
21: 54 DF AB 80 00 00 00 00 00 00 00 00 00 00 00 00
22: 5A C4 DC 2B 99 0F 0B 7E EC 68 9F 51 25 B8 0F 5B
23: E4 0A 0C 3D 99 2B FD 67 BA AF 55 9D B5 41 D1 77
24: 6A 5A 48 E8 93 21 AE 66 FB 8F D6 15 B8 ED 48 A7
25: 12 90 0C 1F A5 AA C6 72 1D 3F 42 F7 94 1B DA 7C
26: 55 D0 D6 37 17 66 1F 33 E8 2F 98 E5 CD 11 99 14
27: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
28: 0D 0E ED F6 D4 85 F0 E6 5A DC 89 C7 FD F0 8B 6D
29: 8E 64 87 C2 00 00 00 00 00 00 00 00 00 00 00 00
2A: 5A C4 DC 2B 99 0F 0B 7E EC 68 9F 51 25 B8 0F 5B
2B: E4 0A 0C 3D 99 2B FD 67 BA AF 55 9D B5 41 D1 77
2C: 6A 5A 48 E8 93 21 AE 66 FB 8F D6 15 B8 ED 48 A7
2D: 12 90 0C 1F A5 AA C6 72 1D 3F 42 F7 94 1B DA 7C
2E: 50 C1 80 AE C8 54 C0 5F 77 CB F0 F4 D6 4F 88 F5
2F: C4 78 84 7E 00 00 00 00 00 00 00 00 00 00 00 00
30: 5A C4 DC 2B 99 0F 0B 7E EC 68 9F 51 25 B8 0F 5B
31: E4 0A 0C 3D 99 2B FD 67 BA AF 55 9D B5 41 D1 77
32: 6A 5A 48 E8 93 21 AE 66 FB 8F D6 15 B8 ED 48 A7
33: 12 90 0C 1F A5 AA C6 72 1D 3F 42 F7 94 1B DA 7C

SELF Header:
Header Type 0x0000000000000003
App Info Offset 0x0000000000000070
ELF Offset 0x0000000000000090
PH Offset 0x00000000000000D0
SH Offset 0x000000000007F5F8
Section Info Offset 0x0000000000000290
SCE Version Offset 0x0000000000000390
Control Info Offset 0x00000000000003C0
Control Info Size 0x0000000000000100

Application Info:
Auth-ID [retail game/update]
Vendor-ID [normal]
SELF-Type [NPDRM Application]
Version 01.00

SCE Version:
Header Type 0x00000001
Present [TRUE]
Size 0x00000030
unknown_3 0x00000000

Control Info
Type Flags
Size 0x00000030
Next [TRUE]
Flags 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Control Info
Type Digest
Size 0x00000040
Next [TRUE]
Digest 1 62 7C B1 80 8A B9 38 E3 2C 8C 09 17 08 72 6A 57
9E 25 86 E4
Digest 2 9F E7 87 25 95 09 CE E2 1E 13 E7 AD E5 DB FC D4
3C 68 81 9B
FW Version 45000 [04.50]

Control Info
Type NPDRM
Size 0x00000090
Next [FALSE]
Magic 0x4E504400 [OK]
unknown_0 0x00000001
Licence Type 0x00000003
App Type 0x00000001
ContentID UP0181-NPUP31353_00-MLBTVPS3US000001
Random Pad 3D D1 93 49 84 F9 E5 59 FB 16 57 50 D5 B7 45 00
CID_FN Hash 8B F5 CB DC 08 E3 2A 48 6B B9 4A D7 70 2C B2 3E
CI Hash E1 A6 51 F1 FB A9 D8 5D 77 66 18 08 F6 8D 9C 55
unknown_1 0x0000000000000000
unknown_2 0x0000000000000000

Optional Header
Type Capability Flags
Size 0x00000030
Next [FALSE]
unknown_3 0x0000000000000000
unknown_4 0x0000000000000000
Flags 0x000000000000003B [ 0x01 0x02 REFTOOL DEBUG RETAIL ]
unknown_6 0x00000001
unknown_7 0x00002000

Section Infos:
Idx Offset Size Compressed unk0 unk1 Encrypted
000 00000A80 00067C73 [YES] 00000000 00000000 [YES]
001 00075EF0 00006990 [YES] 00000000 00000000 [YES]
002 0007C880 00000000 [NO ] 00000000 00000000 [YES]
003 0007C880 00000000 [NO ] 00000000 00000000 [YES]
004 0007C880 00000000 [NO ] 00000000 00000000 [YES]
005 00000000 00000008 [NO ] 00000000 00000000 [NO ]
006 00000000 00000028 [NO ] 00000000 00000000 [NO ]
007 00000000 00000040 [NO ] 00000000 00000000 [NO ]

ELF64 Header:
Type [EXEC]
Machine [PPC64]
Version 0x00000001
Entry 0x0000000000121A38
Program Headers Offset 0x0000000000000040
Section Headers Offset 0x0000000000122788
Flags 0x00000000
Program Headers Count 0008
Section Headers Count 0031
SH String Index 0030

ELF64 Program Headers:
Idx Type Offset VAddr PAddr FileSize MemSize PPU SPU RSX Align
000 LOAD 00000000 00010000 00010000 00102808 00102808 X-R --R --- 00010000
001 LOAD 00110000 00120000 00120000 0000FA10 00035C78 -WR -WR --- 00010000
002 LOAD 0011FA10 00000000 00000000 00000000 00000000 --R --- --- 00010000
003 LOAD 0011FA10 00000000 00000000 00000000 00000000 -WR --- --- 00010000
004 LOAD 0011FA10 00000000 00000000 00000000 00000000 -WR -WR -WR 00010000
005 TLS 0011CD54 0012CD54 0012CD54 00000008 000002A0 --R --- --- 00000008
006 PARAMS 001027A0 001127A0 001127A0 00000028 00000028 --- --- --- 00000008
007 PRX 001027C8 001127C8 001127C8 00000040 00000040 --- --- --- 00000004

ELF64 Section Headers:
Idx Name Type Flags Address Offset Size ES Align LK
000 0000 NULL --- 00000000 00000000 00000000 0000 00000000 000
001 000B PROGBITS -AE 00010200 00000200 0000002C 0000 00000004 000
002 001F PROGBITS -AE 00010230 00000230 000E9F68 0000 00000008 000
003 0011 PROGBITS -AE 000FA198 000EA198 00000024 0000 00000004 000
004 0017 PROGBITS -AE 000FA1BC 000EA1BC 00003900 0000 00000004 000
005 0025 PROGBITS -A- 000FDABC 000EDABC 00000D84 0000 00000004 000
006 002F PROGBITS -A- 000FE840 000EE840 00000138 0000 00000008 000
007 0041 PROGBITS -A- 000FE978 000EE978 000048DC 0000 00000004 000
008 0055 PROGBITS -A- 00103254 000F3254 00000720 0000 00000004 000
009 0065 PROGBITS -A- 00103974 000F3974 00000004 0000 00000004 000
010 0072 PROGBITS -A- 00103978 000F3978 00000054 0000 00000004 000
011 007B PROGBITS -A- 001039CC 000F39CC 00000004 0000 00000004 000
012 0088 PROGBITS -A- 001039D0 000F39D0 00000004 0000 00000004 000
013 0096 PROGBITS -A- 001039D4 000F39D4 000003F4 0000 00000004 000
014 00A0 PROGBITS -A- 00103DC8 000F3DC8 00000004 0000 00000004 000
015 00AE PROGBITS -A- 00103DD0 000F3DD0 0000E9D0 0000 00000010 000
016 00B6 PROGBITS WA- 001127A0 001027A0 00000028 0000 00000008 000
017 00C6 PROGBITS -A- 001127C8 001027C8 00000040 0000 00000004 000
018 00DA PROGBITS WA- 00120000 00110000 00000028 0000 00000004 000
019 00E1 PROGBITS WA- 00120028 00110028 00000018 0000 00000004 000
020 00E8 PROGBITS WA- 00120040 00110040 00000004 0000 00000004 000
021 00ED PROGBITS WA- 00120048 00110048 000012C0 0000 00000008 000
022 00FA PROGBITS WA- 00121308 00111308 00000720 0000 00000004 000
023 0109 PROGBITS WA- 00121A28 00111A28 00006618 0000 00000008 000
024 010E PROGBITS WA- 00128040 00118040 00004D14 0000 00000008 000
025 0113 PROGBITS WA- 0012CD54 0011CD54 00000008 0000 00000004 000
026 011A NOBITS WA- 0012CD60 0011CD5C 00000294 0000 00000008 000
027 0120 PROGBITS WA- 0012CFF8 0011CFF8 00002A18 0000 00000008 000
028 0126 NOBITS WA- 0012FA10 0011FA10 00026268 0000 00000010 000
029 012B PROGBITS --- 00000000 0011FA10 00002C41 0000 00000001 000
030 0001 STRTAB --- 00000000 00122651 00000137 0000 00000001 000



Декриптовка:
$ scetool -v -d eboot.bin eboot.elf

scetool 0.2.9.1 <PRIVATE BUILD:ErikPshat> (C) 2011-2013 by naehrwert
NP local license handling (C) 2012 by flatz
[Build Date/Time: Nov 23 2016/14:51:52]


Loaded keysets.

Loaded loader curves.

Loaded vsh curves.

Using keyset [appldr 0x001C 04.21]

Header decrypted.

Data decrypted.

ELF written to eboot.elf.

ErikPshat
27.11.2016, 06:10
Код криптовки (тест):
scetool.exe \
--verbose \
--raw \
--sce-type=SELF \
--compress-data=TRUE \
--skip-sections=TRUE \
--key-revision=001C \
--keyset=\
30325429E172C0D6193D5CDB0863B48D00000000000000000000000000000000\
83F4BA94FD5DBB09A7BF2818EBAFE066\
503172C9551308A87621ECEE90362D14889BFED2CF32B0B3E32A4F9FE527A41464B735E1ADBC6762 \
009EF86907782A318D4CC3617EBACE2480E73A46F6\
30 \
--self-auth-id=1010000001000003 \
--self-vendor-id=01000002 \
--self-type=NPDRM \
--self-app-version=0001000000000000 \
--self-fw-version=0004002100000000 \
--self-add-shdrs=TRUE \
--self-ctrl-flags=0000000000000000000000000000000000000000000000000000000000000000 \
--self-cap-flags=00000000000000000000000000000000000000000000003B0000000100002000 \
--np-license-type=FREE \
--np-app-type=EXEC \
--np-content-id=UP0181-NPUP31353_00-MLBTVPS3US000001 \
--np-klicensee=72F990788F9CFF745725F08E4C128387 \
--np-real-fname=EBOOT.BIN \
--np-add-sig=FALSE \
--encrypt EBOOT.ELF EBOOT.BIN

rhish777
27.11.2016, 10:33
Код криптовки (тест):
scetool.exe \
--verbose \
--raw \
--sce-type=SELF \
--compress-data=TRUE \
--skip-sections=TRUE \
--key-revision=001C \
--keyset=\
30325429E172C0D6193D5CDB0863B48D00000000000000000000000000000000\
83F4BA94FD5DBB09A7BF2818EBAFE066\
503172C9551308A87621ECEE90362D14889BFED2CF32B0B3E32A4F9FE527A41464B735E1ADBC6762 \
009EF86907782A318D4CC3617EBACE2480E73A46F6\
30 \
--self-auth-id=1010000001000003 \
--self-vendor-id=01000002 \
--self-type=NPDRM \
--self-app-version=0001000000000000 \
--self-fw-version=0004002100000000 \
--self-add-shdrs=TRUE \
--self-ctrl-flags=0000000000000000000000000000000000000000000000000000000000000000 \
--self-cap-flags=00000000000000000000000000000000000000000000003B0000000100002000 \
--np-license-type=FREE \
--np-app-type=EXEC \
--np-content-id=UP0181-NPUP31353_00-MLBTVPS3US000001 \
--np-klicensee=72F990788F9CFF745725F08E4C128387 \
--np-real-fname=EBOOT.BIN \
--np-add-sig=FALSE \
--encrypt EBOOT.ELF EBOOT.BIN


:lol::lol::lol: если бы все так было просто я бы уже давно подписал. Я просто посмотрел откуда ты придумал этот ключ.


Warning: Could not decrypt header.

SCE Header:
Magic 0x53434500 [OK]
Version 0x00000002
Key Revision 0x001C
Header Type [SELF]
Metadata Offset 0x00000480
Header Length 0x0000000000000B80
Data Length 0x0000000000112A60

SELF Header:
Header Type 0x0000000000000003
App Info Offset 0x0000000000000070
ELF Offset 0x0000000000000090
PH Offset 0x00000000000000D0
SH Offset 0x0000000000112E20
Section Info Offset 0x0000000000000290
SCE Version Offset 0x0000000000000390
Control Info Offset 0x00000000000003A0
Control Info Size 0x0000000000000100

Application Info:
Auth-ID [retail game/update]
Vendor-ID [normal]
SELF-Type [NPDRM Application]
Version 01.00

SCE Version:
Header Type 0x00000001
Present [FALSE]
Size 0x00000010
unknown_3 0x00000000

Control Info
Type Flags
Size 0x00000030
Next [TRUE]
Flags 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Control Info
Type Digest
Size 0x00000040
Next [TRUE]
Digest 1 62 7C B1 80 8A B9 38 E3 2C 8C 09 17 08 72 6A 57
9E 25 86 E4
Digest 2 2A 85 C8 28 02 28 75 E8 21 6A 12 E9 69 BA 05 EB
16 DA 56 FA
FW Version 45000 [04.50]

Control Info
Type NPDRM
Size 0x00000090
Next [FALSE]
Magic 0x4E504400 [OK]
unknown_0 0x00000001
Licence Type 0x00000003
App Type 0x00000001
ContentID UP0181-NPUP31353_00-MLBTVPS3US000001
Random Pad B2 C4 C3 D7 FC 83 CA E5 D6 52 E1 F5 8F D2 CF 14
CID_FN Hash 8B F5 CB DC 08 E3 2A 48 6B B9 4A D7 70 2C B2 3E
CI Hash 32 9A AD BE 3D 35 61 02 2D 5B BF 09 E1 E6 FA EA
unknown_1 0x0000000000000000
unknown_2 0x0000000000000000

Section Infos:
Idx Offset Size Compressed unk0 unk1 Encrypted
000 00000B80 00102808 [NO ] 00000000 00000000 [YES]
001 00103390 0000FA10 [NO ] 00000000 00000000 [YES]
002 00112DA0 00000000 [NO ] 00000000 00000000 [YES]
003 00112DA0 00000000 [NO ] 00000000 00000000 [YES]
004 00112DA0 00000000 [NO ] 00000000 00000000 [YES]
005 00112DA0 00000008 [NO ] 00000000 00000000 [NO ]
006 00112DB0 00000028 [NO ] 00000000 00000000 [NO ]
007 00112DE0 00000040 [NO ] 00000000 00000000 [NO ]

ELF64 Header:
Type [EXEC]
Machine [PPC64]
Version 0x00000001
Entry 0x0000000000121A38
Program Headers Offset 0x0000000000000040
Section Headers Offset 0x0000000000122788
Flags 0x00000000
Program Headers Count 0008
Section Headers Count 0031
SH String Index 0030

ELF64 Program Headers:
Idx Type Offset VAddr PAddr FileSize MemSize PPU SPU RSX Align
000 LOAD 00000000 00010000 00010000 00102808 00102808 X-R --R --- 00010000
001 LOAD 00110000 00120000 00120000 0000FA10 00035C78 -WR -WR --- 00010000
002 LOAD 0011FA10 00000000 00000000 00000000 00000000 --R --- --- 00010000
003 LOAD 0011FA10 00000000 00000000 00000000 00000000 -WR --- --- 00010000
004 LOAD 0011FA10 00000000 00000000 00000000 00000000 -WR -WR -WR 00010000
005 TLS 0011CD54 0012CD54 0012CD54 00000008 000002A0 --R --- --- 00000008
006 PARAMS 001027A0 001127A0 001127A0 00000028 00000028 --- --- --- 00000008
007 PRX 001027C8 001127C8 001127C8 00000040 00000040 --- --- --- 00000004

ELF64 Section Headers:
Idx Name Type Flags Address Offset Size ES Align LK
000 0000 NULL --- 00000000 00000000 00000000 0000 00000000 000
001 000B PROGBITS -AE 00010200 00000200 0000002C 0000 00000004 000
002 001F PROGBITS -AE 00010230 00000230 000E9F68 0000 00000008 000
003 0011 PROGBITS -AE 000FA198 000EA198 00000024 0000 00000004 000
004 0017 PROGBITS -AE 000FA1BC 000EA1BC 00003900 0000 00000004 000
005 0025 PROGBITS -A- 000FDABC 000EDABC 00000D84 0000 00000004 000
006 002F PROGBITS -A- 000FE840 000EE840 00000138 0000 00000008 000
007 0041 PROGBITS -A- 000FE978 000EE978 000048DC 0000 00000004 000
008 0055 PROGBITS -A- 00103254 000F3254 00000720 0000 00000004 000
009 0065 PROGBITS -A- 00103974 000F3974 00000004 0000 00000004 000
010 0072 PROGBITS -A- 00103978 000F3978 00000054 0000 00000004 000
011 007B PROGBITS -A- 001039CC 000F39CC 00000004 0000 00000004 000
012 0088 PROGBITS -A- 001039D0 000F39D0 00000004 0000 00000004 000
013 0096 PROGBITS -A- 001039D4 000F39D4 000003F4 0000 00000004 000
014 00A0 PROGBITS -A- 00103DC8 000F3DC8 00000004 0000 00000004 000
015 00AE PROGBITS -A- 00103DD0 000F3DD0 0000E9D0 0000 00000010 000
016 00B6 PROGBITS WA- 001127A0 001027A0 00000028 0000 00000008 000
017 00C6 PROGBITS -A- 001127C8 001027C8 00000040 0000 00000004 000
018 00DA PROGBITS WA- 00120000 00110000 00000028 0000 00000004 000
019 00E1 PROGBITS WA- 00120028 00110028 00000018 0000 00000004 000
020 00E8 PROGBITS WA- 00120040 00110040 00000004 0000 00000004 000
021 00ED PROGBITS WA- 00120048 00110048 000012C0 0000 00000008 000
022 00FA PROGBITS WA- 00121308 00111308 00000720 0000 00000004 000
023 0109 PROGBITS WA- 00121A28 00111A28 00006618 0000 00000008 000
024 010E PROGBITS WA- 00128040 00118040 00004D14 0000 00000008 000
025 0113 PROGBITS WA- 0012CD54 0011CD54 00000008 0000 00000004 000
026 011A NOBITS WA- 0012CD60 0011CD5C 00000294 0000 00000008 000
027 0120 PROGBITS WA- 0012CFF8 0011CFF8 00002A18 0000 00000008 000
028 0126 NOBITS WA- 0012FA10 0011FA10 00026268 0000 00000010 000
029 012B PROGBITS --- 00000000 0011FA10 00002C41 0000 00000001 000
030 0001 STRTAB --- 00000000 00122651 00000137 0000 00000001 000

ErikPshat
27.11.2016, 10:40
rhish777, погоди, я пока пытаюсь выяснить, откуда берутся такие цифры. Имеешь в виду keyset?
Ну пока код рабочий и подписывается. Что интересно, вот эти Digest 1 и 2 меня 2-ой генерится откуда-то, а первый правильный. Control Info
Type Digest
Size 0x00000040
Next [TRUE]
Digest 1 62 7C B1 80 8A B9 38 E3 2C 8C 09 17 08 72 6A 57
9E 25 86 E4
Digest 2 2A 85 C8 28 02 28 75 E8 21 6A 12 E9 69 BA 05 EB
16 DA 56 FA
Посмотри в хексе, перед секцией NPD эти 2 ключа вписаны. Но ведь я их не вводил, значит они откуда-то беруться или это хеши каких-то секций.

12194


scetool.exe \
--template=EBOOT_ORIG.BIN \
--sce-type=SELF \
--compress-data=TRUE \
--np-license-type=FREE \
--np-app-type=EXEC \
--np-content-id=UP0181-NPUP31353_00-MLBTVPS3US000001 \
--np-real-fname=EBOOT.BIN \
--encrypt EBOOT.ELF EBOOT.BIN

ErikPshat
27.11.2016, 15:49
rhish777, кстати, я этот свой код снова решил проверить в консоли и постоянно он выдаёт ошибки. Пол дня чесал репу, думал чо за фигня, ведь точно знаю, что обратный слеш делает перенос строки и вот же тестировал этот код и он отлично отрабатывал. Потом обнаружил, что запустил стандартную консоль Windows. А такой код оказывается в ней не работает :D И вспомнил, что я же запускал код из-под консоли MinGW через msys.bat.
А у тебя этот код хоть отрабатывал?

rhish777
27.11.2016, 20:25
rhish777, кстати, я этот свой код снова решил проверить в консоли и постоянно он выдаёт ошибки. Пол дня чесал репу, думал чо за фигня, ведь точно знаю, что обратный слеш делает перенос строки и вот же тестировал этот код и он отлично отрабатывал. Потом обнаружил, что запустил стандартную консоль Windows. А такой код оказывается в ней не работает :D И вспомнил, что я же запускал код из-под консоли MinGW через msys.bat.
А у тебя этот код хоть отрабатывал?
Обрабатывал если убрать слеши. Ну я проверял нечего не запускается стандартная ошибка с 17 на конце.

А если подписать через IDPS то получается сообщение что нужно купить игру.

Все же какого то параметра не хватает что бы запустить на официальной. Всегда ошибка с 17 на конце.

Но тогда мне не ясно почему от дисковой версии подпись давно найдена... Может NPDRM способ подписи старый в SCETOOL? Или просто сони нельзя забанить ключи от дисковой версии так как их миллион раскупили?

Одни догадки.

in1975
27.11.2016, 21:53
а нельзя обмануть через патч? оригинальный патч ссылается на подделку (дискового типа)?

rhish777
27.11.2016, 22:10
а нельзя обмануть через патч? оригинальный патч ссылается на подделку (дискового типа)?

Ошибка будет.

funsnake
29.11.2016, 21:19
C:\Users\Nunex\Desktop\PS3ZONE\ps3tools\ps3tools\tools\scetool\scetool.exe -l 72F990788F9CFF745725F08E4C128387 -i C:\Users\Nunex\Desktop\BREAK_~1\BREAK_~1\EBOOT~1.SEL
klicensee = 72F990788F9CFF745725F08E4C128387

scetool 0.2.9 <PRIVATE BUILD:naehrwert> (C) 2011-2013 by naehrwert
NP local license handling (C) 2012 by flatz

SCE Header:
Magic 0x53434500 [OK]
Version 0x00000002
Key Revision 0x001C
Header Type [SELF]
Metadata Offset 0x000004A0
Header Length 0x0000000000000A80
Data Length 0x00000000007A39D8
Metadata Info:
Key C7 31 A7 D8 7E 51 53 9E 48 CB FC B9 FB 9A 34 A8
IV BD 13 F7 75 51 85 55 85 7F 53 23 9A E6 1E 90 3D
Metadata Header:
Signature Input Length 0x00000000000009E0
unknown_0 0x00000001
Section Count 0x00000007
Key Count 0x00000034
Optional Header Size 0x00000030
unknown_1 0x00000000
unknown_2 0x00000000
Metadata Section Headers:
Idx Offset Size Type Index Hashed SHA1 Encrypted Key IV Compressed
000 00000A80 0070B9E8 02 00 [YES] 00 [YES] 06 07 [NO ]
001 00710A80 00090A08 02 01 [YES] 08 [YES] 0E 0F [NO ]
002 007A1488 00000000 02 02 [YES] 10 [YES] 16 17 [NO ]
003 007A1488 00000000 02 03 [YES] 18 [YES] 1E 1F [NO ]
004 007A1488 00000000 02 04 [YES] 20 [YES] 26 27 [NO ]
005 007A1500 000021A4 03 1D [YES] 28 [NO ] -- -- [NO ]
006 007A3C58 00000800 01 03 [YES] 2E [NO ] -- -- [NO ]
SCE File Keys:
00: 6D 15 D5 23 F7 DD A0 A6 42 71 EC 0D E9 02 D2 E6
01: 15 99 11 13 00 00 00 00 00 00 00 00 00 00 00 00
02: 4F 3C D1 77 46 F4 38 21 83 83 B4 24 CD 55 48 3C
03: 4B AA F0 17 AE 05 87 B5 36 70 5C C6 67 9C 0B 6E
04: 83 1A 1A FC FB F4 99 E7 3F F3 5A 22 6E 73 9E BE
05: 01 3C A5 A0 04 5E 08 AF 33 92 FD 8E 08 95 08 EA
06: 48 1F 81 F1 F8 FE 5F 37 E7 6B 14 50 E5 49 DB 44
07: 55 3D 26 88 56 FF F7 D2 BB 4B BD 69 FE 33 3D E8
08: 42 EA 8B 1E 56 DD 79 19 F9 E0 7E D3 E6 18 05 3C
09: 59 96 6C 49 00 00 00 00 00 00 00 00 00 00 00 00
0A: 1A DD 6A AC ED DE 4C F8 D1 73 C3 1A 91 0F AD DA
0B: E4 CF E8 FD 14 63 09 B4 78 4E 88 80 6B B7 82 2F
0C: B2 C9 C1 92 ED A8 BD AF B3 F5 F6 C4 7C B8 7C 8E
0D: 32 44 17 AC 24 96 67 A8 D2 04 65 97 A9 BB CA C7
0E: A8 FD 4F 98 CD 9E 97 0A 8D E4 44 A3 CE 4D 69 75
0F: 3E 4B 21 57 88 B0 EE 3F 02 6C 47 26 1E 4F 73 51
10: 7D F0 0F 84 BD E8 4C E8 C0 F2 A3 D5 30 D4 DE 77
11: 32 96 83 E2 00 00 00 00 00 00 00 00 00 00 00 00
12: EC F4 53 E7 7C D4 96 69 8B A4 72 75 FE 22 8B 0E
13: 14 73 D0 E0 45 4E A6 6A FC F8 0B 26 87 27 B5 AD
14: 21 18 C3 E8 B6 72 B8 A0 92 5B 74 CA 84 0F 33 1D
15: 61 4F BD FD AE 00 B2 3E EF 01 C6 7B 50 82 C5 3C
16: 27 FD A9 43 07 6D 2C 1B 3C B8 8A F6 15 FD E8 ED
17: FB E1 41 7E 95 1B 99 23 D1 B6 25 7B 35 1C 78 51
18: 1D 27 1C B8 AB B8 92 D6 86 AB 9A 74 A1 8A 11 4D
19: C2 F1 91 5E 00 00 00 00 00 00 00 00 00 00 00 00
1A: 43 37 95 0C 8D EB BE E9 27 A1 B4 37 0A D1 48 07
1B: 3B 7E 70 13 4A AC 9C 85 2C 00 CB 70 D9 F3 4A 9A
1C: B1 E3 07 65 95 7D DB E7 BC 93 C4 5C DD 0D DD 1E
1D: EC 5B A6 41 6F E3 67 C3 A6 F7 21 65 35 32 66 09
1E: CA 4C 11 E8 DB 81 74 76 31 EE 03 4D C0 4B 7D FF
1F: 45 CB FF DF 77 D9 FD 33 96 58 BF 35 70 B4 5F D8
20: 9E 06 D3 18 F4 C0 93 40 04 DE 62 5B 07 7A 56 BA
21: 1C C6 51 8E 00 00 00 00 00 00 00 00 00 00 00 00
22: F5 0F 1D 59 0F 10 6F 77 55 17 A9 3D AC 50 BB 63
23: C9 DA 2D D3 DD 43 E0 FC 04 F9 EC 80 91 25 C9 EA
24: 9B 40 67 B3 66 6D 97 80 4A D8 37 BE D3 F6 E1 F9
25: AB 62 07 C3 27 17 C3 B7 91 C2 9E 85 DF CF 02 7D
26: 35 49 60 82 EE E8 1C 5B 90 70 E7 29 36 54 56 83
27: BA 97 67 2E 17 A2 92 53 F5 9C 15 46 0F E6 B6 2F
28: BF 54 F1 76 C0 91 B1 F6 91 E9 C4 D9 6E 1D AE FC
29: 9E C6 5A F8 00 00 00 00 00 00 00 00 00 00 00 00
2A: F2 DE 63 2F 3A 41 03 0E C3 8D 6F DE A6 24 4E CA
2B: 00 AC F4 76 70 A1 02 FD 5C 62 F6 68 E5 18 67 6C
2C: C6 1F E7 25 2F 49 8D 35 E0 F7 86 C0 09 12 CD 54
2D: 48 49 7C 92 1F 88 B5 D6 8E 9F 8A 62 D5 E8 6C 17
2E: A9 B9 BD 5F 6C D9 F1 9A 2C 28 C1 99 12 3E 1D 94
2F: 6D 68 B2 CB 00 00 00 00 00 00 00 00 00 00 00 00
30: C4 AE 16 E2 92 B6 43 30 5B 00 2D 19 3D D8 7B EA
31: 6A 8B CE 0D 57 0A C1 06 64 5E 77 54 E2 23 08 2D
32: 4E 75 9C AA 4D 14 3C 28 75 31 7B 60 E4 05 92 9F
33: E1 23 88 E4 37 10 58 FE 3C 40 5D 56 56 25 F9 93
SELF Header:
Header Type 0x0000000000000003
App Info Offset 0x0000000000000070
ELF Offset 0x0000000000000090
PH Offset 0x00000000000000D0
SH Offset 0x00000000007A3C58
Section Info Offset 0x0000000000000290
SCE Version Offset 0x0000000000000390
Control Info Offset 0x00000000000003C0
Control Info Size 0x0000000000000100
Application Info:
Auth-ID [retail game/update]
Vendor-ID [normal]
SELF-Type [NPDRM Application]
Version 04.20
SCE Version:
Header Type 0x00000001
Present [TRUE]
Size 0x00000030
unknown_3 0x00000000
Control Info
Type Flags
Size 0x00000030
Next [TRUE]
Flags 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Control Info
Type Digest
Size 0x00000040
Next [TRUE]
Digest 1 62 7C B1 80 8A B9 38 E3 2C 8C 09 17 08 72 6A 57
9E 25 86 E4
Digest 2 F5 C7 43 C1 97 DF 1D 24 26 2A 5A C0 06 92 E1 64
F0 28 89 73
FW Version 42000 [04.20]
Control Info
Type NPDRM
Size 0x00000090
Next [FALSE]
Magic 0x4E504400 [OK]
unknown_0 0x00000001
Licence Type 0x00000003
App Type 0x00000021
ContentID UP0002-BLUS31273_00-ABSTARWARSMANUAL
Random Pad 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
CID_FN Hash B2 E7 06 8C 41 36 CB 26 16 5E 22 C9 9D 8B 8B C6
CI Hash 78 EC E7 00 08 7A 5D 56 7A CE 67 21 2E FE DB C8
unknown_1 0x0000000000000000
unknown_2 0x0000000000000000
Optional Header
Type Capability Flags
Size 0x00000030
Next [FALSE]
unknown_3 0x0000000000000000
unknown_4 0x0000000000000000
Flags 0x000000000000003B [ 0x01 0x02 REFTOOL DEBUG RETAIL ]
unknown_6 0x00000001
unknown_7 0x00002000
Section Infos:
Idx Offset Size Compressed unk0 unk1 Encrypted
000 00000A80 0070B9E8 [NO ] 00000000 00000000 [YES]
001 00710A80 00090A08 [NO ] 00000000 00000000 [YES]
002 007A1488 00000000 [NO ] 00000000 00000000 [YES]
003 007A1488 00000000 [NO ] 00000000 00000000 [YES]
004 007A1488 00000000 [NO ] 00000000 00000000 [YES]
005 0075A77C 000001BC [NO ] 00000000 00000000 [NO ]
006 0070C400 00000028 [NO ] 00000000 00000000 [NO ]
007 0070C428 00000040 [NO ] 00000000 00000000 [NO ]
ELF64 Header:
Type [EXEC]
Machine [PPC64]
Version 0x00000001
Entry 0x000000000072EDF8
Program Headers Offset 0x0000000000000040
Section Headers Offset 0x00000000007A31D8
Flags 0x00000000
Program Headers Count 0008
Section Headers Count 0032
SH String Index 0031
ELF64 Program Headers:
Idx Type Offset VAddr PAddr FileSize MemSize PPU SPU RSX Align
000 LOAD 00000000 00010000 00010000 0070B9E8 0070B9E8 X-R --R --- 00010000
001 LOAD 00710000 00720000 00720000 00090A08 008A5F90 -WR -WR --- 00010000
002 LOAD 007A0A08 00000000 00000000 00000000 00000000 --R --- --- 00010000
003 LOAD 007A0A08 00000000 00000000 00000000 00000000 -WR --- --- 00010000
004 LOAD 007A0A08 00000000 00000000 00000000 00000000 -WR -WR -WR 00010000
005 TLS 00759CFC 00769CFC 00769CFC 000001BC 000001BC --R --- --- 00000008
006 PARAMS 0070B980 0071B980 0071B980 00000028 00000028 --- --- --- 00000008
007 PRX 0070B9A8 0071B9A8 0071B9A8 00000040 00000040 --- --- --- 00000004
ELF64 Section Headers:
Idx Name Type Flags Address Offset Size ES Align LK
000 0000 NULL --- 00000000 00000000 00000000 0000 00000000 000
001 0001 PROGBITS -AE 00010200 00000200 0000002C 0000 00000004 000
002 0007 PROGBITS -AE 00010230 00000230 00579710 0000 00000010 000
003 000D PROGBITS -AE 00589940 00579940 00000024 0000 00000004 000
004 0013 PROGBITS -AE 00589964 00579964 00001E60 0000 00000004 000
005 0021 PROGBITS -A- 0058B7C4 0057B7C4 000EAD98 0000 00000004 000
006 002B PROGBITS -A- 00676560 00666560 0003D2EC 0000 00000008 000
007 003D PROGBITS -A- 006B384C 006A384C 00000134 0000 00000004 000
008 0051 PROGBITS -A- 006B3980 006A3980 000003CC 0000 00000004 000
009 0061 PROGBITS -A- 006B3D4C 006A3D4C 00000004 0000 00000004 000
010 006E PROGBITS -A- 006B3D50 006A3D50 00000004 0000 00000004 000
011 007B PROGBITS -A- 006B3D54 006A3D54 00000004 0000 00000004 000
012 0089 PROGBITS -A- 006B3D58 006A3D58 00000370 0000 00000004 000
013 0093 PROGBITS -A- 006B40C8 006A40C8 00000004 0000 00000004 000
014 00A1 PROGBITS -A- 006B40D0 006A40D0 000493F0 0000 00000010 000
015 00A9 PROGBITS -A- 006FD500 006ED500 0001E480 0000 00000080 000
016 00B4 PROGBITS WA- 0071B980 0070B980 00000028 0000 00000008 000
017 00C4 PROGBITS -A- 0071B9A8 0070B9A8 00000040 0000 00000004 000
018 00D8 PROGBITS WA- 00720000 00710000 00000160 0000 00000004 000
019 00DF PROGBITS WA- 00720160 00710160 00000130 0000 00000004 000
020 00E6 PROGBITS WA- 00720290 00710290 00000004 0000 00000004 000
021 00EB PROGBITS WA- 00720298 00710298 00000190 0000 00000008 000
022 00F8 PROGBITS WA- 00720428 00710428 000003CC 0000 00000004 000
023 0107 PROGBITS WA- 007207F8 007107F8 000483F0 0000 00000008 000
024 010C PROGBITS WA- 00768BE8 00758BE8 00001114 0000 00000008 000
025 0111 PROGBITS WA- 00769CFC 00759CFC 00000008 0000 00000004 000
026 0118 PROGBITS WA- 00769D08 00759D08 000001B0 0000 00000008 000
027 011E PROGBITS WA- 00769EB8 00759EB8 00046B50 0000 00000008 000
028 0124 NOBITS WA- 007B0A80 007A0A80 00815510 0000 00000080 000
029 0129 PROGBITS --- 00000000 007A0A80 000021A4 0000 00000001 000
030 0135 PROGBITS --- 00000000 007A2C24 00000464 0000 00000004 000
031 0144 STRTAB --- 00000000 007A3088 0000014E 0000 00000001 000

why when i resign the original eboot of angry birds to npdrm eboot , the " Random Pad 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " is 00....???

i can put the Metadata Offset 0x000004A0, but have this problem of the random pad...

its because the klic key is not correct whe i decrypt and encrypt the eboot?

rhish777
29.11.2016, 22:03
why when i resign the original eboot of angry birds to npdrm eboot , the " Random Pad 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " is 00....???

i can put the Metadata Offset 0x000004A0, but have this problem of the random pad...

its because the klic key is not correct whe i decrypt and encrypt the eboot?

Because there is not yet a full signature.
Я уже писал что какого то параметра все еще не хватает в scetool потому проверочный ключ не совпадает с таким как в спойлере
SCE File Keys:
00: 6D 15 D5 23 F7 DD A0 A6 42 71 EC 0D E9 02 D2 E6
01: 15 99 11 13 00 00 00 00 00 00 00 00 00 00 00 00
02: 4F 3C D1 77 46 F4 38 21 83 83 B4 24 CD 55 48 3C
03: 4B AA F0 17 AE 05 87 B5 36 70 5C C6 67 9C 0B 6E
04: 83 1A 1A FC FB F4 99 E7 3F F3 5A 22 6E 73 9E BE
05: 01 3C A5 A0 04 5E 08 AF 33 92 FD 8E 08 95 08 EA
06: 48 1F 81 F1 F8 FE 5F 37 E7 6B 14 50 E5 49 DB 44
07: 55 3D 26 88 56 FF F7 D2 BB 4B BD 69 FE 33 3D E8
08: 42 EA 8B 1E 56 DD 79 19 F9 E0 7E D3 E6 18 05 3C
09: 59 96 6C 49 00 00 00 00 00 00 00 00 00 00 00 00
0A: 1A DD 6A AC ED DE 4C F8 D1 73 C3 1A 91 0F AD DA
0B: E4 CF E8 FD 14 63 09 B4 78 4E 88 80 6B B7 82 2F
0C: B2 C9 C1 92 ED A8 BD AF B3 F5 F6 C4 7C B8 7C 8E
0D: 32 44 17 AC 24 96 67 A8 D2 04 65 97 A9 BB CA C7
0E: A8 FD 4F 98 CD 9E 97 0A 8D E4 44 A3 CE 4D 69 75
0F: 3E 4B 21 57 88 B0 EE 3F 02 6C 47 26 1E 4F 73 51
10: 7D F0 0F 84 BD E8 4C E8 C0 F2 A3 D5 30 D4 DE 77
11: 32 96 83 E2 00 00 00 00 00 00 00 00 00 00 00 00
12: EC F4 53 E7 7C D4 96 69 8B A4 72 75 FE 22 8B 0E
13: 14 73 D0 E0 45 4E A6 6A FC F8 0B 26 87 27 B5 AD
14: 21 18 C3 E8 B6 72 B8 A0 92 5B 74 CA 84 0F 33 1D
15: 61 4F BD FD AE 00 B2 3E EF 01 C6 7B 50 82 C5 3C
16: 27 FD A9 43 07 6D 2C 1B 3C B8 8A F6 15 FD E8 ED
17: FB E1 41 7E 95 1B 99 23 D1 B6 25 7B 35 1C 78 51
18: 1D 27 1C B8 AB B8 92 D6 86 AB 9A 74 A1 8A 11 4D
19: C2 F1 91 5E 00 00 00 00 00 00 00 00 00 00 00 00
1A: 43 37 95 0C 8D EB BE E9 27 A1 B4 37 0A D1 48 07
1B: 3B 7E 70 13 4A AC 9C 85 2C 00 CB 70 D9 F3 4A 9A
1C: B1 E3 07 65 95 7D DB E7 BC 93 C4 5C DD 0D DD 1E
1D: EC 5B A6 41 6F E3 67 C3 A6 F7 21 65 35 32 66 09
1E: CA 4C 11 E8 DB 81 74 76 31 EE 03 4D C0 4B 7D FF
1F: 45 CB FF DF 77 D9 FD 33 96 58 BF 35 70 B4 5F D8
20: 9E 06 D3 18 F4 C0 93 40 04 DE 62 5B 07 7A 56 BA
21: 1C C6 51 8E 00 00 00 00 00 00 00 00 00 00 00 00
22: F5 0F 1D 59 0F 10 6F 77 55 17 A9 3D AC 50 BB 63
23: C9 DA 2D D3 DD 43 E0 FC 04 F9 EC 80 91 25 C9 EA
24: 9B 40 67 B3 66 6D 97 80 4A D8 37 BE D3 F6 E1 F9
25: AB 62 07 C3 27 17 C3 B7 91 C2 9E 85 DF CF 02 7D
26: 35 49 60 82 EE E8 1C 5B 90 70 E7 29 36 54 56 83
27: BA 97 67 2E 17 A2 92 53 F5 9C 15 46 0F E6 B6 2F
28: BF 54 F1 76 C0 91 B1 F6 91 E9 C4 D9 6E 1D AE FC
29: 9E C6 5A F8 00 00 00 00 00 00 00 00 00 00 00 00
2A: F2 DE 63 2F 3A 41 03 0E C3 8D 6F DE A6 24 4E CA
2B: 00 AC F4 76 70 A1 02 FD 5C 62 F6 68 E5 18 67 6C
2C: C6 1F E7 25 2F 49 8D 35 E0 F7 86 C0 09 12 CD 54
2D: 48 49 7C 92 1F 88 B5 D6 8E 9F 8A 62 D5 E8 6C 17
2E: A9 B9 BD 5F 6C D9 F1 9A 2C 28 C1 99 12 3E 1D 94
2F: 6D 68 B2 CB 00 00 00 00 00 00 00 00 00 00 00 00
30: C4 AE 16 E2 92 B6 43 30 5B 00 2D 19 3D D8 7B EA
31: 6A 8B CE 0D 57 0A C1 06 64 5E 77 54 E2 23 08 2D
32: 4E 75 9C AA 4D 14 3C 28 75 31 7B 60 E4 05 92 9F
33: E1 23 88 E4 37 10 58 FE 3C 40 5D 56 56 25 F9 93

Любой хоть дисковый, хоть NPDRM должен ровняется именно этому ключу в 33 секции по 16 байт. Причем если смотреть через хекс редактор, этого ключа не увидеть. Его друзья мои именно нужно подобрать. Тогда любые приложение какие хочешь можно будет запустить на OFW

funsnake
29.11.2016, 22:46
C:\Users\Nunex\Desktop\PS3ZONE\ps3tools\ps3tools\tools\scetool\scetool.exe -l 72F990788F9CFF745725F08E4C128387 -i C:\Users\Nunex\Desktop\BIRD\NPLU31~1\NPLU31~1\USRDIR\EBOOT.BIN
klicensee = 72F990788F9CFF745725F08E4C128387

scetool 0.2.9 <PRIVATE BUILD:naehrwert> (C) 2011-2013 by naehrwert
NP local license handling (C) 2012 by flatz

SCE Header:
Magic 0x53434500 [OK]
Version 0x00000002
Key Revision 0x001C
Header Type [SELF]
Metadata Offset 0x000004A0
Header Length 0x0000000000000A80
Data Length 0x00000000007A39D8

Metadata Info:
Key 5E FD 40 56 03 92 AE C4 90 EF 84 06 E0 60 98 84
IV 83 F4 BA 94 FD 5D BB 09 A7 BF 28 18 EB AF E0 BE

Metadata Header:
Signature Input Length 0x00000000000009E0
unknown_0 0x00000001
Section Count 0x00000007
Key Count 0x00000034
Optional Header Size 0x00000030
unknown_1 0x00000000
unknown_2 0x00000000

Metadata Section Headers:
Idx Offset Size Type Index Hashed SHA1 Encrypted Key IV Compressed
000 00000A80 0070B9E8 02 00 [YES] 00 [YES] 06 07 [NO ]
001 00710A80 00090A08 02 01 [YES] 08 [YES] 0E 0F [NO ]
002 007A1488 00000000 02 02 [YES] 10 [YES] 16 17 [NO ]
003 007A1488 00000000 02 03 [YES] 18 [YES] 1E 1F [NO ]
004 007A1488 00000000 02 04 [YES] 20 [YES] 26 27 [NO ]
005 007A1500 000021A4 03 1D [YES] 28 [NO ] -- -- [NO ]
006 007A3C58 00000800 01 03 [YES] 2E [NO ] -- -- [NO ]

SCE File Keys:
00: 2E 34 83 6F 72 FA 9A C1 E0 33 03 F9 DA CD DB 56
01: 8C 3D 84 8B 00 00 00 00 00 00 00 00 00 00 00 00
02: 19 75 BF D4 17 F2 79 FC 12 59 37 C4 D2 62 5D 78
03: 5C 22 AF D6 96 C0 5F 2A 40 A4 91 B1 1A FF 52 65
04: DF 60 20 FA 6B 23 0F 50 AB 29 D1 F7 35 F9 27 20
05: 7E D3 E5 DD 73 B8 A5 50 25 DD A7 6C DC F3 DE 2F
06: C5 37 D0 50 6B 34 02 42 65 4A 0B 90 C5 90 AE 32
07: BF 60 35 E2 BB 0C A0 DD AF 6A 84 3E 00 00 00 00
08: EF 8E 28 6D 79 9A C9 CE 79 51 BA 02 E0 23 0D BD
09: EF 5B D9 D0 00 00 00 00 00 00 00 00 00 00 00 00
0A: 19 75 BF D4 17 F2 79 FC 12 59 37 C4 D2 62 5D 78
0B: 5C 22 AF D6 96 C0 5F 2A 40 A4 91 B1 1A FF 52 65
0C: DF 60 20 FA 6B 23 0F 50 AB 29 D1 F7 35 F9 27 20
0D: 7E D3 E5 DD 73 B8 A5 50 25 DD A7 6C DC F3 DE 2F
0E: 31 05 52 66 8D 0B 0A 32 8C F7 DF 18 A9 3B 6F 29
0F: 91 46 36 AF 12 64 64 AD EF C9 69 E6 00 00 00 00
10: C3 5D 00 84 BD 98 3B 29 D6 26 6F E8 34 EF 22 60
11: 3C A0 04 E8 00 00 00 00 00 00 00 00 00 00 00 00
12: 19 75 BF D4 17 F2 79 FC 12 59 37 C4 D2 62 5D 78
13: 5C 22 AF D6 96 C0 5F 2A 40 A4 91 B1 1A FF 52 65
14: DF 60 20 FA 6B 23 0F 50 AB 29 D1 F7 35 F9 27 20
15: 7E D3 E5 DD 73 B8 A5 50 25 DD A7 6C DC F3 DE 2F
16: E7 EA D5 76 BF 4D 65 41 95 DD 7D 73 9E 60 0A 5B
17: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
18: C3 5D 00 84 BD 98 3B 29 D6 26 6F E8 34 EF 22 60
19: 3C A0 04 E8 00 00 00 00 00 00 00 00 00 00 00 00
1A: 19 75 BF D4 17 F2 79 FC 12 59 37 C4 D2 62 5D 78
1B: 5C 22 AF D6 96 C0 5F 2A 40 A4 91 B1 1A FF 52 65
1C: DF 60 20 FA 6B 23 0F 50 AB 29 D1 F7 35 F9 27 20
1D: 7E D3 E5 DD 73 B8 A5 50 25 DD A7 6C DC F3 DE 2F
1E: E7 EA D5 76 BF 4D 65 41 95 DD 7D 73 9E 60 0A 5B
1F: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
20: C3 5D 00 84 BD 98 3B 29 D6 26 6F E8 34 EF 22 60
21: 3C A0 04 E8 00 00 00 00 00 00 00 00 00 00 00 00
22: 19 75 BF D4 17 F2 79 FC 12 59 37 C4 D2 62 5D 78
23: 5C 22 AF D6 96 C0 5F 2A 40 A4 91 B1 1A FF 52 65
24: DF 60 20 FA 6B 23 0F 50 AB 29 D1 F7 35 F9 27 20
25: 7E D3 E5 DD 73 B8 A5 50 25 DD A7 6C DC F3 DE 2F
26: E7 EA D5 76 BF 4D 65 41 95 DD 7D 73 9E 60 0A 5B
27: 9D 4E 1A A6 C6 D5 36 F0 7C 82 A1 E5 00 00 00 00
28: 7A DC 36 1F C9 58 65 A4 10 A6 AE 7B AA 56 5E 0F
29: D3 11 5E 22 00 00 00 00 00 00 00 00 00 00 00 00
2A: 19 75 BF D4 17 F2 79 FC 12 59 37 C4 D2 62 5D 78
2B: 5C 22 AF D6 96 C0 5F 2A 40 A4 91 B1 1A FF 52 65
2C: DF 60 20 FA 6B 23 0F 50 AB 29 D1 F7 35 F9 27 20
2D: 7E D3 E5 DD 73 B8 A5 50 25 DD A7 6C DC F3 DE 2F
2E: E1 39 50 AA A2 0F 46 26 66 D3 41 C4 C1 99 0E 7D
2F: F8 01 68 CA 00 00 00 00 00 00 00 00 00 00 00 00
30: 19 75 BF D4 17 F2 79 FC 12 59 37 C4 D2 62 5D 78
31: 5C 22 AF D6 96 C0 5F 2A 40 A4 91 B1 1A FF 52 65
32: DF 60 20 FA 6B 23 0F 50 AB 29 D1 F7 35 F9 27 20
33: 7E D3 E5 DD 73 B8 A5 50 25 DD A7 6C DC F3 DE 2F

SELF Header:
Header Type 0x0000000000000003
App Info Offset 0x0000000000000070
ELF Offset 0x0000000000000090
PH Offset 0x00000000000000D0
SH Offset 0x00000000007A3C58
Section Info Offset 0x0000000000000290
SCE Version Offset 0x0000000000000390
Control Info Offset 0x00000000000003C0
Control Info Size 0x0000000000000100

Application Info:
Auth-ID [retail game/update]
Vendor-ID [normal]
SELF-Type [NPDRM Application]
Version 01.00

SCE Version:
Header Type 0x00000001
Present [TRUE]
Size 0x00000030
unknown_3 0x00000000

Control Info
Type Flags
Size 0x00000030
Next [TRUE]
Flags 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Control Info
Type Digest
Size 0x00000040
Next [TRUE]
Digest 1 62 7C B1 80 8A B9 38 E3 2C 8C 09 17 08 72 6A 57
9E 25 86 E4
Digest 2 85 85 4E 77 9C 9D 4A 10 5E 35 CF 90 38 37 40 89
64 6D 51 7D
FW Version 44000 [04.40]

Control Info
Type NPDRM
Size 0x00000090
Next [FALSE]
Magic 0x4E504400 [OK]
unknown_0 0x00000001
Licence Type 0x00000003
App Type 0x00000021
ContentID UP0002-BLUS31273_00-ABSTARWARSMANUAL
Random Pad 9C 9B 4B BD 56 02 30 64 90 F2 96 3A 4E AA 40 D7
CID_FN Hash B2 E7 06 8C 41 36 CB 26 16 5E 22 C9 9D 8B 8B C6
CI Hash 74 3C 15 33 74 0E 84 89 7F 2F 21 7A E1 6C 44 1A
unknown_1 0x0000000000000000
unknown_2 0x0000000000000000
Optional Header
Type Capability Flags
Size 0x00000030
Next [FALSE]
unknown_3 0x0000000000000000
unknown_4 0x0000000000000000
Flags 0x000000000000003B [ 0x01 0x02 REFTOOL DEBUG RETAIL ]
unknown_6 0x00000001
unknown_7 0x00002000

Section Infos:
Idx Offset Size Compressed unk0 unk1 Encrypted
000 00000A80 0070B9E8 [NO ] 00000000 00000000 [YES]
001 00710A80 00090A08 [NO ] 00000000 00000000 [YES]
002 007A1488 00000000 [NO ] 00000000 00000000 [YES]
003 007A1488 00000000 [NO ] 00000000 00000000 [YES]
004 007A1488 00000000 [NO ] 00000000 00000000 [YES]
005 0075A77C 000001BC [NO ] 00000000 00000000 [NO ]
006 0070C400 00000028 [NO ] 00000000 00000000 [NO ]
007 0070C428 00000040 [NO ] 00000000 00000000 [NO ]

ELF64 Header:
Type [EXEC]
Machine [PPC64]
Version 0x00000001
Entry 0x000000000072EDF8
Program Headers Offset 0x0000000000000040
Section Headers Offset 0x00000000007A31D8
Flags 0x00000000
Program Headers Count 0008
Section Headers Count 0032
SH String Index 0031

ELF64 Program Headers:
Idx Type Offset VAddr PAddr FileSize MemSize PPU SPU RSX Align
000 LOAD 00000000 00010000 00010000 0070B9E8 0070B9E8 X-R --R --- 00010000
001 LOAD 00710000 00720000 00720000 00090A08 008A5F90 -WR -WR --- 00010000
002 LOAD 007A0A08 00000000 00000000 00000000 00000000 --R --- --- 00010000
003 LOAD 007A0A08 00000000 00000000 00000000 00000000 -WR --- --- 00010000
004 LOAD 007A0A08 00000000 00000000 00000000 00000000 -WR -WR -WR 00010000
005 TLS 00759CFC 00769CFC 00769CFC 000001BC 000001BC --R --- --- 00000008
006 PARAMS 0070B980 0071B980 0071B980 00000028 00000028 --- --- --- 00000008
007 PRX 0070B9A8 0071B9A8 0071B9A8 00000040 00000040 --- --- --- 00000004

ELF64 Section Headers:
Idx Name Type Flags Address Offset Size ES Align LK
000 0000 NULL --- 00000000 00000000 00000000 0000 00000000 000
001 0001 PROGBITS -AE 00010200 00000200 0000002C 0000 00000004 000
002 0007 PROGBITS -AE 00010230 00000230 00579710 0000 00000010 000
003 000D PROGBITS -AE 00589940 00579940 00000024 0000 00000004 000
004 0013 PROGBITS -AE 00589964 00579964 00001E60 0000 00000004 000
005 0021 PROGBITS -A- 0058B7C4 0057B7C4 000EAD98 0000 00000004 000
006 002B PROGBITS -A- 00676560 00666560 0003D2EC 0000 00000008 000
007 003D PROGBITS -A- 006B384C 006A384C 00000134 0000 00000004 000
008 0051 PROGBITS -A- 006B3980 006A3980 000003CC 0000 00000004 000
009 0061 PROGBITS -A- 006B3D4C 006A3D4C 00000004 0000 00000004 000
010 006E PROGBITS -A- 006B3D50 006A3D50 00000004 0000 00000004 000
011 007B PROGBITS -A- 006B3D54 006A3D54 00000004 0000 00000004 000
012 0089 PROGBITS -A- 006B3D58 006A3D58 00000370 0000 00000004 000
013 0093 PROGBITS -A- 006B40C8 006A40C8 00000004 0000 00000004 000
014 00A1 PROGBITS -A- 006B40D0 006A40D0 000493F0 0000 00000010 000
015 00A9 PROGBITS -A- 006FD500 006ED500 0001E480 0000 00000080 000
016 00B4 PROGBITS WA- 0071B980 0070B980 00000028 0000 00000008 000
017 00C4 PROGBITS -A- 0071B9A8 0070B9A8 00000040 0000 00000004 000
018 00D8 PROGBITS WA- 00720000 00710000 00000160 0000 00000004 000
019 00DF PROGBITS WA- 00720160 00710160 00000130 0000 00000004 000
020 00E6 PROGBITS WA- 00720290 00710290 00000004 0000 00000004 000
021 00EB PROGBITS WA- 00720298 00710298 00000190 0000 00000008 000
022 00F8 PROGBITS WA- 00720428 00710428 000003CC 0000 00000004 000
023 0107 PROGBITS WA- 007207F8 007107F8 000483F0 0000 00000008 000
024 010C PROGBITS WA- 00768BE8 00758BE8 00001114 0000 00000008 000
025 0111 PROGBITS WA- 00769CFC 00759CFC 00000008 0000 00000004 000
026 0118 PROGBITS WA- 00769D08 00759D08 000001B0 0000 00000008 000
027 011E PROGBITS WA- 00769EB8 00759EB8 00046B50 0000 00000008 000
028 0124 NOBITS WA- 007B0A80 007A0A80 00815510 0000 00000080 000
029 0129 PROGBITS --- 00000000 007A0A80 000021A4 0000 00000001 000
030 0135 PROGBITS --- 00000000 007A2C24 00000464 0000 00000004 000
031 0144 STRTAB --- 00000000 007A3088 0000014E 0000 00000001 000

Hm , can you explain this then? because i thing this is right...
or not?

from UP0002-BLUS31273_00-ABSTARWARSMANUAL .


Sorry for any mistake mate, im not english :)

ErikPshat
30.11.2016, 03:28
Кстати, есть ещё такая утилитка:make_fself_npdrm.exe EBOOT.ELF EBOOT.BIN

funsnake
30.11.2016, 15:46
Кстати, есть ещё такая утилитка:make_fself_npdrm.exe EBOOT.ELF EBOOT.BIN


then , my new post with the new code is valid?

ErikPshat
01.12.2016, 06:21
then , my new post with the new code is valid?
Yes, very similar. How did you do this?

funsnake
01.12.2016, 09:02
Yes, very similar. How did you do this?


It runs well on OFW ;)

Signing some more games wihtout update , to see if runs perfect :)

ErikPshat
01.12.2016, 10:03
funsnake, share a secret :blush:

funsnake
01.12.2016, 19:58
funsnake, share a secret :blush:

a Huge secret :)

Well , you must talk to catalinnc.

Ask him for "[the PS3] [OFW] Angry_Birds_Star_Wars_PS3-of iCON [BLUS31273] 450MB " , the method he used to bypass ;)

rhish777
01.12.2016, 22:11
funsnake, share a secret :blush:

Да нет тут никакого секрета. В этой игре есть установочный патч а в этом патче лежит тот самый ебоот который яко бы кто то подписал.
Очевидно школьник хочет привлечь внимание.

Вот тот самый файл. EBOOT.BIN (http://rgho.st/6jSn72fnT)

funsnake
01.12.2016, 22:31
Да нет тут никакого секрета. В этой игре есть установочный патч а в этом патче лежит тот самый ебоот который яко бы кто то подписал.
Очевидно школьник хочет привлечь внимание.

Вот тот самый файл. EBOOT.BIN (http://rgho.st/6jSn72fnT)

First i don't want attention , just trying to help.

Second, This game has an installation patch ???? well , theres no patch , but if you insist... ok...

Enjoy your opinion ;)

rhish777
01.12.2016, 22:45
First i don't want attention , just trying to help.

Second, This game has an installation patch ???? well , theres no patch , but if you insist... ok...

Enjoy your opinion ;)

Есть патч у этой игры. Он вшит в самой игре в папке PS3_GAME\INSDIR\DATA000.PKG
Название патча UP0002-BLUS31273_00-ABSTARWARSMANUAL

Можно попробовать сконвертировать игру нашем методом. Уверен что она запустится.

Спасибо тебе за инфу.

funsnake
01.12.2016, 23:01
Есть патч у этой игры. Он вшит в самой игре в папке PS3_GAME\INSDIR\DATA000.PKG
Название патча UP0002-BLUS31273_00-ABSTARWARSMANUAL

Можно попробовать сконвертировать игру нашем методом. Уверен что она запустится.

Спасибо тебе за инфу.


OK, thanks for the sugestion ;)

: Blush:

ErikPshat
24.12.2016, 09:36
scetool -v -0 SELF -1 FALSE -s FALSE -2 001C -m 5EFD40560392AEC490EF8406E060988483F4BA94FD5DBB09A7BF2818EBAFE06600000000000009E0 000000010000000700000034000000300000000000000000 -3 1010000001000003 -4 01000002 -5 NPDRM -A 0001000000000000 -6 0004004000000000 -7 TRUE -8 0000000000000000000000000000000000000000000000000000000000000000 -9 00000000000000000000000000000000000000000000003B0000000100002000 -b FREE -c UEXEC -f UP0002-BLUS31273_00-ABSTARWARSMANUAL -g EBOOT.BIN -j TRUE -e EBOOT.BIN.elf EBOOT.BIN.ENC

ErikPshat
30.12.2016, 04:40
Меня первое что смущает - это то, что первый Metadata Offset 0x00000480 такой всегда выходит.
А у подписанных EBOOT.BIN самой сони он такой Metadata Offset 0x000004A0
Это потому, что scetool генерирует секцию SCE Version только в 0x10 байт, т.е. Present=FALSE.
А должен генерировать в Present=TRUE, это когда в секции SCE Version презентуются дополнительные данные, ещё на 0x20 байт.

Секция SCE Version имеет позицию 0x00000390 и должна иметь размер 0x30 байт, вместо 0x10.
Вот на картинке желтым цветом секция SCE Version, синим цветом - размер 0x30.
Следом идёт секция 00000001 - Control Info [Flags] - размером 0x30
Следом идёт секция 00000002 - Control Info [Digest] - размером 0x40
Следом идёт секция 00000003 - Control Info [NPDRM] - размером 0x90

12372

Поэтому Metadata Offset 0x00000480 съезжает на 0x20 байт назад.

P.S. Добавил во вложение в шапку файлы закладок для Hex Workshop (http://nnmclub.to/forum/viewtopic.php?t=942795), а как ими пользоваться есть инструкция здесь (http://www.pspx.ru/forum/showthread.php?t=87213).

E2E41
25.04.2017, 08:42
для сведения последние блок из EBOOT.BIN от патча длинною 8 это последняя часть контрольной суммы SHA-1 если выкинуть блок длинною 30

http://s019.radikal.ru/i624/1704/ba/dcbe2efe68e4t.jpg (http://radikal.ru/big/7dgltsibrdmoe)

ErikPshat
25.04.2017, 15:32
E2E41, ах, ты имеешь в виду, что в EBOOT.BIN из PSN последние 8 байт являются частью контрольной суммы SHA-1 всего файла, без учёта последних 0x30 (48) байт. Ну так ведь и надо объяснять по-русски :) Да, действительно так, спасибо за полезную информацию :thank_you:

Вот я скачал Update-патч для игры "AFRO SAMURAI ". Извлёк из PKG файл EBOOT.BIN, выделил от начала до конца весь файл и отступил от конца 0x30 байт, потом посчитал контрольную сумму SHA-1 выделения:

12747


[B]SHA-1: F9302F5AC6AEAC7D1B8B76282AAAF64C1F1F65CE

YAGAMI55
01.05.2017, 21:44
Кто знает в демке DmC есть .sprx?
если есть, скиньте EBOOT.BIN и .sprx
хотя мне кажется FULL в DEMO превратится
но похимичу,если скините,сам не могу скачивать игрухи с нэта,извиняюсь,но трафиковая система до сих пор в моем гос-ве

YAGAMI55 добавил 01.05.2017 в 21:44
ErikPshat, вопрос к тебе непосредственно, хотя и другие помогут если скажут мне как запустить PSN "FREE" игры
например Bioshok 2 из Rapture Edition
суть такая-pkg игра,устанавливается с диска,но без самого диска не играется(привязка к LIC.DAT)
если поместить LIC.DAT и LIC.EDAT в игру,ничего не меняется
если поменять у игры HG на DG то LIC.EDAT виден для запуска,запускается игра,но поврежденные данные надпись красуется

ErikPshat
02.05.2017, 09:56
если есть, скиньте EBOOT.BIN и .sprx
Есть: http://rgho.st/8cMZk2mlP
Скачал демку "NPEB90473 DmC Devil May Cry Demo", вроде ты её хотел. Залил во вложение, пригодится.
Только в EBOOT.BIN и в SPRX в секции NPD записан ContentID 00000440 4E 50 44 00 00 00 00 01 00 00 00 03 00 00 00 01 NPD.............
00000450 45 50 30 31 30 32 2D 4E 50 45 42 39 30 34 37 33 EP0102-NPEB90473
00000460 5F 30 30 2D 44 4D 43 44 45 4D 4F 30 30 30 30 30 _00-DMCDEMO00000
00000470 30 30 30 31 0001


Так что тебе придётся дисковую версию под этот NPEB90473 и ContentID подгонять. Либо в этой секции менять ContentID на дисковый и подсчитывать новую контрольную сумму. Ну ты думаю знаешь как это делается при подписывании файлов с новым ContentID через make_npdata, тем более уже найдена контрольная сумма (http://www.pspx.ru/forum/showthread.php?p=1114302) всего файла, записанная в конце.

По поводу вопроса ко мне, то я фиг знает что с этим делать. Я предлагаю заняться доработкой исходников scetool (https://github.com/ErikPshat/scetool), там требуется только дописать этот недостающий блок 0x30 байт, появившийся в NP TRUE.

in1975
02.05.2017, 16:48
Я предлагаю заняться доработкой исходников scetool, там требуется только дописать этот недостающий блок 0x30 байт, появившийся в NP TRUE.

ErikPshat, а что в этих 30 байтах д.б ?

ErikPshat
02.05.2017, 19:48
ErikPshat, а что в этих 30 байтах д.б ?
Вот на скриншоте я выделял жёлтым цветом: http://www.pspx.ru/forum/showpost.php?p=1109690

Там на дисковых EBOOT.BIN и SPRX эта жёлтая секция имеет размер 0x10 (16) байт - одна строка 16-ричного кода.
А в NP (из PSN) EBOOT.BIN и SPRX эта жёлтая секция имеет размер 0x30 (48) байт - три строки 16-ричного кода.

Вот фактически в этом основная разница.
В жёлтой секции смотри, вторые 4 байта показывают TRUE 00000001 - это NP EBOOT.
А вот если вторые 4 байта 00000000, значит это FALSE - это дисковый EBOOT.
Ну и в NP эти 2 строчки с кодом не хватает, поэтому не запускается переподписанный с HDD и нельзя переподписать Мультимен.

Ну возьми любой NP EBOOT и декриптуй. Потом снова подпиши, он получится дисковы и сравни с оригиналом. Там я выложил HBK для дискового и NP, он всё покажет.

in1975
02.05.2017, 20:19
ErikPshat, первые 16 байт (0х10) одинаковые у всех дисковых EBOOT.BIN (у разных игр)

ErikPshat
02.05.2017, 20:30
in1975, да, поэтому у дисковых стоит в третьих 4 байтах 00000010 вместо 00000030 - это размер этой секции, где я выделил синим прямоугольником.

Только не пиши биты - это одна восьмая от одного байта :) 1 байт = 8 бит.

in1975
02.05.2017, 21:19
вроде в дисковой также. может в PSN меньше?
12752

in1975
02.05.2017, 21:38
Посмотрел несколько eboot. ContentID в дисковых eboot не вижу (смотрите картинки). Похоже в этом и разница.

PSN http://pixs.ru/showimage/2017050223_7517410_26061942.jpg
Disk http://pixs.ru/showimage/diablo2jpg_3912202_26061862.jpg

З.ы. не смотрите на патчи, они же из PSN

ErikPshat
02.05.2017, 23:53
in1975, эмм, я имею в виду, когда подписываешь файл через scetool, то там секция всегда получается 0x10, вместо 0x30.

YAGAMI55
03.05.2017, 01:11
ErikPshat, попробовал
все таки одной контрольной суммы мало

ErikPshat
03.05.2017, 05:55
YAGAMI55, а кто сказал, что там одна контрольная сумма? Я говорил, что помимо контрольной суммы всего файла нужно подсчитать ещё другую контрольную сумму секции NPD, вернее там 2 хэша, которые подсчитывает сама make_npdata.

YAGAMI55
03.05.2017, 09:23
ErikPshat, поясни,голова не варит
через make_npdata подпишу без разницы во что EDAT/SDAT файл ради CN_HASH? потом впишу 8 б из SHA-1?
распиши по порядку,точнее что с make_npdata делать

ErikPshat
03.05.2017, 21:11
YAGAMI55, да забей, у тебя думаю не получится. После ContentID идёт рандомный ключ "Digest" 16 байт. Затем идут 2 хеша по 16 байт. Итого 3 строчки ключей.

Первая строка - рандомный ключ 16 байт
Вторая строка - хеш "Названия файла" вместе с расширением 16 байт
Третья строка - хеш всех предыдущих строк секции NPD, включая ключи первой и второй строки.

Вот и вся махинация. Эта секция NPD генерируется точно так же, как EDAT.
Открой любой EDAT, например LIC.EDAT, подписанный моей утилитой make_npdata из моей утилиты "PS3GameConvert_v091".
Ты увидишь в начале Magik Header - NPD. Не правда ли какое удивительное сходство с тем, что имеется в SPRX и EBOOT? :)
Затем смотри далее, ты увидишь ContentID игры в этом EDAT.
А следом ты увидишь, после строчки с нулями вроде бы, эти 3 странные строки, заполненные какими-то данными. Вот про них я и говорю, про эти 3 ключа по 16 байт. Причём в первом ключе там написан копирайт нашего сайта :D что-то типа "GoodLuckFromPSPx" (точно дословно не помню уже) - это и есть первый рандомный ключ 16 байт.
Далее идёт строка с хешем 16 байт. Она генерируется от названия файла с расширением "NTJOBCODE.PPU.SPRX".
Далее третья строка с хешем, которая потом берёт предыдущие 0x60 байт и генерирует контрольную сумму 16 байт.
И следом идёт ещё строка, обычно забита нулями - это 8 байт "времени подписи" и ещё 8 байт тоже какого-то времени, всего 16 байт Но они не используются, поэтому нулевые.
А дальше, этот заголовок секции NPD, больше ничем похоже не проверяется. Нам туда лезть не следует, там идёт шифрованное тело файла с метаданными и прочей хнёй. Там есть ещё проверочные хеши, но это отдельно хеш только секции метаданных и т.д.

Так вот, тебе же надо подменить ContentID одной игры на другую. У тебя сразу изменится хеш 3-го ключа. Усекаешь?
Первй рандомный ключ уже вставлен готовый, но у тебя именно с ним могут возникнуть проблемы, я тебе ниже объясню.
Второй хеш уже и так готовый под название этого файла.

Как тебе подсчитать этот 3-ий хеш? Ты ведь подменил ContentID на другой.
А ответ я тебе уже говорил - нужно воспользоваться утилитой make_npdata :) и подписать любой файл, пусть даже пустой, с новым ContentID и теми же параметрами, как у подопытного. Но название этого пустого файла должно быть при подписи указываться такое же - "NTJOBCODE.PPU.SPRX".
А параметры я смотрю у файла такие:
NPD Version = 1
License Types = 3 Free License
Content ID = как записано в LIC.EDAT при конвертировании дисковой версии. Ты не забыл ещё? У нас при конвертировании там записывается вот что (смотри исходники "PS3GameConvert_v091"): echo. Encrypting LIC.DAT to LIC.EDAT:
echo.
%tools%\sfk partcopy "%DEST%\%NAME%\USRDIR\EBOOT.BIN" 0x450 0x24 %temp%\6.tmp -yes
echo.
set /p contentID=<%temp%\6.tmp
set cID=%contentID:~0,7%%DIRNAME%%contentID:~16,20%
%tools%\make_npdata -e LIC.DAT "%DEST%\%DIRNAME%\LICDIR\LIC.EDAT" 1 1 3 0 16 3 00 %cID% 1
echo. LIC.EDAT succesfully encripted.


То есть, это 0x24 байта берутся из EBOOT.BIN апдейта из позиции 0x450. Где вместо cID вставляется вот это cID=%contentID:~0,7%%DIRNAME%%contentID:~16,20%. То есть, в этот ContentID вставляется вместо %DIRNAME% - TitleID игры NP, например NPUB12345.
Так вот, генерируешь EDAT с такими параметрами и получаешь готовую секцию NPD с тремя хешами.
Первый 16 байт - рандомный набор цифр - типа "GoodLuckFromPSPx"
Второй 16 байт - хеш названия генерируемого файла
Третий 16 байт - хеш всего заголовка NPD с новым ContentID (0x60 байт).
Теперь забираешь этот блок и вставляешь в SPRX.
Затем, в конце файла, если ты не забыл, нужно подсчитать новую контрольную сумму всего файла, минус 0x30 байт. Это последние 8 байт от SHA-1.

Уфф, не хотел отвечать на нубские вопросы, знал, что придётся много объяснять :D


in1975, вот что ты за скриншоты хекс-редактора выкладываешь?
Я же буквально в предыдущих постах объяснял по несколько раз, что одна строка 16-ричного кода - это 16 байт.
А ты выкладываешь скриншоты, где у тебя в строке 24 байта.
У тебя же съехали все смещения, нарушилось 0x10 выравнивание и код становится нечитаемой кашей. Ну как можно так читать код?
И закрой ты все лишние окна, которые пустые и в данном случае не нужны и вообще очень редко используются - это слева выезжающее окно "Data Visualiser", потом "Structures" и справа "Data Inspector".

ErikPshat
03.05.2017, 23:20
YAGAMI55, короче, ещё раз...

Вот я беру оригинальный файл из PSN - NTJOBCODE.PPU.SPRX

12755

А это я создаю пустой текстовик и переименовываю его как угодно, например FILE.DAT.
Теперь шифрую его с тем же ContentID и теми же параметрами, как в исходнике SPRX и получаю вот такой маленький файл:

12756

<format>: 1 - EDAT
<data>: 1 - Finalized data
<version>: 1 - EDAT version 1
<compress>: 0 - Disable compression
<block>: Block size in KB (16)
<license>: 3 - Free license (uses klic as key)
<type>: 00 - Common
<cID>: Content ID (EP0102-NPEB90473_00-DMCDEMO000000001)
<klic>: 1 - NPDRM OMAC key 1 (free license key)

Получился формат кодирования: 1 1 1 0 16 3 00 EP0102-NPEB90473_00-DMCDEMO000000001 1
Приступаем к шифрованию пустышки: make_npdata -e FILE.DAT NTJOBCODE.PPU.SPRX 1 1 1 0 16 3 00 EP0102-NPEB90473_00-DMCDEMO000000001 1


И вот что получаем на скриншоте выше. Я специально поместил скриншоты поближе, чтобы можно было сравнить все байты. Как видно, они все сходятся с оригиналом, за исключением 3-ёх строк хешей.
1-ая строка рандомного хеша отличается, потому что у меня там свой рандомный набор цифр "GoodLuckFromPSPx". Если туда забить тот же самый набор цифр, как у оригинала, а это можно сделать в исходниках вместо этого моего копирайта и заново скомпилировать make_npdata, тогда эта строка была бы в точности, как у оригинала, т.е. совпала бы точно. Я тебе писал об этой сложности, почему у тебя не получится, но потом удалил, т.к. в принципе это не имеет значения. Этот рандомный набор символов просто соль, которой подсаливается обычно хеш, чтобы он всегда был разный.
2-ая строка, как видно, совпала точно, потому что я использовал то же имя файла с расширением.
3-ья строка уже сгенерировалась другая, в соответствии с предыдущими данными 0x60 байт. И это правильно. Таким образом у нас изменённый ContentID стал валидным. А вот если бы я подогнал бы первый рандомный хеш, как у оригинала, тогда бы у меня и 3-ья контрольная сумма совпала.

Теперь осталось только подсчитать контрольную сумму всего файла:

12757

После этого NPD блока идёт секция метаданных, даже если мы подписывали пустой файл. А далее идёт контрольная сумма блока метаданных и ECDSA, которая, как мы знаем, не проверяется, потому что в EDAT мы туда генерируем так же рандомные значения ECDSA от фонаря фейковые. Я в утилите make_npdata её вообще занулил, чтобы не мозолила глаза.

То есть, на этом примере я тебе показал, что можно сгенерировать даже оригинал с нуля, тупо из ничего, из пустого файла. И это даёт надежду, что можно подменить ContentID без палева.

YAGAMI55
04.05.2017, 02:13
ErikPshat, вот это я и хотел прочесть
просто суть в том,что подписывая файлы через разные утилиты,эти хэши не всегда одинаковые,например TASR и BREAK-N-MAKE разные хэши дают,поэтому переспросил,проверю,отпишусь

YAGAMI55 добавил 04.05.2017 в 02:13
Проверил,результат отрицательный

ErikPshat
04.05.2017, 03:33
YAGAMI55, а разные хеши потому у разных утилит, потому что они генерируют разный рандомный первый ключ. Отсюда и разный подсчёт третьего хеша. А второй хеш всегда должен быть одинаковым, т.к. название файла одинаковое.

Ах да, ещё один момент, только дошло до меня. Эти данные в EBOOT вместе с SPRX подписываются ведь кликом.
Я вытащил его: 4034250AB9018EF901C098E1790A907F
Команда для подписывания пустышки будет такая: make_npdata -e FILE.DAT NTJOBCODE.PPU.SPRX 1 1 1 0 16 3 00 EP0102-NPEB90473_00-DMCDEMO000000001 8 4034250AB9018EF901C098E1790A907F



И вот тебе прикол. Я специально скомпилировал make_npdata, как говорил, под тот самый рандомный ключ в SPRX, второй ключ сам хешируется из названия файла такой же, а вот третий ключ генерируется на основании первых двух вместе со всей предыдущей секцией 0x60 + klicense, которая заложена в EBOOT и SPRX. И что ты представляешь? Третий хеш тоже получился в точности такой. Можешь сам посмотреть, сравнить с оригинальным SPRX и удивиться. Получилась точная копия оригинала в заголовке NPD.
http://www.pspx.ru/forum/attachment.php?attachmentid=12755
http://www.pspx.ru/forum/attachment.php?attachmentid=12765Так что переделывай свою работу, но уже с кликом и моим make_npdata под этот SPRX (хотя наверное не обязательно, т.к. тут важет клик). Потом выделяешь готовый заголовок NPD - это 0x70 байт (там как раз захватится весь заголовок NPD вместе с тремя хешами) и в SPRX так же выделяешь эти 0x70 байтов и аккуратно вставляешь. Следи, чтобы последующий код не сдвинулся, а то все смещения похерятся.

И тебе задание: декриптуй этот файл (он формата EDAT естессна) и напиши мне ответ, что я там написал...

YAGAMI55
04.05.2017, 10:34
ErikPshat, я с клик подписал
файл все равно не рабочим получается,там что то ещё есть
BREAK-N-MAKE при декриптовки жалуется на неверную сигнатуру,не описывая где именно ошибка,понять бы...

ErikPshat
04.05.2017, 14:52
YAGAMI55, эмм, ты не ответил на моё задание, что я там написал в пустышке...

Чтобы декриптовать мой маленький файл и посмотреть что там написано, нужно использовать такой скрипт: make_npdata -v -d NTJOBCODE.PPU.SPRX FILE.DAT 8 4034250AB9018EF901C098E1790A907F


И у меня есть ещё подозрение, что в играх, где есть такие SPRX, они все подписаны с кликом из EBOOT.
Поэтому возможно эти FALSE SPRX можно так же сконвертировать в SDAT-формат, но используя для них клик, а не просто фри-лицензию, как для остальных файлов.

И это, ты знаешь, как получить Klicense для SPRX из EBOOT.BIN?
Просто кидаешь эти шифрованные EBOOT.BIN и SPRX (обязательно оба) в папку ps3tools\tools\scetool и запускаешь утилиту BruteForce.exe (только снять галочку "Fix EBOOT Version @ 0x428). Она сама декриптует EBOOT, переименует и заново его переподпишет, следом она найдёт Klicense и декриптует SPRX, потом его переименует и переподпишет. Ну это для теста переподписывание.

Потом, я тебе писал про SPRX. А как ты подменял ContentID в EBOOT?
Надеюсь ты для начала посмотрел этот заголовок секции NPD, а там такие данные (на скриншоте выше я не просто так указал эти данные у SPRX):

NPD version: 1 - EDAT version 1
NPD license: 3 - Free license (uses klic as key)
NPD type: 01 - PS2 EDAT and Theme/Avatar/Activation key

То есть, в EBOOT появился 01 в конце строчки NPD. Это значит, что эта демка активируется файлом Активации (Activation key).
Собсно это уже наталкивает на мысль, что подделывать эту секцию нужно по другому. Хотя возможно наверное можно отвязать активацию и сменить тип на 0.
Но в декриптованном EBOOT есть в двух местах упоминание на NPEB90473, что мы пока поменять не можем. Поэтому тут подмена ContentID на BLUS/BLES не проканает. Нужно тогда дисковую версию подгонять под NPEB90473, а не наоборот. И там видимо понадобится Activation key.

YAGAMI55
04.05.2017, 21:31
ErikPshat, я менял ContentID у демо .sprx на дисковый
да все сделал и знаю как делается
там что то ещё есть,чего то не хватает

ErikPshat
04.05.2017, 22:04
YAGAMI55, скорее всего эта секция NPD участвует в формировании ключа декриптовки самого тела. Если подменить там данные, тогда изменится хеш и не подойдёт ключ для декриптовки тела. Я так думаю. И возможно в SPRX проверяется ECDSA подпись в конце файла - это 0x28 байт, не считая последних 8 байт.

Короче нужно собирать весь файл один к одному. А для этого нужно править исходники scetool. Но это большая головная боль. Когда я начинаю сильно думать, то у меня начинает голова болеть :) так что я уже стар для этого.

YAGAMI55
04.05.2017, 22:48
YAGAMI55, скорее всего эта секция NPD участвует в формировании ключа декриптовки самого тела. Если подменить там данные, тогда изменится хеш и не подойдёт ключ для декриптовки тела. Я так думаю. И возможно в SPRX проверяется ECDSA подпись в конце файла - это 0x28 байт, не считая последних 8 байт.

Короче нужно собирать весь файл один к одному. А для этого нужно править исходники scetool. Но это большая головная боль. Когда я начинаю сильно думать, то у меня начинает голова болеть :) так что я уже стар для этого.
совершенно верно,мои мысли прочёл
я подозреваю что конечные суммы это суммы NPD секции,секции control info,секции prx и самого файла целиком(что уже известно)

in1975
06.05.2017, 06:07
А может можно связаться с автором scetool ? Копаться в чужом коде - так себе занятие :)

riku.kh3
06.05.2017, 08:33
NPDRM SELF'ы генерируются с фейковой подписью, они только на CFW будут работать.

E2E41
06.08.2017, 23:50
ECDSA подпись в конце файла - это 0x28 байт, не считая последних 8 байт.
или эти 0x28 байт вторая половина контрольной суммы, а есть ли возможность подогнать(забить нулями)
файл под контрольную сумму?

ErikPshat
07.08.2017, 12:05
или эти 0x28 байт вторая половина контрольной суммы
Нет, в исходниках всё видно. Эти 0х28 байт состоят из двух половинок по 0х14 байт, так называемые "R" и "S". А из чего они генерируются, пока не известно.

а есть ли возможность подогнать(забить нулями)
файл под контрольную сумму?
То есть, подменить в файле какие-то неважные данные, чтобы в конечном счёте сошлось с имеющейся ECDSA? Теоретически это возможно, но это как перебирать 0x28-значный пароль к архиву :)

SergeSm
18.08.2017, 22:45
Я, наверное, жутко нубские вещи скажу... но попробую)))
Предпоследние 0х28 байт можно забить любой фигней - запустится и на CFW и на OFW (если взять изначально рабочий файл), причем без пересчета контрольной суммы (что логично). Если тронуть те самые хеши после NPD - то файл работать перестает (генерировал пустышку по инструкции, заменял байты, контрольную сумму в последних восьми байтах пересчитывал, да). Либо ECDSA находится в теле файла, как на картинке с
http://www.psdevwiki.com/ps3/SELF_File_Format_and_Decryption
и как-то связана с этой NPD-секцией, либо (там же написано странное):
uint8_t digest[16]; // sha-1 hash of debug self/sprx created with make_fself_npdrm
это не просто соль, а какая-то контрольная сумма? и, по идее, у плойки должна быть возможность получить эту сумму из данного файла же... (ну, например, посчитать при декриптовании) - тогда и сейчас ее можно же получить из того же файла?

Я точно где-то чего-то не понимаю, мб кто-то знающий попробует? Еще раз сори за нубство

P.S.: я скорее всего сделал что-нить не так - ну не понимаю я в этом:unknw:, поэтому лучше перепроверить все мои действия...

ErikPshat
19.08.2017, 01:17
Предпоследние 0х28 байт можно забить любой фигней - запустится и на CFW и на OFW (если взять изначально рабочий файл), причем без пересчета контрольной суммы (что логично).
А ты точно проверял на рабочем EBOOT.BIN от игры? Я раньше уже говорил, что вполне возможно, что эта ECDSA даже не проверяется, как у EDAT/SDAT, так что вполне может быть, что проблема даже не в ней, а в неправильной сборке секций при создании SELF NPDRM. По крайней мере, не правильно собирается количество ключей.

Насчёт предпоследних 0x28 байт ECDSA, то в EDAT это точно они. Я сравнивал эту область с EBOOT, PKG, SPRX, и как будто эта подпись кругом находится именно там, т.к. расположение её в конце, перед последними 8 байт хеша всего файла, кругом схожа.

SergeSm
19.08.2017, 09:55
я для проверки в обоих eboot (и в bles и в npeb) забил эти байты нулями и ff (случайно тыкал 0 и f) - после переноса заработало

еще, если длина "encapsulated data" кратна не 16 а 8 (=0хXXXXXX8), то появляется выравнивание 8 байт перед последними 0х30 байт - его тоже можно забить чем-нибудь, но уже с пересчетом контрольной суммы в последних 0х08 байтах - также будет работать. ощущение, что после конца файла остается какой-то мусор от промежуточных вычислений... но почему-то не обрезается под корень:unknw:

и вот я не разобрался с офсетами чего-то... но если я правильно понял, то "metadata offset"=0x04A0 указывает как раз на последний хеш в секции npdrm. поэтому, видимо, и перестает работать файл, если заменить три контрольных суммы сгенерированными из пустышки через make_npdata? или там как-то хитро смещение вычисляется?

E2E41
19.08.2017, 14:28
вообще в качестве эксперимента предлагаю переподписать один eboot от дисковой версии [BLUS30767] в NPDRM если добьемся 100% совпадению eboot из патча думаю будет проще понять сам механизм(патч не изменяет версию приложения там какие то фиксы к геймархивам)

ErikPshat
19.08.2017, 17:47
SergeSm, интересное наблюдение, это всё меняет. Хотя, если смотреть на спецификацию на вики, то ECDSA выходит находится не в конце файла, а в секции Metadata Header (http://www.psdevwiki.com/ps3/SELF_File_Format_and_Decryption#Metadata_Header). Либо я там что-то не понял по английски, может она вычисляется от начала файла 0x0 до длины этой секции. Там как-то неопределённо написано. Хотя, как я вижу в разных типах self-файлов, то это должна быть она, эта ECDSA именно на предпоследних 0x28 байтах и она состоит из двух половинок S и R.

если заменить три контрольных суммы сгенерированными из пустышки через make_npdata?
Именно про это я и производил эксперимент где-то недавно, ах да, вот на этой странице сверху.
Файл после этого переставал работать, видимо есть ещё где-то проверка, либо тестер мог допустить ошибку.

E2E41, согласен, нужно для начала подогнать код так, чтобы добиться 100% совпадения. Хотя бы выстроить все секции аналогично, выставить правильное количество ключей, оно должно быть в NPDRM 0x33 штуки, тогда как утилиты конвертирования в NPDRM выдают там количество, как у дисковых EBOOT.

Собственно можно вручную собирать секции по частям, но надо вычислить все точки с контрольными суммами и последовательность их вычислений.
А вы там понимаете в спецификации все смещения и понятия uint64/32/16/8 или расписать спецификацию?
Думаю лучше, для начала, расписать спецификацию и разложить по полочкам, чтобы потом использовать в качестве библиотеки, а то там на вики как-то не чётко выстроены указатели.

предлагаю переподписать один eboot от дисковой версии [BLUS30767] в NPDRM
Думаю проще взять лицензионный NPDRM-файл, декриптовать его и подписывать до 100% совпадения с оригиналом.

SergeSm
19.08.2017, 20:55
мне тоже показалось, что если взять подготовленную к переносу PSN-игру (к тому же маленькую), то будет проще экспериментировать.

в спецификации там вроде все понятно. но по-полочкам разложить было бы очень полезно, наверное, много таких как я, которые не очень в материале, потому что пропустили в свое время переподписи под прошивку 3.55 и работу с прогами от геохота и т.п.
да, еще... вот если бы полностью доделать тот волшебный файл закладок для HWP... но там, наверное, слишком много сложностей, условий и всякого... а так очень помогает!
ну и единственное, мне непонятно вычисление смещений (офсетов) в заголовке файла. получается, это не смещение от текущей позиции, а абсолютный адрес от начала файла? (тут я, наверное, просто туплю, говорят же: заменить байты по офсету 0хХХХХ, подразумевая смещение от начала файла)

ну и по-поводу переподписи до 100% совпадения... рано или поздно придется определиться, первые 16 байт после content_id[48] в NPD-секции - это просто случайный набор или все-таки контрольная сумма файла, как там и написано:
uint8_t digest[16]; // sha-1 hash of debug self/sprx created with make_fself_npdrm
дебаг версия - это же незашифрованная версия файла? можно ли получить такое же число из имеющегося зашифрованного файла?
просто, если этот параметр важен, то замена этих сумм один к одному на нерабочем файле - даст опять же нерабочий файл...

сори, наверное, непонятно объясняю...

riku.kh3
19.08.2017, 21:35
я для проверки в обоих eboot (и в bles и в npeb) забил эти байты нулями и ff (случайно тыкал 0 и f) - после переноса заработало
Какой версии были файлы? Насколько помню, на OFW некоторые части NPDRM SELF'ов сверяются только когда они подписаны ключами <=3.55.

ErikPshat
19.08.2017, 21:52
да, еще... вот если бы полностью доделать тот волшебный файл закладок для HWP... но там, наверное, слишком много сложностей, условий и всякого... а так очень помогает!
HBK для HWSHP :) Ну в заголовке SCE - это статичные смещения от начала файла. В Hex Workshop можешь нажать редактирование закладки и там увидишь, либо прямое смещение, либо формулу, которая делает прыжки и прибавки к смещениям. Там же, в заголовке SCE, указаны основные позиции секций, а потом в каждой секции идут свои абсолютные смещения. Поэтому сначала идёт прыжок на секцию из SCE, а затем в той секции есть свой заголовок, где указаны смещения и размеры параметров. Вообщем, никакого шаманства, чистая математика.

первые 16 байт после content_id[48] в NPD-секции - это просто случайный набор или все-таки контрольная сумма файла, как там и написано:
uint8_t digest[16]; // sha-1 hash of debug self/sprx created with make_fself_npdrm
Собственно этот NPD собирается так же, как EDAT/SDAT файлы, а там, после content_id[48] вроде бы ничего не говорится про хэши. Там просто генерится рандомный набор чисел, который подставляется, как соль. Поэтому многие туда вписывают названия, типа DRINK TO VODKA. всё равно следом 16 байт генерится хэш от названия файла и следом 16 байт Хеш предыдущих 0x60 байт. Вот, как внизу слева я подписал эти строчки на первых двух скриншотах: http://www.pspx.ru/forum/showpost.php?p=1114677

Насчёт sha-1 hash - это вообще нужно проверить. Взять EBOOT от любого обновления (NPDRM), декриптовать его, затем зашифровать его как дебаг с помощью make_fself_npdrm, посчитать SHA-1 и сверится с этой строкой в оригинале. Дебаг - это скорее подписанный файл, но не с DRM шифрованием. Эмм, не всё сразу, нужно бы мысли собрать, а для начала нужно бы дорожную карту сообразить и нарисовать библиотеку для справки и сверки.

SergeSm
20.08.2017, 06:25
Какой версии были файлы? Насколько помню, на OFW некоторые части NPDRM SELF'ов сверяются только когда они подписаны ключами <=3.55.

по версиям не подскажу, а так, в последний раз использовались:
- Farming Simulator 15 [BLES02108] с патчем - заменялись предпоследние 0х28 байт в обоих EBOOT.BIN;
- Super Stardust HD [NPEA00014] скачанная отсюда - заменялись предпоследние 0х28 байт и перед ними 0х08 байт с пересчетом контрольной суммы.
Если нужно какие-то еще протестить - то особых сложностей нету, лишь бы игра была с возможностью запуска на OFW через УПД... или такую сложно найти для версии ниже 3.55? (в смысле, патч будет для более старшей версии)

Насчёт sha-1 hash - это вообще нужно проверить. Взять EBOOT от любого обновления (NPDRM), декриптовать его, затем зашифровать его как дебаг с помощью make_fself_npdrm, посчитать SHA-1 и сверится с этой строкой в оригинале. Дебаг - это скорее подписанный файл, но не с DRM шифрованием. Эмм, не всё сразу, нужно бы мысли собрать, а для начала нужно бы дорожную карту сообразить и нарисовать библиотеку для справки и сверки.

меня смущает то, что судя по офсетам, третий хэш попадает в область метадаты... (возможно я тут не разобрался) и может участвовать в ее контрольной сумме. плойка вряд ли будет перешифровывать игровой файл в дебаг, чтобы получить контрольную сумму... в общем, это я чему: или это число можно как-то получить до шифрования и тогда третий хэш сформируется правильно и шанс есть... или это действительно случайное число и тогда его придется угадать так, чтобы третий хэш совпал с тем, что "должно быть" - а это уже проблема...

ну, это просто мои предположения, возможно проблема вовсе не в этом, тут надо бы, чтобы разобрались разбирающиеся в вопросе люди)))

P.S.: начиналось все с того, что есть игрушка After Hours Athletes [BCES01335] - в ней кроме EBOOT.BIN есть три .self файла (для каждой игры) и один из них содержится в оф.патче и работает на OFW (то есть, можно сравнить? правда она без мува не запускается). А еще есть же бесплатный singstar, правда не знаю, поможет ли он чем-нибудь. если надо - могу скачать и выложить куда-нибудь...

ErikPshat
20.08.2017, 15:08
по версиям не подскажу
Ну это видно в ScetoolGui в строке FW Version.
А ты случайно не спутал, в игре есть 2 папки, папка NPEB выступает как загрузочная Bootable и оттуда происходит запуск EBOOT.BIN, а папка BLES как данные игры, поэтому, лежащий в ней EBOOT.BIN просто так лежит мёртвым грузом. Ну и конечно в обоих папках лежит один и тот же EBOOT.BIN от обновления из PSN.
В смысле, может ты только поменял предпоследние 0x28 байт у EBOOT.BIN в папке BLES?

плойка вряд ли будет перешифровывать игровой файл в дебаг, чтобы получить контрольную сумму...
Логично. По-моему, при шифровании в NPDRM этот ELF проходит 2 этапа. Сначала он преобразуется через make_self, а затем через make_fself.

А кто-нибудь знает утилиту, которая декриптует и вытаскивает отдельно Metadata? Потому что мы видим на выходе только чистый ELF, а секция метаданных декриптуется в памяти и остаётся невидимой глазу.

SergeSm
20.08.2017, 19:41
В смысле, может ты только поменял предпоследние 0x28 байт у EBOOT.BIN в папке BLES?

менял в обоих файлах (в двух папках), для подстраховки, а в PSN-игре там всего одна папка.

а вообще, было бы хорошо, если бы кто-то еще перепроверил... если у трех тестеров будут одинаковые результаты - то будет достовернее же... и если дойдет до дальнейших экспериментов - то мб стоит взять одну конкретную игру, даже один и тот же образ и уже над ними проводить эксперименты всем желающим...

ErikPshat
22.08.2017, 05:39
ну и по-поводу переподписи до 100% совпадения... рано или поздно придется определиться, первые 16 байт после content_id[48] в NPD-секции - это просто случайный набор или все-таки контрольная сумма файла, как там и написано:

uint8_t digest[16]; // sha-1 hash of debug self/sprx created with make_fself_npdrm

дебаг версия - это же незашифрованная версия файла? можно ли получить такое же число из имеющегося зашифрованного файла?
просто, если этот параметр важен, то замена этих сумм один к одному на нерабочем файле - даст опять же нерабочий файл...
Короче, я посмотрел на Спецификацию PKG (http://www.psdevwiki.com/ps3/PKG_files) и понял, что это значит debug.
Смотрите по ссылке в таблице второе смещение:

pkg_revision - 80 00 for retail (finalized), 00 00 for debug (non finalized)

То есть, debug - это не финализированная версия, получаемая при первом проходе - это не шифрованная версия файла и без вставленных ещё <license>, <type> и <cID>, а во втором проходе получается финализированная retail (finalized), где файл шифруется и заполняются эти параметры, присущие финализированной версии.

А теперь смотри в позиции 0x60, тот код digest после ContentID, про который ты говоришь и который одинаково расположен у любых NPD:

digest - sha1 from debug files and attributes together merged in one block

То есть, в переводе - это SHA1 от debug файлов и атрибутов, объединенных в один блок.


Короче, я решил провести эксперимент на файле EDAT. Взял официальный файл licensee.edat из Update Patch (http://b0.ww.np.dl.playstation.net/tppkg/np/NPEB01835/NPEB01835_T15/26ab0bd26c24833b/EP0002-NPEB01835_00-CALLDUTYGHOSTSDL-A0116-V0100-PE.pkg) к игре "Call of Duty Ghosts NPEB01835", о которой писал постом выше.
Вот я подготовил архив необходимых файлов 13240 (распаковать в папку ps3tools\tools\scetool) - в архиве licensee.edat, EBOOT.BIN и RAP от этой игры + оригинальный make_npdata + исправленный ScetoolGuiPSPx.exe.

Сначала декриптуете официальный EDAT следующей командой: make_npdata -v -d licensee.edat licensee.dat 0 RAPS/EP0002-NPEB01835_00-CALLDUTYGHOSTSDL.rapErikP@ErikPshat /c/PS3/ps3tools/tools/scetool
$ make_npdata -v -d licensee.edat licensee.dat 0 RAPS/EP0002-NPEB01835_00-CALLDUTYGHOSTSDL.rap
NPD HEADER
NPD version: 4
NPD license: 2
NPD type: 0
NPD content ID: EP0002-NPEB01835_00-CALLDUTYGHOSTSDL

EDAT HEADER
EDAT flags: 0x0000003C
EDAT block size: 0x00004000
EDAT file size: 0x10

NPD title hash is valid!
NPD dev hash is empty!
DEVKLIC: 00000000000000000000000000000000
RIF KEY: C861DF23CB99770D21F39CA75D499D12
DECRYPTION KEY: C861DF23CB99770D21F39CA75D499D12

Parsing data...
Checking signatures...
Metadata signature is valid!
Header signature is valid!
File successfully parsed!

Decrypting data...
File successfully decrypted!Вот это официальный EDAT в хексе и выделена строка 16 байт того самого sha-1 hash

13238

Затем компилируете в DEBUG этот декриптованный licensee.dat в папку edat, чтобы не затёрся оригинал, вот команда: make_npdata -v -e licensee.dat edat/licensee.edat 1 0 4 0 16Примечание: при компиляции в debug из-под консоли Windows у меня утилита make_npdata.exe линуксовской версии почему-то криво работает и вставляет в файл кучу мусора с путями ко всяким компиляторам, установленным в Windows. Если у вас есть Виндусовская версия make_npdata, то пробуйте ей. У меня эта утилита заработала из-под msys.bat (linux надстройка для MinGW). Если у вас то же самое, тогда выполните универсальную инструкцию для компиляции приложений для PS3, PSV, PSP и Windows (http://www.pspx.ru/forum/showthread.php?t=106288). ErikP@ErikPshat /c/PS3/ps3tools/tools/scetool
$ make_npdata -v -e licensee.dat edat/licensee.edat 1 0 4 0 16
NPD HEADER
NPD version: 4
NPD license: 0
NPD type: 0
NPD content ID:

EDAT HEADER
EDAT flags: 0x8000003C
EDAT block size: 0x00004000
EDAT file size: 0x10

DEVKLIC: 00000000000000000000000000000000
RIF KEY: 00000000000000000000000000000000
ENCRYPTION KEY: 00000000000000000000000000000000

Encrypting data...
File successfully encrypted!Вот такой получается файл DEBUG и внизу смотрим контрольную сумму SHA-1 (сравниваем первые 16 байт с выделением на картинке выше)
SHA-1 = 8A AA D3 DB 8C FF 18 C2 F3 0F 53 9D 58 E0 63 A2 F4 89 07 99

13239


Для вылавливания Klicensee сначала декриптуем EBOOT.BIN командой: scetool.exe -v -d EBOOT.BIN EBOOT.BIN.elf


Следом брутфорсим EDAT декриптованным EBOOT: make_npdata -v -b licensee.edat EBOOT.BIN.elf 0


или другой утилитой, которая лежит в той же папке ps3tools\tools\scetool: devklic_bruteforcer.exe licensee.edat eboot.bin.elf -short


KLicensee: 496E66696E697479576172644B657900

E2E41
22.08.2017, 15:00
так я и не понял чего не хватает чтобы подписать нужный файлик?

riku.kh3
22.08.2017, 15:25
так я и не понял чего не хватает чтобы подписать нужный файлик?
Ключей. KaKaRoTo говорил:
The signature on the NPDRM self file uses the exact same ECDSA curve and the same key as the one used in PS3 .pkg files, so no one has (or could have) the private key for it. What this means is that, even though we finally figured out the missing piece and we now know how the NPDRM self is built, we simply cannot duplicate it.

E2E41
22.08.2017, 15:54
тоесть 28 байт в конце перед хешем файла

ErikPshat
22.08.2017, 18:52
так я и не понял чего не хватает чтобы подписать нужный файлик?
Ну для начала нужно восстановить по порядку правильную структуру файла.
Как я выше писал, на примере EDAT можно восстановить первую SHA-1 хеш-сумму, как у оригинала. У тебя получилось?

А вот с EBOOT.BIN и с PKG у меня пока не получилось получить из DEBUG-файла верную SHA-1 контрольную сумму.
Вот её нужно научиться правильно генерировать, чтобы пойти дальше к сходству с оригиналом. А, как я понял, всякие утилиты генерируют фейковый digest. И это уже может проверяться в экзешниках и это может быть первой ошибкой в утилите.

Вот список самых маленьких официальных PKG 5,91 Кб:

NPEB00092 Battlefield 1943 - Full Game Unlock (NPUB30077)
NPUA30002 Bejeweled 2 - Unlock
NPUB30051 Bomberman ULTRA - Unlock
NPUB30042 CellFactor: Psychokinetic Wars - Unlock
NPEB00078 FLOCK Unlock
NPUB30068 Marvel vs Capcom 2 - Unlock
NPEB00062 Supersonic Acrobatic Rocket-Powered Battle-Cars Unlock
NPUA30003 Zuma - Unlock


Вот PKG, на примере которого составлена таблица на Вики: 5,94 Кб:

NPUB30162 Scott Pilgrim vs the World: The Game - Unlock

E2E41
22.08.2017, 21:27
почему то у меня каждый раз меняются контрольные суммы у дебаг файла

ErikPshat
22.08.2017, 21:47
E2E41, у EDAT или у EBOOT?

Для EDAT я в этом сообщении (http://www.pspx.ru/forum/showpost.php?p=1118300) загрузил специально комплект исправленных утилит, в частности оригинальная make_npdata, без всяких извращений. Она, при создании debug генерирует всегда один и тот же файл.

А вот утилиты для EBOOT и PKG, каким-то образом патченные и там генерируется каждый раз рандомный хеш в debug. Сейчас пытаюсь скачать с меги 4.75 SDK (https://mega.nz/#!vsli1b6D!t7IxQJrglQXnlEmKtA_FUWSnBxEEn4-QHdQFX3PZbMg), чтобы вытащить официальные утилиты make_fself_npdrm и make_package_npdrm, чтобы убедиться в чистоте утилиты. Но пока не удаётся скачать через браузер, пишет типа памяти не хватает.

ErikPshat
24.08.2017, 11:55
Короче, залил на диск официальную коллекцию утилит из СДК475 (https://yadi.sk/d/Yx0P-kbx3MHSmX) (200 MB).

P.S. Естессна они все делают DEBUG-файлы для DEX-консоли, что нам и нужно для экспериментов.
Проверил пока только EDAT с помощью make_edata_npdrm.exe - получается правильный DEBUG.
make_edata_npdrm: version 4.0.0.W
usage:
make_edata_npdrm [-options] <input file> <output file>

options:
-h, --help : print this usage and exit
-v, --version : print program version and exit
-p, --progress : print progress [%]

[create option]
-b <size(KB)> : block size (default 16, max 32)
-z, --compress : data compress

--format1 : old format (compatible with SDK 2.1x or older)
--format2 : old format (compatible with SDK 3.0x or older)
--format3 : old format (compatible with SDK 3.7x or older)

[extract/check option]
-x, --extract : extract raw image from developing EDATA
-i, --info : print file informationКоманда элементарная, по умолчанию никаких опций не надо, там автоматом подставляется block size (default 16) и --format4 (4.0.0.W), если не указывается иное: make_edata_npdrm licensee.dat licensee.edat
Затем замеряем контрольную сумму SHA-1 и сверяем с шифрованным оригиналом в позиции 0x40.

Strong-Men
03.09.2017, 18:35
Провел эксперимент с EBOOT.BIN от игры "1942: Joint Strike" занулил последние 8 байт которые являются частью контрольной суммы SHA-1 и игра отлично завелась,занулил ещё 8 байт влево пс3 выдала ошибку 80010017,удалил 8 байт таже ошибка,так что в эти 8 байт можно вписать любые значения но без этих 8 байт игра не заведётся.

ErikPshat
03.09.2017, 22:54
Strong-Men, выходит игра проверят размер файла.

Strong-Men
04.09.2017, 18:15
Strong-Men, выходит игра проверят размер файла.

Похоже на то,но зачем сони вставили эти фейковые 8 байт?

E2E41
04.09.2017, 19:04
это число для выбора точки на эпилептической кривой(хотя могу и заблуждаться)
вот похожий механизм генерации:
https://github.com/uofw/upspd/wiki/KIRK-13---ECDSA-point-multiplication

Strong-Men
04.09.2017, 20:10
Можно ли сгенерировать подпись прогой sign.py по методу подписи ISO.BIN.DAT ?

E2E41
04.09.2017, 20:12
сомневаюсь