Afficher un message
Vieux 19/03/2008, 20h43   #158 (permalink)
Profil
jimmikaelkael
Membre
Ancienneté  62%
Ancienneté 62%
 
Date d'inscription: décembre 2007
Pays :
Messages: 383
Téléchargements: 3
Uploads: 0
Merci: 1
Remercié 48 fois dans 23 Posts
Par défaut

Bon ,j'ai toujours pas de réponse de cdvdmania...

En revanche j'ai parcouru le code source de pcsx2, et dans le fichier cdvd.c il y a des trucs interessant sur secrman :

Code:
case 0x8F: // secrman: __mechacon_auth_0x8F
			SetResultSize(1);//in:0
			if (cdvd.mg_datatype == 1){// header data
                u64* psrc, *pdst;
				int bit_ofs, i;

				if (cdvd.mg_maxsize != cdvd.mg_size)				goto fail_pol_cal;
				if (cdvd.mg_size < 0x20)							goto fail_pol_cal;
				if (cdvd.mg_size != *(u16*)&cdvd.mg_buffer[0x14])	goto fail_pol_cal;
				SysPrintf("[MG] ELF_size=0x%X Hdr_size=0x%X unk=0x%X flags=0x%X count=%d zones=",
					*(u32*)&cdvd.mg_buffer[0x10], *(u16*)&cdvd.mg_buffer[0x14], *(u16*)&cdvd.mg_buffer[0x16],
					*(u16*)&cdvd.mg_buffer[0x18], *(u16*)&cdvd.mg_buffer[0x1A]);
				for (i=0; i<8; i++)
					if (cdvd.mg_buffer[0x1C] & (1<<i))
						SysPrintf("%s ", mg_zones[i]);
				SysPrintf("\n");
				bit_ofs = mg_BIToffset(cdvd.mg_buffer);
                psrc = (u64*)&cdvd.mg_buffer[bit_ofs-0x20];
                pdst = (u64*)cdvd.mg_kbit;
                pdst[0] = psrc[0]; pdst[1] = psrc[1];//memcpy(cdvd.mg_kbit, &cdvd.mg_buffer[bit_ofs-0x20], 0x10);
                pdst = (u64*)cdvd.mg_kcon;
                pdst[0] = psrc[2]; pdst[1] = psrc[3];//memcpy(cdvd.mg_kcon, &cdvd.mg_buffer[bit_ofs-0x10], 0x10);

				if (cdvd.mg_buffer[bit_ofs+5] || cdvd.mg_buffer[bit_ofs+6] || cdvd.mg_buffer[bit_ofs+7])goto fail_pol_cal;
				if (cdvd.mg_buffer[bit_ofs+4] * 16 + bit_ofs + 8 + 16 != *(u16*)&cdvd.mg_buffer[0x14]){
fail_pol_cal:
					SysPrintf("[MG] ERROR - Make sure the file is already decrypted!!!\n");
					cdvd.Result[0] = 0x80;
					break;
				}
			}
			cdvd.Result[0] = 0; // 0 complete ; 1 busy ; 0x80 error
			break;
Cela prouve bien ma théorie du bloc header et du bloc data, et en plus il y a même des flags...

De plus on voit même que notre fameux ID magicgate des fichiers cryptés, et on voit qu'il est composé de 2 partie de 16 octets, la BIT key et la content key.
dans le code a mon avis mg c'est pour MagicGate.

Et je pense que la BIT key a un rapport avec l'argument bit de la fonction de secrman :
Code:
int   SecrCardBootHeader(int port, int slot, void *buf, void *bit, int *size);
jimmikaelkael est déconnecté   Réponse avec citation