PSPx форум

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

ErikPshat 01.06.2013 21:29

KIRK Header
 
Вложений: 1
0x00-0x0F is decryption key (but stored encrypted with AES128, is not PLAINTEXT key)
0x10-0x1F is CMAC key (but again, derived ver not plain)
0x20-0x2F is header hash (CMAC)
0x30-0x3F is data hash (CMAC)


ErikPshat 01.06.2013 21:38

Ключи kirk7 участвуют в процессе криптовки\декриптовки всех испольняемых файлов PRX(ELF)
Как я понял, они здесь пронумерованы по скрамблеркОдам и в процессе подписи Game EBOOT.BIN тегами 0xD916xxF0 используется ключ kirk7_key5D
kirk_engine.c
Код:

u8 kirk1_key[] =  {0x98, 0xC9, 0x40, 0x97, 0x5C, 0x1D, 0x10, 0xE8, 0x7F, 0xE6, 0x0E, 0xA3, 0xFD, 0x03, 0xA8, 0xBA};
u8 kirk7_key02[] = {0xB8, 0x13, 0xC3, 0x5E, 0xC6, 0x44, 0x41, 0xE3, 0xDC, 0x3C, 0x16, 0xF5, 0xB4, 0x5E, 0x64, 0x84}; // New from PS3
u8 kirk7_key03[] = {0x98, 0x02, 0xC4, 0xE6, 0xEC, 0x9E, 0x9E, 0x2F, 0xFC, 0x63, 0x4C, 0xE4, 0x2F, 0xBB, 0x46, 0x68};
u8 kirk7_key04[] = {0x99, 0x24, 0x4C, 0xD2, 0x58, 0xF5, 0x1B, 0xCB, 0xB0, 0x61, 0x9C, 0xA7, 0x38, 0x30, 0x07, 0x5F};
u8 kirk7_key05[] = {0x02, 0x25, 0xD7, 0xBA, 0x63, 0xEC, 0xB9, 0x4A, 0x9D, 0x23, 0x76, 0x01, 0xB3, 0xF6, 0xAC, 0x17};
u8 kirk7_key07[] = {0x76, 0x36, 0x8B, 0x43, 0x8F, 0x77, 0xD8, 0x7E, 0xFE, 0x5F, 0xB6, 0x11, 0x59, 0x39, 0x88, 0x5C}; // New from PS3
u8 kirk7_key0C[] = {0x84, 0x85, 0xC8, 0x48, 0x75, 0x08, 0x43, 0xBC, 0x9B, 0x9A, 0xEC, 0xA7, 0x9C, 0x7F, 0x60, 0x18};
u8 kirk7_key0D[] = {0xB5, 0xB1, 0x6E, 0xDE, 0x23, 0xA9, 0x7B, 0x0E, 0xA1, 0x7C, 0xDB, 0xA2, 0xDC, 0xDE, 0xC4, 0x6E};
u8 kirk7_key0E[] = {0xC8, 0x71, 0xFD, 0xB3, 0xBC, 0xC5, 0xD2, 0xF2, 0xE2, 0xD7, 0x72, 0x9D, 0xDF, 0x82, 0x68, 0x82};
u8 kirk7_key0F[] = {0x0A, 0xBB, 0x33, 0x6C, 0x96, 0xD4, 0xCD, 0xD8, 0xCB, 0x5F, 0x4B, 0xE0, 0xBA, 0xDB, 0x9E, 0x03};
u8 kirk7_key10[] = {0x32, 0x29, 0x5B, 0xD5, 0xEA, 0xF7, 0xA3, 0x42, 0x16, 0xC8, 0x8E, 0x48, 0xFF, 0x50, 0xD3, 0x71};
u8 kirk7_key11[] = {0x46, 0xF2, 0x5E, 0x8E, 0x4D, 0x2A, 0xA5, 0x40, 0x73, 0x0B, 0xC4, 0x6E, 0x47, 0xEE, 0x6F, 0x0A};
u8 kirk7_key12[] = {0x5D, 0xC7, 0x11, 0x39, 0xD0, 0x19, 0x38, 0xBC, 0x02, 0x7F, 0xDD, 0xDC, 0xB0, 0x83, 0x7D, 0x9D};
u8 kirk7_key38[] = {0x12, 0x46, 0x8D, 0x7E, 0x1C, 0x42, 0x20, 0x9B, 0xBA, 0x54, 0x26, 0x83, 0x5E, 0xB0, 0x33, 0x03};
u8 kirk7_key39[] = {0xC4, 0x3B, 0xB6, 0xD6, 0x53, 0xEE, 0x67, 0x49, 0x3E, 0xA9, 0x5F, 0xBC, 0x0C, 0xED, 0x6F, 0x8A};
u8 kirk7_key3A[] = {0x2C, 0xC3, 0xCF, 0x8C, 0x28, 0x78, 0xA5, 0xA6, 0x63, 0xE2, 0xAF, 0x2D, 0x71, 0x5E, 0x86, 0xBA};
u8 kirk7_key44[] = {0x7D, 0xF4, 0x92, 0x65, 0xE3, 0xFA, 0xD6, 0x78, 0xD6, 0xFE, 0x78, 0xAD, 0xBB, 0x3D, 0xFB, 0x63};  // New from PS3
u8 kirk7_key4B[] = {0x0C, 0xFD, 0x67, 0x9A, 0xF9, 0xB4, 0x72, 0x4F, 0xD7, 0x8D, 0xD6, 0xE9, 0x96, 0x42, 0x28, 0x8B}; //1.xx game eboot.bin
u8 kirk7_key53[] = {0xAF, 0xFE, 0x8E, 0xB1, 0x3D, 0xD1, 0x7E, 0xD8, 0x0A, 0x61, 0x24, 0x1C, 0x95, 0x92, 0x56, 0xB6};
u8 kirk7_key57[] = {0x1C, 0x9B, 0xC4, 0x90, 0xE3, 0x06, 0x64, 0x81, 0xFA, 0x59, 0xFD, 0xB6, 0x00, 0xBB, 0x28, 0x70};
u8 kirk7_key5D[] = {0x11, 0x5A, 0x5D, 0x20, 0xD5, 0x3A, 0x8D, 0xD3, 0x9C, 0xC5, 0xAF, 0x41, 0x0F, 0x0F, 0x18, 0x6F};
u8 kirk7_key63[] = {0x9C, 0x9B, 0x13, 0x72, 0xF8, 0xC6, 0x40, 0xCF, 0x1C, 0x62, 0xF5, 0xD5, 0x92, 0xDD, 0xB5, 0x82};
u8 kirk7_key64[] = {0x03, 0xB3, 0x02, 0xE8, 0x5F, 0xF3, 0x81, 0xB1, 0x3B, 0x8D, 0xAA, 0x2A, 0x90, 0xFF, 0x5E, 0x61};



