把HDCP key的bin文件转换成数组的小程序
在HDCP预制key的时候,很多人都遇到这种情况,客户提供的是好几K甚至好几M的bin文件,里面304个字节对应一组hdcp key。如果我们要把一个key拿出来做成数组,填到代码里面去做预制,那些十六进制数据看的是头晕眼花。如下一个小程序帮你解决问题,只需要放到linux下gcc编译出.o文件,再给执行权限即可把bin文件中的数据打印出来:#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define FILE_NAME_LEN (256)
typedef struct
{
FILE *fp;
char name;
int file_len;
char buffer;
}File_info;
/****************************************
arg : the executable file name
arg : the source file name
arg : the percent of empty packet
****************************************/
int main(int argc, char * argv[])
{
File_info file_in1;
int i= 0;
memset(&file_in1,0,sizeof(File_info));
if(argc < 2)
{
return -1;
}
if (argc >= 2)
{
memcpy(file_in1.name, argv, strlen(argv)) ;
}
file_in1.fp = fopen(file_in1.name, "rb") ;
if(file_in1.fp == NULL )
{
printf("Error: Open file %s failed\n", file_in1.name) ;
}
/* get the length of file */
fseek(file_in1.fp, 0L, SEEK_END) ;
file_in1.file_len = ftell(file_in1.fp);
fseek(file_in1.fp, 0, SEEK_SET) ;
while(file_in1.file_len > 0)//(512-304)
{
memset(file_in1.buffer, 0, sizeof(file_in1.buffer));
fread(file_in1.buffer,1,1,file_in1.fp);
//printf("file_in1.buffer:0x%x\n", file_in1.buffer);
printf("%X", (file_in1.buffer>>4)&0xf);
printf("%X", file_in1.buffer&0xf);
file_in1.file_len -= 1;
}
printf("\n");
fclose(file_in1.fp) ;
return 1;
}
在运行.o文件,第一个参数填对应的bin文件名即可。
:hug:
页:
[1]