📄 cprm_test.c
字号:
BufPtr = BufPtr + length - 4; } else break; } fclose( stream ); } else printf("File could not be opened\n" ); CPRM_Process_MKB(TmpBuf, &mediaKey); printf("mediakey = %0.8x%0.8x\n",(UINT32)mediaKey,(UINT32)(mediaKey >> 32)); free(TmpBuf); return OK_COMMAND;}UINT32 TstAlgorithmCmd(CommandTableStruct_T *CmdTable){ UINT32 Response[2]; UINT32 Buf[6]; #ifdef Debug_CPRM_Message printf("Key = 0x5e916a, 0xef341fa3\n"); printf("Input = 0x89067f2b, 0xe2a60d6f\n");#endif Buf[1] = 0x89067f2b; Buf[0] = 0xe2a60d6f; CPRM_C2_E(0x5e916a, 0xef341fa3, Buf, 1);#ifdef license_4C_Test if((Buf[1] != 0x2fe75ad4) || (Buf[0] != 0xa8c1eae2))#else if((Buf[1] != 0x8fe65fe4) || (Buf[0] != 0xf7ba8005))#endif printf("CPRM_C2_E fail\n"); else printf("CPRM_C2_E pass\n"); CPRM_C2_D(0x5e916a, 0xef341fa3, Buf, 1); if((Buf[1] != 0x89067f2b) || (Buf[0] != 0xe2a60d6f)) printf("CPRM_C2_D fail\n"); else printf("CPRM_C2_D pass\n");#ifdef Debug_CPRM_Message printf("Key = 0x7cb3c4, 0xdb094713\n"); printf("Input = 0xa24632d8, 0x24320844, 0x7d8111df, 0x8ce24172, 0x76be42d7, 0x0db14418\n");#endif Buf[0] = 0x24320844; Buf[1] = 0xa24632d8; Buf[2] = 0x8ce24172; Buf[3] = 0x7d8111df; Buf[4] = 0x0db14418; Buf[5] = 0x76be42d7; CPRM_C2_ECBC(0x7cb3c4, 0xdb094713, Buf, 3); #ifdef license_4C_Test if((Buf[1] != 0x41a58620) || (Buf[0] != 0x7cd88c65) || (Buf[3] != 0x108d6fb9) || (Buf[2] != 0xeae7c9c7) || (Buf[5] != 0x87e87358) || (Buf[4] != 0x9e2135e8))#else if((Buf[1] != 0x50fc09d1) || (Buf[0] != 0x691c5102) || (Buf[3] != 0x541d322f) || (Buf[2] != 0x68e7fd79) || (Buf[5] != 0x91a80c3d) || (Buf[4] != 0x9d9f310d))#endif printf("CPRM_C2_ECBC fail\n"); else printf("CPRM_C2_ECBC pass\n"); CPRM_C2_DCBC(0x7cb3c4, 0xdb094713, Buf, 3);#ifdef Debug_CPRM_Message printf("CPRM_C2_DCBC = %0.8x %0.8x\n", Buf[1], Buf[0]); printf("CPRM_C2_DCBC = %0.8x %0.8x\n", Buf[3], Buf[2]); printf("CPRM_C2_DCBC = %0.8x %0.8x\n", Buf[5], Buf[4]); #endif if((Buf[1] != 0xa24632d8) || (Buf[0] != 0x24320844) || (Buf[3] != 0x7d8111df) || (Buf[2] != 0x8ce24172) || (Buf[5] != 0x76be42d7) || (Buf[4] != 0x0db14418)) printf("CPRM_C2_DCBC fail\n"); else printf("CPRM_C2_DCBC pass\n"); CPRM_C2_G(0xc61f84, 0x36cc3ce5, 0x16e0b4c4, 0x5dfeeae7, Response); #ifdef license_4C_Test if((Response[1] != 0x22b567e5) || (Response[0] != 0xccaa3179))#else if((Response[1] != 0x33a48465) || (Response[0] != 0xbadd8256))#endif printf("CPRM_C2_G fail\n"); else printf("CPRM_C2_G pass\n"); return OK_COMMAND;}UINT32 EncryptFileCmd(CommandTableStruct_T *CmdTable){ FILE *src; UINT32 *Buf,file_length = 0, tmp_length; UINT32 dsc; UINT32 ReadSize; #ifdef license_4C_Test #ifndef AUTO_CBC_DMAmode //Deal With Protect Area File if(!fLib_WriteTKMG(&fLib_ProtectAreaCard, &fLib_CPRMAudio)) { printf("Can not found SD CPRM Protected Area!!!\n"); return FALSE; }#endif #endif //Deal With User Area File if ((dsc = fLib_OpenFile(CmdTable->Argu[0].Str, 4, 0)) == NULL) { printf("Can not open file %s\n", CmdTable->Argu[0].Str); return FALSE; } //Assign data into buffer, only for demo ////////////////////////////////////////////////////// if ((src = fopen("c:\\FREAD.TXT", "rb")) == NULL) { printf("Can not open c:\\FREAD.TXT\n"); fclose(dsc); return FALSE; } Buf = malloc(10240); while((ReadSize = fread(Buf, 1, 10240, src)) > 0) file_length += ReadSize; free(Buf); fclose(src); src = fopen("c:\\FREAD.TXT", "rb"); Buf = malloc(file_length); fread(Buf, 1, file_length, src); if((file_length % 64) != 0) tmp_length = file_length - (file_length % 64); else tmp_length = file_length; ////////////////////////////////////////////////////// #ifdef AUTO_CBC_DMAmode *(&fLib_SDCard.AUTO_CBC) = TRUE; if(fLib_WriteCPRMFile(dsc, Buf, file_length, fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0]) != 0) { printf("Can not write file %s to Card\n", CmdTable->Argu[0].Str); *(&fLib_SDCard.AUTO_CBC) = FALSE; free(Buf); fclose(src); fLib_CloseFile(dsc); return FALSE; } *(&fLib_SDCard.AUTO_CBC) = FALSE; #else #ifdef AUTO_CBC_PIOmode *(&fLib_SDCard.AUTO_CBC) = TRUE; if(fLib_WriteCPRMFile(dsc, Buf, file_length, fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0]) != 0) { printf("Can not write file %s to Card\n", CmdTable->Argu[0].Str); *(&fLib_SDCard.AUTO_CBC) = FALSE; free(Buf); fclose(src); fLib_CloseFile(dsc); return FALSE; } *(&fLib_SDCard.AUTO_CBC) = FALSE; #else //64 bit = 8 byte one time if(!CPRM_C2_ECBC(fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0], Buf, tmp_length / 8)) { printf("CPRM_C2_ECBC fail\n"); free(Buf); fclose(src); fLib_CloseFile(dsc); return FALSE; } if(fLib_WriteFile(dsc, Buf, file_length) != 0) { printf("Can not write file %s to Card\n", CmdTable->Argu[0].Str); free(Buf); fclose(src); fLib_CloseFile(dsc); return FALSE; } #endif #endif free(Buf); fclose(src); fLib_CloseFile(dsc); return TRUE; }UINT32 DecryptFileCmd(CommandTableStruct_T *CmdTable){ FILE *src; UINT32 *Buf,*DescryptBuf,i,file_length = 0; UINT32 dsc; BOOL flag = TRUE; //Deal With User Area File if ((dsc = fLib_OpenFile(CmdTable->Argu[0].Str, 0, 0)) == NULL) { printf("Can not open file %s\n", CmdTable->Argu[0].Str); return FALSE; } file_length = fLib_FileLen(dsc); DescryptBuf = malloc(file_length); //Assign data into buffer, only for demo ////////////////////////////////////////////////////// if ((src = fopen("c:\\FREAD.TXT", "rb")) == NULL) { printf("Can not open file c:\\FREAD.TXT\n"); free(DescryptBuf); fLib_CloseFile(dsc); return FALSE; } Buf = malloc(file_length); fread(Buf, 1, file_length, src); ////////////////////////////////////////////////////// if((file_length % 64) != 0) file_length = file_length - (file_length % 64); #ifdef AUTO_CBC_DMAmode *(&fLib_SDCard.AUTO_CBC) = TRUE; if(fLib_ReadCPRMFile(dsc, DescryptBuf, file_length, fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0]) != 0) { printf("Can not Read file %s\n", CmdTable->Argu[0].Str); *(&fLib_SDCard.AUTO_CBC) = FALSE; free(Buf); free(DescryptBuf); fclose(src); fLib_CloseFile(dsc); return FALSE; } *(&fLib_SDCard.AUTO_CBC) = FALSE; #else #ifdef AUTO_CBC_PIOmode *(&fLib_SDCard.AUTO_CBC) = TRUE; if(fLib_ReadCPRMFile(dsc, DescryptBuf, file_length, fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0]) != 0) { printf("Can not Read file %s\n", CmdTable->Argu[0].Str); *(&fLib_SDCard.AUTO_CBC) = FALSE; free(Buf); free(DescryptBuf); fclose(src); fLib_CloseFile(dsc); return FALSE; } *(&fLib_SDCard.AUTO_CBC) = FALSE; #else if(fLib_ReadFile(dsc, DescryptBuf, file_length) != 0) { printf("Can not Read file %s\n", CmdTable->Argu[0].Str); free(Buf); free(DescryptBuf); fclose(src); fLib_CloseFile(dsc); return FALSE; } //64 bit = 8 byte one time if(!CPRM_C2_DCBC(fLib_CPRMAudio.TKMG.EKEY_H[0], fLib_CPRMAudio.TKMG.EKEY_L[0], DescryptBuf, file_length / 8)) { printf("CPRM_C2_DCBC fail\n"); free(Buf); free(DescryptBuf); fclose(src); fLib_CloseFile(dsc); return FALSE; } #endif#endif //Assign data into buffer, only for demo ////////////////////////////////////////////////////// for (i = 0; i < file_length / 4; i++) { if(*(Buf + i) != *(DescryptBuf + i)) { printf("Compare Fail!, Addr = %0.3x, C = %0.8x, F = %0.8x\n",i*4,*(Buf + i),*(DescryptBuf + i)); flag = FALSE; break; } } if (flag) printf("Compare Pass\n"); else printf("Compare Fail\n"); ////////////////////////////////////////////////////// free(Buf); free(DescryptBuf); fclose(src); fLib_CloseFile(dsc); return TRUE; }UINT32 TstPLMCmd(CommandTableStruct_T *CmdTable){ UINT32 *DescryptBuf,file_length = 0; UINT32 dsc; if((dsc = fLib_OpenFile( "c:\\SD_AUDIO\\SD_AUDIO.PLM", 0, 0)) != NULL ) { file_length = fLib_FileLen(dsc); DescryptBuf = malloc(file_length); if(fLib_ReadFile(dsc, DescryptBuf, file_length) != 0) { printf("Can not Read file c:\\SD_AUDIO\\SD_AUDIO.PLM\n"); free(DescryptBuf); fLib_CloseFile(dsc); return FALSE; } } else { printf("File c:\\SD_AUDIO\\SD_AUDIO.PLM not be found\n"); return FALSE; } if(!SD_PLMGParse(&fLib_CPRMAudio, DescryptBuf, file_length)) { free(DescryptBuf); return FALSE; } free(DescryptBuf); return OK_COMMAND;}UINT32 TstTKMCmd(CommandTableStruct_T *CmdTable){ UINT32 *DescryptBuf,file_length = 0; UINT32 dsc; if((dsc = fLib_OpenFile( "c:\\SD_AUDIO\\SD_AUDIO.TKM", 0, 0)) != NULL ) { file_length = fLib_FileLen(dsc); DescryptBuf = malloc(file_length); if(fLib_ReadFile(dsc, DescryptBuf, file_length) != 0) { printf("Can not Read file c:\\SD_AUDIO\\SD_AUDIO.TKM\n"); free(DescryptBuf); fLib_CloseFile(dsc); return FALSE; } } else { printf("File c:\\SD_AUDIO\\SD_AUDIO.TKM not be found\n"); return FALSE; } if(!SD_TrackMGParse(&fLib_CPRMAudio, DescryptBuf, file_length)) { free(DescryptBuf); return FALSE; } free(DescryptBuf); return OK_COMMAND;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -