PSPx форум

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

ErikPshat 22.11.2016 11:09

scetool & ps3tools - утилиты де/криптовки файлов PS3
 
Вложений: 10
scetool v0.2.9.2

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


Вложение 12145
Readme
Код:

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=00000000000000000000000000000000000000000000000000000000000000000000000000000000
 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
[Build Date/Time: Dec 23 2016/03:15:47]

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
Код:

Расшифровка параметров:
Знак = (равно) указывать не обязательно, а в сокращённых командах запрещено, только через пробел или вообще без пробела.


--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
Ветка 3.0 (изменены команды):
SELF File Format and Decryption:
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 */
                                /* 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 */
 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-ми позиций:




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-ти позиций:




App Info
Код:

typedef struct {
 uint64_t authid;                /* auth id */
 uint32_t vendor_id;            /* vendor id */
 uint32_t self_type;            /* app type
                                  * 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 */
 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 ELF-64 Object File Format



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



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

ScetoolGui.exe
 
UPDATE!

Небольшое исправление:
  • В ScetoolGui.exe исправлены ссылки на Wiki - это в левом окне знак [?]
Архив в шапке обновлён.

rhish777 22.11.2016 14:29

Вот молодец. Теперь все ровненько стало.

ErikPshat 23.11.2016 15:50

scetool v0.2.9.1
 
UPDATE!

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

Последние изменения
About Updates
Цитата:

Сообщение от Gamma Argon
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.
1
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:
2
Код:

    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
3
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:
4
Код:

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%
Вообще принцип такой:
  1. Находим официальный EBOOT.BIN от игры, который имеет MinVer для официальной прошивки, например 3.30/3.40/3.55 и т.д.. Это нужно, чтобы подписываемая игра работала на низших прошивках и имела меньшие ограничения.
  2. С помощью того же GUI к scetool выписываем нужные параметры.
  3. Декриптуем EBOOT.BIN в EBOOT.ELF
  4. Подбираем параметры от этого же EBOOT.BIN и обратно шифруем EBOOT.ELF. Имейте в виду, что если оригинальный EBOOT.BIN в той же папке, то при шифровке он перезапишется.
  5. Сравниваем оригинал и подписанный файл. Если они разные, например по MD5, значит подпись не удалась. Короче, нужно правильно подобрать все параметры так, чтобы обратно файл подписывался в точности так же, как оригинал.
  6. Если параметры подобраны так, как надо и файл подписался точно так же, значит мы воспроизвели точную подпись Sony!
  7. Теперь берём EBOOT.BIN от Мультимена и подписываем его под эту игру этими же параметрами.
  8. Так же подписываем все сопутствующие модули Мультимена в SDAT, как это мы делаем с играми.
  9. Создаём под него LIC.EDAT
  10. Инжектируем в бэкап и отправляем на плойку. Должно запуститься, т.к. сэмулирована официальная подпись Сони.

Vanik 24.11.2016 13:57

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

rhish777 24.11.2016 14:02

Цитата:

Сообщение от ErikPshat (Сообщение 1107911)
Ага, только вместо переменных, заключённых в процентах %_% нужно подставлять реальные значения.
  • --compress-data=%ce% --np-app-type=%apptype% --np-content-id=%contentid%

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

rhish777 добавил 24.11.2016 в 14:02
Цитата:

Сообщение от ErikPshat (Сообщение 1107911)
Сравниваем оригинал и подписанный файл. Если они разные, например по MD5, значит подпись не удалась. Короче, нужно правильно подобрать все параметры так, чтобы обратно файл подписывался в точности так же, как оригинал.

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

ErikPshat 24.11.2016 14:06

Цитата:

Сообщение от rhish777 (Сообщение 1107913)
Вот с этим пунктом и выходит косяк.

Потому что параметры левые. А нужно их вытащить у оригинала.

Цитата:

Сообщение от Vanik (Сообщение 1107912)
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

Vanik 24.11.2016 16:52

rhish777, нет, чёрный экран.

rhish777 24.11.2016 17:53

Цитата:

Сообщение от Vanik (Сообщение 1107921)
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

Цитата:

Сообщение от rhish777 (Сообщение 1107920)

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

SNES ЭМУЛЯТОР прошивка 4.40

Ошибка 80010017

ps3 ss 4.76

ErikPshat 24.11.2016 22:01

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

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

rhish777 24.11.2016 22:19

Цитата:

Сообщение от ErikPshat (Сообщение 1107962)
rhish777, так ты добился 100% совпадения подписки EBOOT.BIN с оригиналом? Думаю нет.

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

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

CODE
Код:

[*] 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 у всей этот параметр такой.

Параметр EBOOT.BIN оригинального патча.
Код:

[*] 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.
Вы то тут все старые волки и наверняка всё давно знаете, а я только что заинтересовался 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
  1. cospkg.exe
  2. cosunpack.exe
  3. cosunpkg.exe
  4. dat.exe
  5. eidsplitr.exe
  6. makeself.exe
  7. norunpack.exe
  8. pkg.exe
  9. puppack.exe
  10. pupunpack.exe
  11. readself.exe
  12. readself2.exe
  13. scekrit.exe
  14. sceverify.exe
  15. self_rebuilder.exe
  16. spp.exe
  17. undat.exe
  18. ungpkg.exe
  19. unpkg.exe
  20. unself.exe
  21. unself2.exe
  22. unspp.exe

rhish777 26.11.2016 07:39

Цитата:

Сообщение от ErikPshat (Сообщение 1107889)
  • --self-cap-flags=00000000000000000000000000000000000000000000003B0000000100040000 // 32 байта capability флаги
Каким образом выдёргивать и откуда вообще брать эти флаги, пока не имею понятия. А этот флаг я взял от SELF Resigner, там подпись идёт под 4.10, на что намекают цифры в коде. Думаю там несколько флагов по 8 байт:

0000000000000000
0000000000000000
000000000000003B
0000000100040000

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


Параметр из 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 значит они все же имеют лицензию. Значит нужно пытаться переподписать приложение или игру которая не имеет никакой привязки. Тогда нам должна улыбнуться удача.

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

Уже подпись больше похожа на реальную.


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

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