Модель консоли: PSP-1004
Прошивка: 6.60 PROMOD
Другие консоли: iPad 3 WiFi
Регистрация: 18.12.2006
Адрес: Москва
Возраст: 58
Сообщений: 47,472
Вы сказали Спасибо: 27,798
Поблагодарили 43,385 раз(а) в 12,362 сообщениях
Сила репутации: 10Репутация: 42576 
(репутация неоспорима)
|
Продолжив листать тот же файл - 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-ой секции кода

Что это даёт?
Дело в том, что из известных ранее ключей, которые каким-то образом сдампили когда-то, нам полезны только ключи со скрамблер-кодами 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 для PSP. Наглядный пример тому программа SEBOOT. И вполне вероятно, что среди этого клада найденных новых Кирков в эмуляторе PSP для PS3, могут найтись подходящие под наши потребности kirk-ключики. Тем самым мы сможем сами подписывать файлы других видов, например DEMO GAME, имеющих скрамблер-код 0x60.
Последний раз редактировалось ErikPshat; 13.03.2014 в 15:45.
|