respondi brevemente en el otro hilo, a ver si puedo kedarme esta noche un rato .. la parienta ya se keja ...
si MECACON es lo mismo ke MagicCode, estariamos hablando de ke todo el sistema de criptografia de PS2 es el mismo, tanto disco como accso a las MEM cards.
Este sistema YA HA SIDO PETADO por un japones ke hizo el lector/grabador/adaptador de MEMCRDS a PC.
No tengo aki la URL, pero creo ke buscando en google, pidiendo solo paginas en japones, saldrá. Luego las podeis traducir medianamente desde babelfish. Al menos así es como me lo monto yo
Tengo un pekeño codigo en C para calcular el ECC por metodo MagicCode, a partir de 128 bytes:
BYTE Table[] = {
0x00, 0x87, 0x96, 0x11, 0xa5, 0x22, 0x33, 0xb4,0xb4, 0x33, 0x22, 0xa5, 0x11, 0x96, 0x87, 0x00,
0xc3, 0x44, 0x55, 0xd2, 0x66, 0xe1, 0xf0, 0x77,0x77, 0xf0, 0xe1, 0x66, 0xd2, 0x55, 0x44, 0xc3,
0xd2, 0x55, 0x44, 0xc3, 0x77, 0xf0, 0xe1, 0x66,0x66, 0xe1, 0xf0, 0x77, 0xc3, 0x44, 0x55, 0xd2,
0x11, 0x96, 0x87, 0x00, 0xb4, 0x33, 0x22, 0xa5,0xa5, 0x22, 0x33, 0xb4, 0x00, 0x87, 0x96, 0x11,
0xe1, 0x66, 0x77, 0xf0, 0x44, 0xc3, 0xd2, 0x55,0x55, 0xd2, 0xc3, 0x44, 0xf0, 0x77, 0x66, 0xe1,
0x22, 0xa5, 0xb4, 0x33, 0x87, 0x00, 0x11, 0x96,0x96, 0x11, 0x00, 0x87, 0x33, 0xb4, 0xa5, 0x22,
0x33, 0xb4, 0xa5, 0x22, 0x96, 0x11, 0x00, 0x87,0x87, 0x00, 0x11, 0x96, 0x22, 0xa5, 0xb4, 0x33,
0xf0, 0x77, 0x66, 0xe1, 0x55, 0xd2, 0xc3, 0x44,0x44, 0xc3, 0xd2, 0x55, 0xe1, 0x66, 0x77, 0xf0,
0xf0, 0x77, 0x66, 0xe1, 0x55, 0xd2, 0xc3, 0x44,0x44, 0xc3, 0xd2, 0x55, 0xe1, 0x66, 0x77, 0xf0,
0x33, 0xb4, 0xa5, 0x22, 0x96, 0x11, 0x00, 0x87,0x87, 0x00, 0x11, 0x96, 0x22, 0xa5, 0xb4, 0x33,
0x22, 0xa5, 0xb4, 0x33, 0x87, 0x00, 0x11, 0x96,0x96, 0x11, 0x00, 0x87, 0x33, 0xb4, 0xa5, 0x22,
0xe1, 0x66, 0x77, 0xf0, 0x44, 0xc3, 0xd2, 0x55,0x55, 0xd2, 0xc3, 0x44, 0xf0, 0x77, 0x66, 0xe1,
0x11, 0x96, 0x87, 0x00, 0xb4, 0x33, 0x22, 0xa5,0xa5, 0x22, 0x33, 0xb4, 0x00, 0x87, 0x96, 0x11,
0xd2, 0x55, 0x44, 0xc3, 0x77, 0xf0, 0xe1, 0x66,0x66, 0xe1, 0xf0, 0x77, 0xc3, 0x44, 0x55, 0xd2,
0xc3, 0x44, 0x55, 0xd2, 0x66, 0xe1, 0xf0, 0x77,0x77, 0xf0, 0xe1, 0x66, 0xd2, 0x55, 0x44, 0xc3,
0x00, 0x87, 0x96, 0x11, 0xa5, 0x22, 0x33, 0xb4,0xb4, 0x33, 0x22, 0xa5, 0x11, 0x96, 0x87, 0x00
};
void calcECC(BYTE *ecc, const BYTE *data)
{
int i, c;
ecc[0] = ecc[1] = ecc[2] = 0;
for (i = 0 ; i < 0x80 ; i ++) {
c = Table[data[i]];
ecc[0] ^= c;
if (c & 0x80) {
ecc[1] ^= ~i;
ecc[2] ^= i;
}
}
ecc[0] = ~ecc[0];
ecc[0] &= 0x77;
ecc[1] = ~ecc[1];
ecc[1] &= 0x7f;
ecc[2] = ~ecc[2];
ecc[2] &= 0x7f;
return;
}
Bueno, despues de esto hace falta saber de ke parte exacta del disco genera el ECC (supongo ke de alguna zona de la licencia, o de la TOC)