PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   PSP хакинг и девелопмент (https://www.pspx.ru/forum/forumdisplay.php?f=195)
-   -   sign_np - sign tool by Hykem (https://www.pspx.ru/forum/showthread.php?t=105158)

BlackDaemon 15.01.2015 16:26

sign_np - sign tool by Hykem
 
Вложений: 4
Разработчик Hykem выпустил утилиту "sign_np" с открытыми исходниками для подписывания PSP ISO образов в PSN PBP пакеты. Возможно, кому-то будет интересно поковырять. :D

sign_np - инструмент для шифрования и подписывания PSP ISO образов в PSN PBP файлы. Автор Hykem.

Этот инструмент позволяет шифровать и подписывать образ PSP ISO в файл PSN EBOOT.PBP, а также шифровать и подписать файл BOOT.BIN в валидный EBOOT.BIN. Создаваемые файлы полностью совместимы с официальными прошивками PSP, таким образом позволяя запускать Homebrew, зашифрованные реальной подписью.

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

************************************************************

sign_np v1.0.4 - Convert PSP ISOs to signed PSN PBPs.
              - Written by Hykem (C).

************************************************************

Usage: sign_np -pbp [-c] <input> <output> <cid> <key>
                    <startdat> <opnssmp>
      sign_np -elf <input> <output> <tag>

- Modes:
[-pbp]: Encrypt and sign a PSP ISO into a PSN EBOOT.PBP
[-elf]: Encrypt and sign a ELF file into an EBOOT.BIN

- PBP mode:
[-c]: Compress data.
<input>: A valid PSP ISO image with a signed EBOOT.BIN
<output>: Resulting signed EBOOT.PBP file
<cid>: Content ID (XXYYYY-AAAABBBBB_CC-DDDDDDDDDDDDDDDD)
<key>: Version key (16 bytes) or Fixed Key (0)
<startdat>: PNG image to be used as boot screen (optional)
<opnssmp>: OPNSSMP.BIN module (optional)

- ELF mode:
<input>: A valid ELF file
<output>: Resulting signed EBOOT.BIN file
<tag>: 00 - EBOOT tag 0x8004FD03  14 - EBOOT tag 0xD91617F0
      01 - EBOOT tag 0xD91605F0  15 - EBOOT tag 0xD91618F0
      02 - EBOOT tag 0xD91606F0  16 - EBOOT tag 0xD91619F0
      03 - EBOOT tag 0xD91608F0  17 - EBOOT tag 0xD9161AF0
      04 - EBOOT tag 0xD91609F0  18 - EBOOT tag 0xD9161EF0
      05 - EBOOT tag 0xD9160AF0  19 - EBOOT tag 0xD91620F0
      06 - EBOOT tag 0xD9160BF0  20 - EBOOT tag 0xD91621F0
      07 - EBOOT tag 0xD91610F0  21 - EBOOT tag 0xD91622F0
      08 - EBOOT tag 0xD91611F0  22 - EBOOT tag 0xD91623F0
      09 - EBOOT tag 0xD91612F0  23 - EBOOT tag 0xD91624F0
      10 - EBOOT tag 0xD91613F0  24 - EBOOT tag 0xD91628F0
      11 - EBOOT tag 0xD91614F0  25 - EBOOT tag 0xD91680F0
      12 - EBOOT tag 0xD91615F0  26 - EBOOT tag 0xD91681F0
      13 - EBOOT tag 0xD91616F0  27 - EBOOT tag 0xD91690F0


для подписывания BOOT.BIN -> EBOOT.BIN
Код:

sign_np -elf BOOT.BIN EBOOT.BIN 0

для подписывания ISO в EBOOT.PBP
Код:

sign_np -pbp -c NP.iso EBOOT.PBP UP9000-NPRX00001_00-0000000000000000 0

Скомпилированную утилиту для Windows или Linux см. в прикреплённом архиве.

ErikPshat 17.01.2015 07:38

Вложений: 1
Что-то это мне напоминает аналог Fake_NP + Seboot от tpu.
Только там же фейковая подпись по базовому np.iso, а здесь, как я понимаю, похоже на генератор подписи.

Цитата:

Сообщение от BlackDaemon (Сообщение 1091954)
список доступных тегов:

А что такой скромный список тегов? Можно было и расширить по максимуму:
+
Код:

**********************************************************
sign_np v1.0.1 - Convert PSP ISOs to signed PSN PBPs.
              - Written by Hykem (C).
**********************************************************

Usage: sign_np -pbp [-c] <input> <output> <cid> <key>
      sign_np -elf <input> <output> <tag>

- Modes:
  [-pbp]: Encrypt and sign a PSP ISO into a PSN EBOOT.PBP
  [-elf]: Encrypt and sign a ELF file into an EBOOT.BIN

- PBP mode:
  [-c]: Compress data.
  <input>: A valid PSP ISO image with a signed EBOOT.BIN
  <output>: Resulting signed EBOOT.PBP file
  <cid>: Content ID (XXYYYY-AAAABBBBB_CC-DDDDDDDDDDDDDDDD)
  <key>: Version key (16 bytes) or Fixed Key (0)

- ELF mode:
  <input>: A valid ELF file
  <output>: Resulting signed EBOOT.BIN file
  <tags>: 0 - EBOOT tag 0x8004FD03
          1 - EBOOT tag 0xD91605F0
          2 - EBOOT tag 0xD91606F0
          3 - EBOOT tag 0xD91608F0
          4 - EBOOT tag 0xD91609F0
          5 - EBOOT tag 0xD9160AF0
          6 - EBOOT tag 0xD9160BF0
          7 - EBOOT tag 0xD91610F0
          8 - EBOOT tag 0xD91611F0
          9 - EBOOT tag 0xD91612F0
          10 - EBOOT tag 0xD91613F0
          11 - EBOOT tag 0xD91614F0
          12 - EBOOT tag 0xD91615F0
          13 - EBOOT tag 0xD91616F0
          14 - EBOOT tag 0xD91617F0
          15 - EBOOT tag 0xD91618F0
          16 - EBOOT tag 0xD91619F0
          17 - EBOOT tag 0xD9161AF0
          18 - EBOOT tag 0xD9161EF0
          19 - EBOOT tag 0xD91620F0
          20 - EBOOT tag 0xD91621F0
          21 - EBOOT tag 0xD91622F0
          22 - EBOOT tag 0xD91623F0
          23 - EBOOT tag 0xD91624F0
          24 - EBOOT tag 0xD91628F0
          25 - EBOOT tag 0xD91680F0
          26 - EBOOT tag 0xD91681F0
          27 - EBOOT tag 0xD91690F0


lex3a 17.01.2015 08:37

Ограничений по весу нет как в fake_np?

Yoti 17.01.2015 13:07

ErikPshat,
Цитата:

Сообщение от http://wololo.net/talk/viewtopic.php?p=375820#p375820
This tool combines tpunix's original code with Proxima's findings and documentation. It makes use of the kirk-engine to generate real signed PSN PBP images.
You can use the "-elf" flag to sign and encrypt BOOT.BIN files (just like you would with seboot.exe) or the "-pbp" flag to sign and encrypt PSP ISO images.
Please read it's usage carefully since you need to specify PRX tags (for ELF mode), Content ID and keys (for PBP mode).


BlackDaemon 18.01.2015 02:21

ErikPshat, это я недоглядел малость, вернее просто скопировал примеры из переписки с автором, когда проверял на наличие проблем с запуском на PSP/PS Vita. :) Кстати, несколько минут назад он обновил код, там исправлена проблема с запуском самопального PBP на PS Vita через Live Area и реализована возможность добавить "кастомную заставку" (вместо "health warning" экрана). :D

akela1979 18.01.2015 21:27

sign_np v1.0.2

ErikPshat 18.01.2015 23:53

Он добавил ещё PGD и OPNSSMP

Цитата:

Сообщение от BlackDaemon (Сообщение 1092120)
из переписки с автором

А ты спроси у автора, по каким причинам он выбросил часть игровых ключей 0x5D, а то я что-то не догоняю.
Вот эти ключи:
Код:

EBOOT tag 0x8004FD03
EBOOT tag 0xD91605F0
EBOOT tag 0xD91606F0
EBOOT tag 0xD91608F0
EBOOT tag 0xD91610F0
EBOOT tag 0xD91616F0
EBOOT tag 0xD91617F0
EBOOT tag 0xD91618F0
EBOOT tag 0xD91619F0
EBOOT tag 0xD9161AF0
EBOOT tag 0xD9161EF0
EBOOT tag 0xD91620F0
EBOOT tag 0xD91621F0
EBOOT tag 0xD91622F0
EBOOT tag 0xD91623F0
EBOOT tag 0xD91690F0

По идее они все должны работать.

BlackDaemon 21.01.2015 20:20

ErikPshat,

Цитата:

[19:19:19] Hykem The Demon: Actually I was going to add that now
[19:19:37] Hykem The Demon: I was planning to add all the missing tags on the next commit xD

ErikPshat 22.01.2015 02:30

BlackDaemon, если что, здесь исходники со всеми ключами. Список тегов виден в спойлере.

BlackDaemon 25.01.2015 00:56

Автор отписался на wololo:
Цитата:

Just pushed v1.0.3. No major changes, but you can now use all 0x5D tags for EBOOT.BIN signing and the OPNSSMP encryption is now fixed (the resulting file is encrypted with the right key).
Also, I've isolated all MinGW dependent values which were causing issues when compiling under native Linux. I've also provided binaries specific for each OS due to some discrepancies between the compilers.

ErikPshat 26.01.2015 01:42

BlackDaemon, спасибо, это именно то, из-за чего мне плохо спалось.

Однако, напиши ему обязательно об ошибке в файле sign_np.c:
Код:

                // Check tag.
                if ((tag < 0) || (tag > 11))
                {
                        printf("ERROR: Invalid EBOOT tag!\n");
                        fclose(elf);
                        fclose(bin);
                        return 0;
                }

Заменить нужно на такой код:
Код:

                // Check tag.
                if ((tag < 0) || (tag > 27))
                {
                        printf("ERROR: Invalid EBOOT tag!\n");
                        fclose(elf);
                        fclose(bin);
                        return 0;
                }


Собсно строка в файле № 564.
Ошибка приводит к невозможности подписать файл ELF тегом, выше 11 - EBOOT tag 0xD91614F0
При попытке подписать любым тегом от 12 по 27 выводится ошибка "ERROR: Invalid EBOOT tag!".

Я же предлагал подглядеть мною правленные исходники. Ждём версию v1.0.4 ;)

BlackDaemon 28.01.2015 12:31

ErikPshat, иногда с автором бывает весьма затруднительно связаться. :crazy: Можно, конечно, накатать ему в личку на англоязычном форуме, но опять же - неизвестно, когда он ответит. Посмотрел изменения на Git-репозитории, он уже исправил косячок. :D

Yoti 28.01.2015 13:39

Написать сюда не вариант?

BlackDaemon 29.01.2015 04:45

Yoti, в качестве альтернативного варианта - да, а так я в основном по различным вопросам связываюсь с ним через личку здесь, либо через Skype.

ErikPshat 01.09.2015 10:10

Добавил в шапку sign_np v1.0.4

Yoti 21.01.2022 16:57

Тегов 0x08000000 (4B) и 0xC0CB167C (5D) не хватает. Они, конечно, старого типа, но игры продавались в PS Store. Как следствие, должны быть валидны для подписи.

BlackDaemon 21.01.2022 17:12

Yoti, разве что допиливать исходники, поскольку из-за недавних событий автор утилиты был вынужден прекратить всякую деятельность, связанную с RE :(

Yoti 21.01.2022 17:48

BlackDaemon,
это больше как заметка на будущее, чтобы не потерять информацию.


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

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