Собсно вопрос: как можно надыбать ключ kirk7_key60, для подписи приложений DATA.PSP?

ErikPshat 16.06.2013 12:52

Хех, в поиске программного кирка PSP в эмуляторе прошивки PS3 обнаружил ключи к EBOOT.BIN игр ISO.
Они лежат в файле dev_flash\pspemu\release\emulator_drm.sprx в секции sceEmulatorDrm.
Там, в прошивке 3.55 найдены следующие теги вместе с ключами:
  • 0xD9160BF0 - 5.55 Game EBOOT.BIN
  • 0xD9160AF0 - 5.05 Game EBOOT.BIN
  • 0xD91606F0 - 3.00 Game EBOOT.BIN
  • 0xD91605F0 - 2.80 Game EBOOT.BIN
  • 0x8004FD03 - 2.60 Game EBOOT.BIN
  • 0xC0CB167C - 2.00 Game EBOOT.BIN
  • 0x08000000 - 1.50 Game EBOOT.BIN

ErikPshat 16.06.2013 15:16

Вложений: 1
Цитата:

Сообщение от ErikPshat (Сообщение 1072878)
Собсно вопрос: как можно надыбать ключ kirk7_key60, для подписи приложений DATA.PSP?

Ну вот спасибо всем, кто пытался помочь, но так и не смог :indeec:

