PSP хакинг и девелопмент Взгляд изнутри
01.06.2013, 21:29
Сообщение: #1 (1072877)
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,283
Вы сказали Спасибо: 27,013
Поблагодарили 42,571 раз(а) в 12,176 сообщениях
Сила репутации:
10 Репутация: 41766  
(репутация неоспорима)
KIRK Header
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:53 .
01.06.2013, 21:38
Сообщение: #2 (1072878)
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,283
Вы сказали Спасибо: 27,013
Поблагодарили 42,571 раз(а) в 12,176 сообщениях
Сила репутации:
10 Репутация: 41766  
(репутация неоспорима)
Ключи 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; 01.06.2013 в 22:57 .
16.06.2013, 12:52
Сообщение: #3 (1073694)
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,283
Вы сказали Спасибо: 27,013
Поблагодарили 42,571 раз(а) в 12,176 сообщениях
Сила репутации:
10 Репутация: 41766  
(репутация неоспорима)
Хех, в поиске программного кирка 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; 20.06.2013 в 00:11 .
16.06.2013, 15:16
Сообщение: #4 (1073699)
Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 57
Сообщений: 46,283
Вы сказали Спасибо: 27,013
Поблагодарили 42,571 раз(а) в 12,176 сообщениях
Сила репутации:
10 Репутация: 41766  
(репутация неоспорима)
Сообщение от
ErikPshat
Собсно вопрос: как можно надыбать ключ kirk7_key60, для подписи приложений DATA.PSP?
Ну вот спасибо всем, кто пытался помочь, но так и не смог
По-ходу я нашёл то, что искал...
Продолжив листать тот же файл -
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};
Что это даёт?
Дело в том, что из известных ранее ключей, которые каким-то образом сдампили когда-то, нам полезны только ключи со скрамблер-кодами
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_key
5D со скрамблер-кодом
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 и набор инструментов
Последний раз редактировалось ErikPshat; 13.03.2014 в 15:29 .
Эти 4 пользователя(ей) сказали Спасибо ErikPshat за это полезное сообщение:
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Текущее время: 13:39 . Часовой пояс GMT +3.
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод:
zCarot
PSPx Forum - Сообщество фанатов игровых консолей.