亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? svctool.c

?? wizfwtools: tools for developing firmware images for Beyonwiz embedded devices (www.beyonwiz.com)
?? C
字號:
//svcTool Copyright 2008 Eric Fry efry@users.sourceforge.net//Licensed under the GPLv2//#include<stdio.h>#include<string.h>#include<stdlib.h>#include<unistd.h>#define u8 unsigned char#define u16 unsigned short int#define u32 unsigned int#define START_SEGMENT_MAGIC 0x1000BE90#define SEGMENT_MAGIC 0x103BE90#define SVC_FLAG_TV    0#define SVC_FLAG_RADIO 1#define SVC_FLAG_EMPTY 7const char *svc_dat = "svc.dat";const char *svc_new_dat = "svc_new.dat";typedef struct {	u16 flag;	u16 unk_2;	u16 rf_offset;	u16 unk_6;	u16 svcid;	unsigned char unk_a[0xa];	u16 name_offset;	u16 unk_16;	u16 rfname_offset;	unsigned char unk_1a[0x6];		u16 lcn;	u16 unk_22;} CHInfo;typedef struct {	u16 unk1;	u16 unk2;	u32 rf;	u16 onid;	u16 tsid;	unsigned char *name;} RFInfo;typedef struct {	unsigned char unk_12[0x15];	u16 num_channels;	u16 num_deleted_channels;	u16 num_total_channels;	u32 svc_name_len;	u32 rf_name_len;	unsigned char *ch_names;	unsigned char *rf_names;		unsigned char unk_ch_hdr[0x4e];		CHInfo *ch;		unsigned char unk_rf_hdr[0x1e];	u32 num_rfs;	RFInfo *rf;} SVC;u32 read_bytes(FILE *fp, u32 n, unsigned char *buf){	return fread(buf, 1, n, fp);}u16 read_u16(FILE *fp){	u16 i;#ifdef BIG_ENDIAN	unsigned char c;	fread(&c, 1, 1, fp);	i = c;	fread(&c, 1, 1, fp);	i += (c << 8);#else	fread(&i, sizeof(u16), 1, fp);#endif	return i;}u32 read_u32(FILE *fp){	u32 i;#ifdef BIG_ENDIAN	unsigned char c;	fread(&c, 1, 1, fp);	i = c;	fread(&c, 1, 1, fp);	i += (c << 8);	fread(&c, 1, 1, fp);	i += (c << 16);	fread(&c, 1, 1, fp);	i += (c << 24);#else	fread(&i, sizeof(u32), 1, fp);#endif	return i;}u32 write_bytes(FILE *fp, u32 n, unsigned char *buf){	return fwrite(buf, 1, n, fp);}void write_u8(FILE *fp, u8 n){	fwrite(&n, sizeof(u8), 1, fp);}void write_u16(FILE *fp, u16 n){#ifdef BIG_ENDIAN	unsigned char buf[2];	buf[0] = n & 0xFF;	buf[1] = n >> 8;	fwrite(buf, 2, 1, fp);	#else	fwrite(&n, sizeof(u16), 1, fp);#endif	return;}void write_u32(FILE *fp, u32 n){#ifdef BIG_ENDIAN	unsigned char buf[4];	buf[0] = n & 0xFF;	buf[1] = (n >> 8) & 0xFF;	buf[2] = (n >> 16) & 0xFF;	buf[3] = (n >> 24) & 0xFF;	fwrite(buf, 4, 1, fp);	#else	fwrite(&n, sizeof(u32), 1, fp);#endif	return;}SVC *svc_read(const char *filename){	FILE *fp;	SVC *svc;	CHInfo *ch_ptr;	RFInfo *rf_ptr;	u32 i;	fp = fopen(filename, "r");	if(fp == NULL)		return NULL;	svc = malloc(sizeof(SVC));	if(svc == NULL)		return NULL;	fseek(fp, 0x12, SEEK_SET);		read_bytes(fp, 0x15, svc->unk_12);	fseek(fp, 0x30, SEEK_SET);		svc->num_channels = read_u16(fp);	svc->num_deleted_channels = read_u16(fp);	svc->num_total_channels = read_u16(fp);	svc->svc_name_len = read_u32(fp);	svc->rf_name_len = read_u32(fp);	svc->ch_names = (unsigned char *)malloc(svc->svc_name_len);	read_bytes(fp, svc->svc_name_len, svc->ch_names);		svc->rf_names = (unsigned char *)malloc(svc->rf_name_len);	read_bytes(fp, svc->rf_name_len, svc->rf_names);	fseek(fp, 0xa, SEEK_CUR);	read_bytes(fp, 0x4e, svc->unk_ch_hdr);		svc->ch = malloc(sizeof(CHInfo) * svc->num_channels);		for(ch_ptr=svc->ch,i=0;i < svc->num_channels;ch_ptr++,i++)	{		ch_ptr->flag = read_u16(fp);		ch_ptr->unk_2 = read_u16(fp);		ch_ptr->rf_offset = read_u16(fp);		ch_ptr->unk_6 = read_u16(fp);		ch_ptr->svcid = read_u16(fp);		read_bytes(fp, 0xa, ch_ptr->unk_a);		ch_ptr->name_offset = read_u16(fp);		ch_ptr->unk_16 = read_u16(fp);		ch_ptr->rfname_offset = read_u16(fp);		read_bytes(fp, 0x6, ch_ptr->unk_1a);			ch_ptr->lcn = read_u16(fp);		ch_ptr->unk_22 = read_u16(fp);	}	fseek(fp, 0x6, SEEK_CUR); //move to rf_count	svc->num_rfs = read_u32(fp);	read_bytes(fp, 0x1e, svc->unk_rf_hdr);		svc->rf = malloc(sizeof(RFInfo) * svc->num_rfs);	for(rf_ptr=svc->rf,i=0;i < svc->num_rfs;rf_ptr++,i++)	{		rf_ptr->unk1 = read_u16(fp);		rf_ptr->unk2 = read_u16(fp);		rf_ptr->rf = read_u32(fp);		rf_ptr->onid = read_u16(fp);		rf_ptr->tsid = read_u16(fp);	}	fclose(fp);	return svc;}int svc_write(SVC *svc, const char *filename){	FILE *fp;	int i;		fp = fopen(filename, "w");		write_u32(fp, START_SEGMENT_MAGIC);	write_u32(fp, 3); //3 segments	write_u32(fp, SEGMENT_MAGIC);	write_u16(fp, 0); //first segment	write_u32(fp, 1); //unknown	write_bytes(fp, 0x15, svc->unk_12);	write_u16(fp,0x400);	write_u16(fp,svc->svc_name_len * 4);	write_u16(fp,0x500);	write_u16(fp,svc->rf_name_len * 4);	write_u8(fp, 0);	write_u16(fp,svc->num_channels);	write_u16(fp,svc->num_deleted_channels);	write_u16(fp,svc->num_total_channels);	write_u32(fp,svc->svc_name_len);	write_u32(fp,svc->rf_name_len);	write_bytes(fp,svc->svc_name_len,svc->ch_names);	write_bytes(fp,svc->rf_name_len,svc->rf_names);	write_u32(fp, SEGMENT_MAGIC);	write_u16(fp, 1); //second segment	write_u32(fp, svc->num_channels);	write_bytes(fp, 0x4e, svc->unk_ch_hdr);	for(i=0;i < svc->num_channels;i++)	{		write_u16(fp,svc->ch[i].flag);		write_u16(fp,svc->ch[i].unk_2);		write_u16(fp,svc->ch[i].rf_offset);		write_u16(fp,svc->ch[i].unk_6);		write_u16(fp,svc->ch[i].svcid);		write_bytes(fp, 0xa, svc->ch[i].unk_a);		write_u16(fp,svc->ch[i].name_offset);		write_u16(fp,svc->ch[i].unk_16);		write_u16(fp,svc->ch[i].rfname_offset);		write_bytes(fp, 0x6, svc->ch[i].unk_1a);		write_u16(fp,svc->ch[i].lcn);		write_u16(fp,svc->ch[i].unk_22);	}	write_u32(fp, SEGMENT_MAGIC);	write_u16(fp, 2); //third segment	write_u32(fp, svc->num_rfs);	write_bytes(fp, 0x1e, svc->unk_rf_hdr);	for(i=0;i < svc->num_rfs;i++)	{		write_u16(fp,svc->rf[i].unk1);		write_u16(fp,svc->rf[i].unk2);		write_u32(fp,svc->rf[i].rf);		write_u16(fp,svc->rf[i].onid);		write_u16(fp,svc->rf[i].tsid);	}	fclose(fp);	return 1;}int svc_find_ch(SVC *svc, u16 onid, u16 tsid, u16 svcid){	RFInfo *rf_ptr;	u32 i;	for(i=0;i<svc->num_channels;i++)	{		rf_ptr = &svc->rf[svc->ch[i].rf_offset];		if(rf_ptr->onid == onid && rf_ptr->tsid == tsid && svc->ch[i].svcid == svcid)			return i;	}		return -1;}int svc_rename_ch(SVC *svc, int onid, int tsid, int svcid, const char *new_name){	int ch_idx;	int name_diff;	CHInfo *ch;	unsigned char *name_ptr;	unsigned char *names_tmp;	unsigned char *name;		int i;		ch_idx = svc_find_ch(svc, onid, tsid, svcid);	if(ch_idx == -1)		return 0;		ch = &svc->ch[ch_idx];		name_diff = strlen(new_name) - strlen((char *)&svc->ch_names[ch->name_offset]);		printf("Found channel. Index = %d, oldname = '%s', newname = '%s'\n", ch_idx, &svc->ch_names[ch->name_offset], new_name);	names_tmp = malloc(sizeof(unsigned char) * (svc->svc_name_len + name_diff));	name_ptr = names_tmp;	//adjust the name offsets.	for(i=0; i < svc->num_channels; i++)	{		if(i==ch_idx)			name = (unsigned char*)new_name;		else			name = &svc->ch_names[svc->ch[i].name_offset];		svc->ch[i].name_offset = name_ptr - names_tmp;				//Don't save a name for empty records.		if(svc->ch[i].flag != SVC_FLAG_EMPTY)		{			strcpy((char *)name_ptr, (char *)name);			name_ptr += strlen((char *)name) + 1;		}	}	free(svc->ch_names);	svc->ch_names = names_tmp;	svc->svc_name_len += name_diff;	return 1;}void svc_dump_short(SVC *svc){	int i;	printf("onid,tsid,svcid,channel\n");	for(i=0; i < svc->num_channels; i++)	{		printf("%d,%d,%d,%s\n",svc->rf[svc->ch[i].rf_offset].onid, svc->rf[svc->ch[i].rf_offset].tsid, svc->ch[i].svcid, &svc->ch_names[svc->ch[i].name_offset]);	}}void svc_dump_long(SVC *svc){	int i;	CHInfo *ch;	RFInfo *rf;		printf("lcn,unk1,unk2,mhz,onId,tsId,svcId,flags,rf_name,name\n");	for(i=0; i < svc->num_channels; i++)	{		ch = &svc->ch[i];		rf = &svc->rf[ch->rf_offset];				printf("%d,%d,%d,%d,%d,%d,%d,%d,\"%s\",\"%s\"\n", ch->lcn, rf->unk1, rf->unk2, rf->rf, rf->onid, rf->tsid, ch->svcid, ch->flag, &svc->rf_names[ch->rfname_offset], &svc->ch_names[ch->name_offset]);	}}void print_usage(char *filename, char *error_msg){	if(error_msg != NULL)	printf("Error: %s\n",error_msg);	printf("Usage: %s [-i infile] [-o outfile] -d | -D | -n onid tsid svcid \"new channel name\"\n",filename);	printf("-i infile                             : Input file 'svc.dat' is used if -i isn't specified\n");	printf("-i outfile                            : Output file 'svc_new.dat' is used if -o isn't specified\n");	printf("-d                                    : dump onid,tsid,svcid,channel\n");	printf("-D                                    : dump all service data\n");	printf("-n onid tsid svcid \"new channel name\" : Rename channel\n");	return;}int main(int argc, char *argv[]){	const char *filename = svc_dat;	const char *newfilename = svc_new_dat;	const char *newname;	enum { NO_CMD, DUMP_SHORT_CMD, DUMP_LONG_CMD, RENAME_CMD } command = NO_CMD;	SVC *svc;	int ch;	int onid,tsid,svcid;	for(;(ch = getopt(argc, argv, "dDi:o:n:")) != -1;)	{		switch(ch)		{			case 'i' : filename = optarg; break;			case 'o' : newfilename = optarg; break;			case 'd' : command = DUMP_SHORT_CMD; break;			case 'D' : command = DUMP_LONG_CMD; break;			case 'n' :				command = RENAME_CMD;				optind--;				if((argc - optind) < 4)				{					print_usage(argv[0], "Not enough arguments given to -n command!");					return 1;				}				onid = atoi(argv[optind++]);				tsid = atoi(argv[optind++]);				svcid = atoi(argv[optind++]);				newname = argv[optind++];								break;			case '?' : print_usage(argv[0],NULL); return 1;		}	}	printf("Opening '%s' for reading.\n",filename);	svc = svc_read(filename);	if(svc == NULL)		return 1;		switch(command)	{		case DUMP_SHORT_CMD : svc_dump_short(svc); break;		case DUMP_LONG_CMD : svc_dump_long(svc); break;		case RENAME_CMD :			printf("Changing name. onid = %d, tsid = %d, svcid = %d\n",onid,tsid,svcid);			if(svc_rename_ch(svc, onid, tsid, svcid, newname) == 0)			{				print_usage(argv[0],"Changing channel name!");				return 1;			}			printf("Opening '%s' for writing.\n",newfilename);			if(!svc_write(svc,newfilename))			{				return 1;			}			break;		case NO_CMD : print_usage(argv[0],"No command specified!"); break;	}	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本在线天堂| 国产视频一区二区在线| 5858s免费视频成人| 国产欧美一区二区精品性 | jizzjizzjizz欧美| 91精品欧美综合在线观看最新 | 亚洲va国产va欧美va观看| 国内一区二区在线| 日韩女优毛片在线| 亚洲精品一二三区| 成人性生交大合| 日韩西西人体444www| 亚洲影视在线观看| 99riav一区二区三区| 久久影院午夜片一区| 日韩精品亚洲专区| 欧美亚洲精品一区| 亚洲欧美日韩国产手机在线| 国产成人在线看| 精品人伦一区二区色婷婷| 午夜日韩在线观看| 欧美亚洲国产一区二区三区| 中文字幕一区二区视频| 成人午夜免费电影| 久久免费美女视频| 国产中文一区二区三区| 日韩欧美一二区| 免费人成网站在线观看欧美高清| 欧美亚日韩国产aⅴ精品中极品| 国产精品久久三| 国产成人99久久亚洲综合精品| 精品美女一区二区| 久久99精品久久久久婷婷| 在线电影欧美成精品| 天天做天天摸天天爽国产一区| 欧美三区免费完整视频在线观看| 一区二区三区中文字幕精品精品| 色激情天天射综合网| 亚洲欧美日韩中文字幕一区二区三区 | av中文字幕亚洲| 国产午夜亚洲精品羞羞网站| 国产一区视频导航| 久久久精品人体av艺术| 国产不卡视频一区| 国产精品国产三级国产aⅴ中文| 懂色av中文一区二区三区| 国产精品嫩草99a| 91浏览器打开| 亚洲大型综合色站| 制服丝袜中文字幕亚洲| 国产福利视频一区二区三区| 久久久久国产精品麻豆| 国产白丝网站精品污在线入口| 国产精品久久久久久久久久免费看| 成人avav影音| 亚洲午夜久久久久久久久久久| 欧美日韩大陆在线| 国产在线播精品第三| 日本一区二区三区视频视频| 91同城在线观看| 日本美女视频一区二区| 久久久久久久电影| 在线观看三级视频欧美| 蜜桃av噜噜一区二区三区小说| 欧美韩国一区二区| 欧美日韩一区二区三区四区五区| 久热成人在线视频| 国产精品久久久久久久久久久免费看| 91久久精品网| 久久狠狠亚洲综合| 亚洲欧洲成人av每日更新| 在线播放欧美女士性生活| 国产精品资源网| 五月激情六月综合| 国产亚洲综合在线| 91麻豆精品91久久久久同性| 国产.欧美.日韩| 全国精品久久少妇| 亚洲欧美激情小说另类| 久久蜜桃一区二区| 欧美日韩一区视频| 成人午夜激情影院| 老司机精品视频在线| 亚洲欧美日韩国产综合| 亚洲精品一区二区三区蜜桃下载 | 亚洲免费在线视频| 欧美精品一区在线观看| 久久久99久久精品欧美| 一区二区三区 在线观看视频| 欧美一卡2卡三卡4卡5免费| 丁香激情综合国产| 久久精品国产精品亚洲红杏| 亚洲乱码中文字幕| 久久久亚洲午夜电影| 67194成人在线观看| 99re热这里只有精品免费视频 | 国产精品久久久久久久岛一牛影视| 欧美精品乱码久久久久久按摩| 成人精品视频一区二区三区 | 国产精品18久久久久| 日韩激情一二三区| 亚洲综合精品自拍| 亚洲品质自拍视频网站| 国产日本亚洲高清| 久久―日本道色综合久久| 欧美一级xxx| 欧美久久一区二区| 欧美日韩精品一区二区三区四区| 视频一区国产视频| 91首页免费视频| 大胆欧美人体老妇| 国产高清不卡二三区| 经典三级在线一区| 久久av老司机精品网站导航| 日本在线不卡视频| 免费成人在线播放| 免费在线看成人av| 蜜桃精品视频在线观看| 蜜桃一区二区三区在线观看| 石原莉奈在线亚洲二区| 五月婷婷久久丁香| 日本伊人午夜精品| 精品亚洲porn| 国产精品亚洲一区二区三区在线| 国产麻豆精品视频| 粉嫩绯色av一区二区在线观看| 成人精品国产免费网站| 成人成人成人在线视频| 色老汉一区二区三区| 欧洲一区二区三区免费视频| 欧美图区在线视频| 91精品国产综合久久婷婷香蕉| 日韩西西人体444www| 欧美一区二区三区四区五区| 色噜噜狠狠色综合欧洲selulu| 成人h动漫精品一区二区| 成人v精品蜜桃久久一区| av爱爱亚洲一区| 色哟哟一区二区在线观看| 色吧成人激情小说| 51精品视频一区二区三区| 欧美成人一级视频| 国产精品欧美久久久久一区二区| 日韩一区欧美一区| 天堂久久久久va久久久久| 美女尤物国产一区| 成人免费视频免费观看| 欧美日韩一级视频| 欧美tickling挠脚心丨vk| 亚洲欧洲国产专区| 天堂蜜桃91精品| 粉嫩高潮美女一区二区三区| 在线国产电影不卡| 精品国产人成亚洲区| 67194成人在线观看| 麻豆一区二区99久久久久| 成人一区二区三区中文字幕| 色综合久久综合网97色综合| 欧美午夜电影一区| 国产亚洲va综合人人澡精品| 中文字幕亚洲欧美在线不卡| 丝袜亚洲精品中文字幕一区| 国产a区久久久| 欧美日韩和欧美的一区二区| 国产三级一区二区三区| 午夜天堂影视香蕉久久| 国产精品一区二区在线播放| 欧美午夜精品一区二区三区 | 性久久久久久久久| 国产福利精品一区二区| 欧美浪妇xxxx高跟鞋交| 国产精品三级电影| 美女国产一区二区三区| 欧美亚洲高清一区| 国产精品久久久久天堂| 蜜臀av一区二区在线免费观看| 91影院在线观看| 久久精品一区二区| 久久国产精品色婷婷| 欧美日韩美女一区二区| 国产精品国产三级国产三级人妇 | 91免费看视频| 国产调教视频一区| 免费高清在线视频一区·| 色欧美片视频在线观看| 中文字幕乱码亚洲精品一区| 久久精品99久久久| 91麻豆精品国产| 亚洲午夜精品网| 91丨九色丨尤物| 亚洲国产精华液网站w| 国产麻豆成人传媒免费观看| 夜夜嗨av一区二区三区中文字幕| 精品午夜久久福利影院| 欧美亚洲综合网| 亚洲精品高清在线观看| 岛国精品在线播放| 久久久av毛片精品| 国产麻豆欧美日韩一区| 久久精品视频一区二区三区|