По-ходу я нашёл то, что искал...
Продолжив листать тот же файл - emulator_drm.sprx, я вдруг обнаружил, что внутри спрятан ещё один файл с заголовком SCE, как и положено быть зашифрованному файлу SPRX. Он находится сразу после ключей 0xD916xxF0 в секции iso_spu_handler в позиции 0x8000 и практически почти до самого конца.

Изъяв и декриптовав этот файл, с самого начала сразу пришло ощущение, что это вовсе не программный код. А так оно и есть - это регистры процессора, самый настоящий ассемблерный код.

Самое интересное находится в самом конце файла. Там идут раздельные 4 секции кода - 2x256 байт (0x100) и 2x336 байт (0x150):
1-ая секция (AES128 Forward S-box)
Ну тут понятно, взглянув на первые же цифры в коде, сразу узнаваем алгоритм шифрования AES128. Этот код всегда можно встретить в любых исходниках, где используется шифрование, обычно в файле AES.c или AES128.c. Этот механизм признан во всём мире, как стандарт шифрования, разработанный Rijndael: "The Advanced Encryption Standard (Rijndael, aka AES)"
Эта секция кода называется Forward S-box.
Посмотреть и сравнить этот фрагмент кода можете, например, здесь: http://en.wikipedia.org/wiki/Rijndae...#Forward_S-box
Код:

//  Source File: D:\3 Playstation 3\PS3-decrypt-tools-windows\dev_flash\pspemu\release\emulator_drm_iso_spu_handler.sprx.elf
//        Time: 16.06.2013 14:10
// Orig. Offset: 55648 / 0x0000D960
//      Length: 256 / 0x00000100 (bytes)
unsigned char rawData[256] =
{
    0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76,
    0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0,
    0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15,
    0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75,
    0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84,
    0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF,
    0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8,
    0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2,
    0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73,
    0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB,
    0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79,
    0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08,
    0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A,
    0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E,
    0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF,
    0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16,
} ;

2-ая секция (AES128 Inverse S-box)
Это продолжение алгоритма шифрования AES128. Эта секция кода называется Inverse S-box.
Посмотреть и сравнить этот фрагмент кода можете, например, здесь: http://en.wikipedia.org/wiki/Rijndae...#Inverse_S-box
Код:

//  Source File: D:\3 Playstation 3\PS3-decrypt-tools-windows\dev_flash\pspemu\release\emulator_drm_iso_spu_handler.sprx.elf
//        Time: 16.06.2013 14:10
// Orig. Offset: 56080 / 0x0000DB10
//      Length: 256 / 0x00000100 (bytes)
unsigned char rawData[256] =
{
    0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38, 0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB,
    0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87, 0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB,
    0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D, 0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E,
    0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2, 0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25,
    0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92,
    0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA, 0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84,
    0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A, 0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06,
    0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02, 0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B,
    0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA, 0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73,
    0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85, 0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E,
    0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89, 0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B,
    0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20, 0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4,
    0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31, 0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F,
    0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D, 0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF,
    0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0, 0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61,
    0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26, 0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D,
} ;

3-я секция (Unknown)
Здесь явно какие-то ключи. На это намекает количество байт в блоке - 336 (0x150). По-видимому какой-то тип ключей, либо XOR для следующей 4-ой секции.
Код:

