PDA

Просмотр полной версии : sign_np - sign tool by Hykem


BlackDaemon
15.01.2015, 16:26
Разработчик Hykem (https://github.com/Hykem) выпустил утилиту "sign_np (https://github.com/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 см. в прикреплённом архиве. Источник (http://wololo.net/talk/viewtopic.php?f=54&t=40916&start=170#p378055)

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

список доступных тегов:
А что такой скромный список тегов? Можно было и расширить по максимуму: **********************************************************
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,
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 (https://github.com/Hykem/sign_np/releases)

ErikPshat
18.01.2015, 23:53
Он добавил ещё PGD и OPNSSMP

из переписки с авторомА ты спроси у автора, по каким причинам он выбросил часть игровых ключей 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, если что, здесь (http://www.pspx.ru/forum/showpost.php?p=1092059&postcount=2) исходники со всеми ключами. Список тегов виден в спойлере.

BlackDaemon
25.01.2015, 00:56
Автор отписался (http://wololo.net/talk/viewtopic.php?p=377520#p377513) на 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-репозитории, он уже исправил (https://github.com/Hykem/sign_np/commit/d42836c7532bed8e2e7543b45548c51af2e08aa8) косячок. :D

Yoti
28.01.2015, 13:39
Написать сюда (http://wololo.net/talk/viewtopic.php?f=54&t=40916) не вариант?

BlackDaemon
29.01.2015, 04:45
Yoti, в качестве альтернативного варианта - да, а так я в основном по различным вопросам связываюсь с ним через личку здесь (http://emunewz.net), либо через 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, разве что допиливать исходники, поскольку из-за недавних событий (https://wololo.net/2016/08/18/farewell-note-hykem/) автор утилиты был вынужден прекратить всякую деятельность, связанную с RE :(

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