Как выдрать IPL в декриптованном виде? А именно, в этом IPL лежит файлик в GZIP-формате main.bin из которого извлекается payload.bin. Так вот, ключи к ядру прошивки лежат именно в нём.
Говорят, что можно сдампить декриптованный IPL прямо во время загрузки ядра, в тот момент, когда PRE-IPL в кирке декриптует IPL. А как пойдёт загрузка системы, то ипл стирается из памяти моментом.
У меня уже есть полная коллекция всех ключей включая 5.50. Но вот фактически по одному ключу к каждой модели к системным файлам, даже для 5.50 ни у кого нет до сих пор.
Вот здесь, кстати, ребята уже этот вопрос обсуждали, но я что-то никак не въеду, каким макаром они там что-то ковыряют =)
И здесь что-то непонятное написано: http://forums.ps2dev.org/viewtopic.php?t=3573
Кстати, вот СильверСпринг выложил тут рабочий код, как он говорит, для декриптовки IPL 6.00.
void decryptBuffer(void *seed, int seedSize, u8 *secretKey1, u8 *secretKey2, void *buf, int bufSize)
{
Sfmt19937Ctx ctx;
u8 hmac[28];
u8 xorKey[28];
u8 randomNum[64];
int i, j;
// generate hmac of the seed to be used for initial prng state
sha224Hmac(secretKey1, 64, seed, seedSize, &hmac);
// setup seed state of the pseudo random number generator
u32 *seedArray = (u32*)hmac;
int seedArrayLen = sizeof(hmac)/sizeof(hmac[0]);
sfmt19937Init(&ctx, seedArray, seedArrayLen);
// clear hmac after use
memset(&hmac, 0, sizeof(hmac));
// for each 28-bytes of ciphertext
for (i=0; i<bufSize; i+=28)
{
// generate 64-bytes random number
u32 *r = (u32*)randomNum;
for (j=0; j<16; j++)
r[j] = sfmt19937Uint(&ctx);
// generate 28-byte xor key from the random number
sha224Hmac(secretKey2, 64, randomNum, sizeof(randomNum), &xorKey);
// if ciphertext less than 28-bytes left
if ((bufSize > i) && (bufSize < i+28))
{
// xor remaining bytes to get final plaintext
for (j=0; i+j<bufSize; j++)
*(u8*)(buf+i+j) ^= *(u8*)(xorKey+j);
}
else
{
// xor 28-byte block to get final plaintext
for (j=0; j<28; j+=4)
*(u32*)(buf+i+j) ^= *(u32*)(xorKey+j);
}
}
// clear all buffers
memset(&randomNum, 0, sizeof(randomNum));
memset(&xorKey, 0, sizeof(xorKey) );
memset(&ctx, 0, sizeof(ctx) );
}
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Последний раз редактировалось ErikPshat; 21.02.2010 в 23:46.