//  Source File: D:\3 Playstation 3\PS3-decrypt-tools-windows\dev_flash\pspemu\release\emulator_drm_iso_spu_handler.sprx.elf
//        Time: 16.06.2013 14:14
// Orig. Offset: 56656 / 0x0000DD50
//      Length: 336 / 0x00000150 (bytes)
unsigned char rawData[336] =
{
    0xD7, 0x6A, 0xA4, 0x78, 0xE8, 0xC7, 0xB7, 0x56, 0x24, 0x20, 0x70, 0xDB, 0xC1, 0xBD, 0xCE, 0xEE,
    0xF5, 0x7C, 0x0F, 0xAF, 0x47, 0x87, 0xC6, 0x2A, 0xA8, 0x30, 0x46, 0x13, 0xFD, 0x46, 0x95, 0x01,
    0x69, 0x80, 0x98, 0xD8, 0x8B, 0x44, 0xF7, 0xAF, 0xFF, 0xFF, 0x5B, 0xB1, 0x89, 0x5C, 0xD7, 0xBE,
    0x6B, 0x90, 0x11, 0x22, 0xFD, 0x98, 0x71, 0x93, 0xA6, 0x79, 0x43, 0x8E, 0x49, 0xB4, 0x08, 0x21,
    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08,
    0x42, 0x8A, 0x2F, 0x98, 0x71, 0x37, 0x44, 0x91, 0xB5, 0xC0, 0xFB, 0xCF, 0xE9, 0xB5, 0xDB, 0xA5,
    0x39, 0x56, 0xC2, 0x5B, 0x59, 0xF1, 0x11, 0xF1, 0x92, 0x3F, 0x82, 0xA4, 0xAB, 0x1C, 0x5E, 0xD5,
    0xD8, 0x07, 0xAA, 0x98, 0x12, 0x83, 0x5B, 0x01, 0x24, 0x31, 0x85, 0xBE, 0x55, 0x0C, 0x7D, 0xC3,
    0x72, 0xBE, 0x5D, 0x74, 0x80, 0xDE, 0xB1, 0xFE, 0x9B, 0xDC, 0x06, 0xA7, 0xC1, 0x9B, 0xF1, 0x74,
    0xE4, 0x9B, 0x69, 0xC1, 0xEF, 0xBE, 0x47, 0x86, 0x0F, 0xC1, 0x9D, 0xC6, 0x24, 0x0C, 0xA1, 0xCC,
    0x2D, 0xE9, 0x2C, 0x6F, 0x4A, 0x74, 0x84, 0xAA, 0x5C, 0xB0, 0xA9, 0xDC, 0x76, 0xF9, 0x88, 0xDA,
    0x98, 0x3E, 0x51, 0x52, 0xA8, 0x31, 0xC6, 0x6D, 0xB0, 0x03, 0x27, 0xC8, 0xBF, 0x59, 0x7F, 0xC7,
    0xC6, 0xE0, 0x0B, 0xF3, 0xD5, 0xA7, 0x91, 0x47, 0x06, 0xCA, 0x63, 0x51, 0x14, 0x29, 0x29, 0x67,
    0x27, 0xB7, 0x0A, 0x85, 0x2E, 0x1B, 0x21, 0x38, 0x4D, 0x2C, 0x6D, 0xFC, 0x53, 0x38, 0x0D, 0x13,
    0x65, 0x0A, 0x73, 0x54, 0x76, 0x6A, 0x0A, 0xBB, 0x81, 0xC2, 0xC9, 0x2E, 0x92, 0x72, 0x2C, 0x85,
    0xA2, 0xBF, 0xE8, 0xA1, 0xA8, 0x1A, 0x66, 0x4B, 0xC2, 0x4B, 0x8B, 0x70, 0xC7, 0x6C, 0x51, 0xA3,
    0xD1, 0x92, 0xE8, 0x19, 0xD6, 0x99, 0x06, 0x24, 0xF4, 0x0E, 0x35, 0x85, 0x10, 0x6A, 0xA0, 0x70,
    0x19, 0xA4, 0xC1, 0x16, 0x1E, 0x37, 0x6C, 0x08, 0x27, 0x48, 0x77, 0x4C, 0x34, 0xB0, 0xBC, 0xB5,
    0x39, 0x1C, 0x0C, 0xB3, 0x4E, 0xD8, 0xAA, 0x4A, 0x5B, 0x9C, 0xCA, 0x4F, 0x68, 0x2E, 0x6F, 0xF3,
    0x74, 0x8F, 0x82, 0xEE, 0x78, 0xA5, 0x63, 0x6F, 0x84, 0xC8, 0x78, 0x14, 0x8C, 0xC7, 0x02, 0x08,
    0x90, 0xBE, 0xFF, 0xFA, 0xA4, 0x50, 0x6C, 0xEB, 0xBE, 0xF9, 0xA3, 0xF7, 0xC6, 0x71, 0x78, 0xF2,
} ;

