Сообщение от SergeSm
ну и по-поводу переподписи до 100% совпадения... рано или поздно придется определиться, первые 16 байт после content_id[48] в NPD-секции - это просто случайный набор или все-таки контрольная сумма файла, как там и написано: - uint8_t digest[16]; // sha-1 hash of debug self/sprx created with make_fself_npdrm
дебаг версия - это же незашифрованная версия файла? можно ли получить такое же число из имеющегося зашифрованного файла?
просто, если этот параметр важен, то замена этих сумм один к одному на нерабочем файле - даст опять же нерабочий файл...
|
Короче, я посмотрел на
Спецификацию PKG и понял, что это значит
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 к игре "
Call of Duty Ghosts NPEB01835", о которой писал постом выше.
Вот я подготовил архив необходимых файлов
scetool.zip (распаковать в папку 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.rap
Вот это официальный EDAT в хексе и выделена строка 16 байт того самого
sha-1 hash
licensee.edat.png
Затем компилируете в
DEBUG этот декриптованный licensee.dat в папку edat, чтобы не затёрся оригинал, вот команда:
make_npdata -v -e licensee.dat edat/licensee.edat 1 0 4 0 16
Процесс компиляции в DEBUG:
Примечание: при компиляции в
debug из-под консоли Windows у меня утилита
make_npdata.exe линуксовской версии почему-то криво работает и вставляет в файл кучу мусора с путями ко всяким компиляторам, установленным в Windows. Если у вас есть Виндусовская версия make_npdata, то пробуйте ей. У меня эта утилита заработала из-под
msys.bat (linux надстройка для MinGW). Если у вас то же самое, тогда выполните
универсальную инструкцию для компиляции приложений для PS3, PSV, PSP и Windows.
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
licensee.edat (DEBUG).png
Достаём KLicensee от игры:
Для вылавливания 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