4-ая секция (KIRK Keys)
Ну собственно справа я откомментировал каждый ключ...
Последние 2 цифры в ключе - это ничто иное, как скрамблер-код.
Код:

//  Source File: D:\3 Playstation 3\PS3-decrypt-tools-windows\dev_flash\pspemu\release\emulator_drm_iso_spu_handler.sprx.elf
//        Time: 16.06.2013 14:15
// Orig. Offset: 59120 / 0x0000E6F0
//      Length: 336 / 0x00000150 (bytes)
unsigned char rawData[336] =
{
    0x98, 0x02, 0xC4, 0xE6, 0xEC, 0x9E, 0x9E, 0x2F, 0xFC, 0x63, 0x4C, 0xE4, 0x2F, 0xBB, 0x46, 0x68, //kirk7_key03
    0x99, 0x24, 0x4C, 0xD2, 0x58, 0xF5, 0x1B, 0xCB, 0xB0, 0x61, 0x9C, 0xA7, 0x38, 0x30, 0x07, 0x5F, //kirk7_key04
    0x02, 0x25, 0xD7, 0xBA, 0x63, 0xEC, 0xB9, 0x4A, 0x9D, 0x23, 0x76, 0x01, 0xB3, 0xF6, 0xAC, 0x17, //kirk7_key05
    0x84, 0x85, 0xC8, 0x48, 0x75, 0x08, 0x43, 0xBC, 0x9B, 0x9A, 0xEC, 0xA7, 0x9C, 0x7F, 0x60, 0x18, //kirk7_key0C
    0xB5, 0xB1, 0x6E, 0xDE, 0x23, 0xA9, 0x7B, 0x0E, 0xA1, 0x7C, 0xDB, 0xA2, 0xDC, 0xDE, 0xC4, 0x6E, //kirk7_key0D
    0xC8, 0x71, 0xFD, 0xB3, 0xBC, 0xC5, 0xD2, 0xF2, 0xE2, 0xD7, 0x72, 0x9D, 0xDF, 0x82, 0x68, 0x82, //kirk7_key0E
    0x0A, 0xBB, 0x33, 0x6C, 0x96, 0xD4, 0xCD, 0xD8, 0xCB, 0x5F, 0x4B, 0xE0, 0xBA, 0xDB, 0x9E, 0x03, //kirk7_key0F
    0x32, 0x29, 0x5B, 0xD5, 0xEA, 0xF7, 0xA3, 0x42, 0x16, 0xC8, 0x8E, 0x48, 0xFF, 0x50, 0xD3, 0x71, //kirk7_key10
    0x46, 0xF2, 0x5E, 0x8E, 0x4D, 0x2A, 0xA5, 0x40, 0x73, 0x0B, 0xC4, 0x6E, 0x47, 0xEE, 0x6F, 0x0A, //kirk7_key11
    0x5D, 0xC7, 0x11, 0x39, 0xD0, 0x19, 0x38, 0xBC, 0x02, 0x7F, 0xDD, 0xDC, 0xB0, 0x83, 0x7D, 0x9D, //kirk7_key12
    0x0C, 0xFD, 0x67, 0x9A, 0xF9, 0xB4, 0x72, 0x4F, 0xD7, 0x8D, 0xD6, 0xE9, 0x96, 0x42, 0x28, 0x8B, //kirk7_key4B
    0xAF, 0xFE, 0x8E, 0xB1, 0x3D, 0xD1, 0x7E, 0xD8, 0x0A, 0x61, 0x24, 0x1C, 0x95, 0x92, 0x56, 0xB6, //kirk7_key53
    0x1C, 0x9B, 0xC4, 0x90, 0xE3, 0x06, 0x64, 0x81, 0xFA, 0x59, 0xFD, 0xB6, 0x00, 0xBB, 0x28, 0x70, //kirk7_key57
    0x03, 0xB3, 0x02, 0xE8, 0x5F, 0xF3, 0x81, 0xB1, 0x3B, 0x8D, 0xAA, 0x2A, 0x90, 0xFF, 0x5E, 0x61, //kirk7_key64
    0x12, 0x46, 0x8D, 0x7E, 0x1C, 0x42, 0x20, 0x9B, 0xBA, 0x54, 0x26, 0x83, 0x5E, 0xB0, 0x33, 0x03, //kirk7_key38
    0xC4, 0x3B, 0xB6, 0xD6, 0x53, 0xEE, 0x67, 0x49, 0x3E, 0xA9, 0x5F, 0xBC, 0x0C, 0xED, 0x6F, 0x8A, //kirk7_key39
    0x2C, 0xC3, 0xCF, 0x8C, 0x28, 0x78, 0xA5, 0xA6, 0x63, 0xE2, 0xAF, 0x2D, 0x71, 0x5E, 0x86, 0xBA, //kirk7_key3A
    0x11, 0x5A, 0x5D, 0x20, 0xD5, 0x3A, 0x8D, 0xD3, 0x9C, 0xC5, 0xAF, 0x41, 0x0F, 0x0F, 0x18, 0x6F, //kirk7_key5D
    0x9C, 0x9B, 0x13, 0x72, 0xF8, 0xC6, 0x40, 0xCF, 0x1C, 0x62, 0xF5, 0xD5, 0x92, 0xDD, 0xB5, 0x82, //kirk7_key63
    0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
    0x98, 0xC9, 0x40, 0x97, 0x5C, 0x1D, 0x10, 0xE8, 0x7F, 0xE6, 0x0E, 0xA3, 0xFD, 0x03, 0xA8, 0xBA, //kirk1_key
} ;


А теперь просто сравните последнюю 4-ую секцию в спойлере над головой с кодом kirk7 в исходниках kirk_engine.c Для лучшей наглядности продублирую его здесь (то же самое, что во 2-ом посту):
Известные ключи KIRK 7
Код:

// AES key for kirk1
u8 kirk1_key[16] =  {0x98, 0xC9, 0x40, 0x97, 0x5C, 0x1D, 0x10, 0xE8, 0x7F, 0xE6, 0x0E, 0xA3, 0xFD, 0x03, 0xA8, 0xBA};

// AES key for kirk4/7
u8 kirk7_key02[] = {0xB8, 0x13, 0xC3, 0x5E, 0xC6, 0x44, 0x41, 0xE3, 0xDC, 0x3C, 0x16, 0xF5, 0xB4, 0x5E, 0x64, 0x84}; // New from PS3
u8 kirk7_key03[] = {0x98, 0x02, 0xC4, 0xE6, 0xEC, 0x9E, 0x9E, 0x2F, 0xFC, 0x63, 0x4C, 0xE4, 0x2F, 0xBB, 0x46, 0x68};
u8 kirk7_key04[] = {0x99, 0x24, 0x4C, 0xD2, 0x58, 0xF5, 0x1B, 0xCB, 0xB0, 0x61, 0x9C, 0xA7, 0x38, 0x30, 0x07, 0x5F};
u8 kirk7_key05[] = {0x02, 0x25, 0xD7, 0xBA, 0x63, 0xEC, 0xB9, 0x4A, 0x9D, 0x23, 0x76, 0x01, 0xB3, 0xF6, 0xAC, 0x17};
u8 kirk7_key07[] = {0x76, 0x36, 0x8B, 0x43, 0x8F, 0x77, 0xD8, 0x7E, 0xFE, 0x5F, 0xB6, 0x11, 0x59, 0x39, 0x88, 0x5C}; // New from PS3
u8 kirk7_key0C[] = {0x84, 0x85, 0xC8, 0x48, 0x75, 0x08, 0x43, 0xBC, 0x9B, 0x9A, 0xEC, 0xA7, 0x9C, 0x7F, 0x60, 0x18};
u8 kirk7_key0D[] = {0xB5, 0xB1, 0x6E, 0xDE, 0x23, 0xA9, 0x7B, 0x0E, 0xA1, 0x7C, 0xDB, 0xA2, 0xDC, 0xDE, 0xC4, 0x6E};
u8 kirk7_key0E[] = {0xC8, 0x71, 0xFD, 0xB3, 0xBC, 0xC5, 0xD2, 0xF2, 0xE2, 0xD7, 0x72, 0x9D, 0xDF, 0x82, 0x68, 0x82};
u8 kirk7_key0F[] = {0x0A, 0xBB, 0x33, 0x6C, 0x96, 0xD4, 0xCD, 0xD8, 0xCB, 0x5F, 0x4B, 0xE0, 0xBA, 0xDB, 0x9E, 0x03};
u8 kirk7_key10[] = {0x32, 0x29, 0x5B, 0xD5, 0xEA, 0xF7, 0xA3, 0x42, 0x16, 0xC8, 0x8E, 0x48, 0xFF, 0x50, 0xD3, 0x71};
u8 kirk7_key11[] = {0x46, 0xF2, 0x5E, 0x8E, 0x4D, 0x2A, 0xA5, 0x40, 0x73, 0x0B, 0xC4, 0x6E, 0x47, 0xEE, 0x6F, 0x0A};
u8 kirk7_key12[] = {0x5D, 0xC7, 0x11, 0x39, 0xD0, 0x19, 0x38, 0xBC, 0x02, 0x7F, 0xDD, 0xDC, 0xB0, 0x83, 0x7D, 0x9D};
u8 kirk7_key38[] = {0x12, 0x46, 0x8D, 0x7E, 0x1C, 0x42, 0x20, 0x9B, 0xBA, 0x54, 0x26, 0x83, 0x5E, 0xB0, 0x33, 0x03};
u8 kirk7_key39[] = {0xC4, 0x3B, 0xB6, 0xD6, 0x53, 0xEE, 0x67, 0x49, 0x3E, 0xA9, 0x5F, 0xBC, 0x0C, 0xED, 0x6F, 0x8A};
u8 kirk7_key3A[] = {0x2C, 0xC3, 0xCF, 0x8C, 0x28, 0x78, 0xA5, 0xA6, 0x63, 0xE2, 0xAF, 0x2D, 0x71, 0x5E, 0x86, 0xBA};
u8 kirk7_key44[] = {0x7D, 0xF4, 0x92, 0x65, 0xE3, 0xFA, 0xD6, 0x78, 0xD6, 0xFE, 0x78, 0xAD, 0xBB, 0x3D, 0xFB, 0x63}; // New from PS3
u8 kirk7_key4B[] = {0x0C, 0xFD, 0x67, 0x9A, 0xF9, 0xB4, 0x72, 0x4F, 0xD7, 0x8D, 0xD6, 0xE9, 0x96, 0x42, 0x28, 0x8B}; //1.xx game eboot.bin
u8 kirk7_key53[] = {0xAF, 0xFE, 0x8E, 0xB1, 0x3D, 0xD1, 0x7E, 0xD8, 0x0A, 0x61, 0x24, 0x1C, 0x95, 0x92, 0x56, 0xB6};
u8 kirk7_key57[] = {0x1C, 0x9B, 0xC4, 0x90, 0xE3, 0x06, 0x64, 0x81, 0xFA, 0x59, 0xFD, 0xB6, 0x00, 0xBB, 0x28, 0x70};
u8 kirk7_key5D[] = {0x11, 0x5A, 0x5D, 0x20, 0xD5, 0x3A, 0x8D, 0xD3, 0x9C, 0xC5, 0xAF, 0x41, 0x0F, 0x0F, 0x18, 0x6F}; //2.xx + game eboot.bin
u8 kirk7_key63[] = {0x9C, 0x9B, 0x13, 0x72, 0xF8, 0xC6, 0x40, 0xCF, 0x1C, 0x62, 0xF5, 0xD5, 0x92, 0xDD, 0xB5, 0x82};
u8 kirk7_key64[] = {0x03, 0xB3, 0x02, 0xE8, 0x5F, 0xF3, 0x81, 0xB1, 0x3B, 0x8D, 0xAA, 0x2A, 0x90, 0xFF, 0x5E, 0x61};

Скриншот 4-ой секции кода

Вложение 9326

Что это даёт?
Дело в том, что из известных ранее ключей, которые каким-то образом сдампили когда-то, нам полезны только ключи со скрамблер-кодами 0x4B и 0x5D, которые относятся к игровым кодам "Game EBOOT.BIN". На этом всё, все остальные KIRK-ключи нам не дают никакой пользы, потому что все остальные файлы прошивок, демо-игр, программ и всего прочего, подписаны ключами со скрамблер-кодами совершенно другими, которые отсутствуют в данном известном списке.
Обратите внимание на номера известных ключей KIRK (выделено красным):
  • kirk7_key02
  • kirk7_key03
  • kirk7_key04
  • kirk7_key05
  • kirk7_key07
  • kirk7_key0C
  • kirk7_key0D
  • kirk7_key0E
  • kirk7_key0F
  • kirk7_key10
  • kirk7_key11
  • kirk7_key12
  • kirk7_key38
  • kirk7_key39
  • kirk7_key3A
  • kirk7_key44
  • kirk7_key4B
  • kirk7_key53
  • kirk7_key57
  • kirk7_key5D
  • kirk7_key63
  • kirk7_key64
Эти красные номера - ни что иное, как номера скрамблер-кодов приватных ключей KIRK-а, которым назначены публичные ключи, лежащие в прошивке.
А каждый публичный ключ соответствует своему "Тегу", который прописан в заголовке любого зашифрованного файла.
Таким образом, файлы шифруются и декриптуются KIRK-ом в соответствии со скрамблер-кодом.

Например файлы EBOOT.BIN игр ISO/UMD шифруются и дешифруются ключем kirk7_key5D со скрамблер-кодом 0x5D. С каждой новой версией прошивки, Sony постоянно к этому скрамблеру добавляет новые "Теги" в прошивку, которыми криптуются и декриптуются испольняемые файлы игр EBOOT.BIN. Вот почему новые игры с новыми тегами нельзя запустить на старых прошивках и Sony заставляет обновиться на новую, чтобы поиграть в новую игру. Вот для примера часть списка тегов со скрамблером 0x5D:
Код:

    /* 0x5D Game EBOOT.BIN keys */
    { 0xD91613F0, key_D91613F0, 0x5D }, //6.20
    { 0xD91612F0, key_D91612F0, 0x5D }, //6.10
    { 0xD91611F0, key_D91611F0, 0x5D }, //6.00
    { 0xD91610F0, key_D91610F0, 0x5D }, //3.60
    { 0xD9160BF0, key_D9160BF0, 0x5D }, //5.55
    { 0xD9160AF0, key_D9160AF0, 0x5D }, //5.05
    { 0xD91609F0, key_D91609F0, 0x5D }, //5.00
    { 0xD91608F0, key_D91608F0, 0x5D }, //3.10
    { 0xD91606F0, key_D91606F0, 0x5D }, //3.00
    { 0xD91605F0, key_D91605F0, 0x5D }, //2.80
    { 0x8004FD03, key_8004FD03, 0x5D }, //2.60


Именно потому, что мы знаем этот ключ - kirk7_key5D, поэтому мы уже можем подписывать собственным заголовком любые игровые EBOOT.BIN. Наглядный пример тому программа SEBOOT. И вполне вероятно, что среди этого клада найденных новых Кирков в эмуляторе PSP для PS3, могут найтись подходящие под наши потребности kirk-ключики. Тем самым мы сможем сами подписывать файлы других видов, например DEMO GAME, имеющих скрамблер-код 0x60.

Процесс декриптовки эмулятора PSP в PS3 и набор инструментов


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

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