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

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

?? wiz_unpack.c

?? wizfwtools: tools for developing firmware images for Beyonwiz embedded devices (www.beyonwiz.com)
?? C
字號:
/* romfs_extract - check and optionally extract a ROMFS file system * * Copyright (C) 2004 Harald Welte <laforge@gnumonks.org> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * Version 2 as published by the Free Software Foundation. * *//* * Warning!  Not fully implemented yet, and spaghetti code. Patches welcome. */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <fcntl.h>#include <time.h>#include <fnmatch.h>#include <dirent.h>#include <errno.h>#include <sys/stat.h>#include <sys/types.h>#include <sys/mman.h>#include <netinet/in.h>struct romfh {	int32_t nextfh;	int32_t spec;	int32_t size;	int32_t checksum;};#define ROMFS_MAXFN 128#define ROMFH_HRD 0#define ROMFH_DIR 1#define ROMFH_REG 2#define ROMFH_LNK 3#define ROMFH_BLK 4#define ROMFH_CHR 5#define ROMFH_SCK 6#define ROMFH_FIF 7#define ROMFH_EXEC 8struct node_info {	u_int32_t nextfh;	u_int32_t spec;	u_int32_t size;	u_int32_t checksum;	char name[1024];	void *file;	u_int32_t mode;	unsigned int namelen;};static int case_insensitive_mode = 0;static int quiet = 0;static int parse_node(void *start, unsigned int offset, struct node_info *ni){	struct stat s;    struct romfh *rfh = start + offset;	char *name;	int namelen;	int i;	char filetype = 'r';    ni->size = ntohl(rfh->size);    ni->mode = (ntohl(rfh->nextfh) & 0x0f);    ni->nextfh = ntohl(rfh->nextfh) & ~0x0f;    ni->checksum = ntohl(rfh->checksum);    ni->spec = ntohl(rfh->spec);    name = (char *) (rfh+1);    namelen = strlen(name) + 1; // The original wasn't including the trailing zero.    if(namelen & 15)        namelen += 16 - (namelen&15);    ni->file = (char *)name + namelen;		ni->namelen = namelen;	if(offset != 0 && case_insensitive_mode == 1) //offset 0 is the header record.	{		if (ni->mode & ROMFH_EXEC)			filetype = 'x';		ni->namelen += 5;		if(ni->namelen > 1024)		{			fprintf(stderr, "filename > 1024!\n");			exit(1);		}			//find a free filename. This is used for case in-sensitive file systems.		for(i=1;i<1000;i++)		{			sprintf(ni->name, "%03d%c_", i, filetype);			strncpy(&ni->name[5], name, namelen);			if(stat(ni->name, &s) != 0)				break;		}	}	else		strncpy(ni->name, name, namelen);	return 1;}static int recurse(void *mem, unsigned int offset, const char *dir){	int ret;	FILE *outfd;	unsigned int mode;	struct node_info ni;	while (1) {		if(!quiet) printf("==========================\n");		if(!quiet) printf("parse_node(%u/0x%x)\n", offset, offset);		parse_node(mem, offset, &ni);		if(!quiet) printf("%s: ", ni.name);		switch (ni.mode & ~ROMFH_EXEC) {		case ROMFH_HRD:			if(!quiet) printf("hard link\n");			if (ni.size)				fprintf(stderr, "nonstandard size `%u'\n",					ni.size);			break;		case ROMFH_DIR:			if(!quiet) printf("directory\n");			if (ni.size)				fprintf(stderr, "nonstandard size `%u'\n",					ni.size);			if ((case_insensitive_mode			        && (!strcmp(&ni.name[5], "..")				    || !strcmp(&ni.name[5], ".")))				|| (!strcmp(ni.name, "..")				|| !strcmp(ni.name, ".")))			 {				if(!quiet) fprintf(stderr, "name invalid!!\n");				break;			}			if (mkdir(ni.name, 0750) < 0) {				fprintf(stderr, "can't create `%s': %s\n",					ni.name, strerror(errno));				return -1;			}			chdir(ni.name);			if (ni.spec != offset) {				ret = recurse(mem, ni.spec, dir);				chdir("..");				if (ret < 0)					return ret;			}			break;		case ROMFH_REG:			if(!quiet) printf("regular file\n");			mode = 0640;			if (ni.mode & ROMFH_EXEC)				mode |= 0110;			outfd = fopen(ni.name, "wb+"); //creat(ni.name, mode);			if (outfd == NULL) { //< 0) {				fprintf(stderr, "can't create `%s': %s\n",					ni.name, strerror(errno));				return -1;			}			if(ni.size > 0) {				if (fwrite(ni.file, ni.size, 1, outfd) != 1) {					fprintf(stderr, "short write `%s': %s\n",						ni.name, strerror(errno));					fclose(outfd);					return -1;				}			}			fclose(outfd);			chmod(ni.name, mode);			break;		case ROMFH_LNK:			if(!quiet) printf("symbolic link: %s\n", (char*)ni.file);			if(symlink((char*)ni.file, ni.name) < 0) {				fprintf(stderr, "can't link `%s' to `%s': %s\n",					ni.name, (char*)ni.file,					strerror(errno));				return -1;			}			break;		case ROMFH_BLK:			if(!quiet) printf("block device\n");			if (ni.size)				fprintf(stderr, "nonstandard size `%u'\n",					ni.size);			break;		case ROMFH_CHR:			if(!quiet) printf("character device\n");			if (ni.size)				fprintf(stderr, "nonstandard size `%u'\n",					ni.size);			break;		case ROMFH_SCK:			if(!quiet) printf("socket\n");			if (ni.size)				fprintf(stderr, "nonstandard size `%u'\n",					ni.size);			break;		case ROMFH_FIF:			if(!quiet) printf("fifo\n");			if (ni.size)				fprintf(stderr, "nonstandard size `%u'\n",					ni.size);			break;		}		if (!ni.nextfh)			return 1;		if(!quiet) printf("nextfh=%u\n", ni.nextfh);		offset = ni.nextfh;		//curmem += ni.nextfh;	}	/* not reached */	return -10;}static int extract_from_mem(void *mem, unsigned int len, const char *dir){	unsigned int offset = 0;	struct node_info ni;	chdir(dir);	//ri.checksum = htonl(0x55555555);	//	parse_node(mem, offset, &ni);	offset += sizeof(struct romfh) + ni.namelen;	printf("romfs image name: `%s'\n", ni.name);	printf("romfs image size: %u\n", ni.size);	return recurse(mem, offset, dir);}static int extract(const char *pathname, const char *outpath){	int fd, ret = -1;	struct stat st;	void *mem;	void *mem_ptr;	fd = open(pathname, O_RDONLY);	if (fd < 0) {		fprintf(stderr, "Error opening `%s': %s\n", pathname,			strerror(errno));		goto err_out;	}	if (fstat(fd, &st) < 0) {		fprintf(stderr, "Error in fstat: %s\n", strerror(errno));		goto err_close;	}	mem = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);	if (!mem) {		fprintf(stderr, "Error during MMAP: %s\n", strerror(errno));		goto err_close;	}	mem_ptr = mem;		if (!strncmp((char *)mem_ptr, "WizFwPkg", 8) && st.st_size > 0x200) //This is a wrp file. Skip the header.	{		mem_ptr += 0x200;	}			if (strncmp((char *)mem_ptr, "-rom1fs-", 8)) {		fprintf(stderr,"File is not a romfs image\n");		goto err_unmap;	}		ret = extract_from_mem(mem_ptr, st.st_size, outpath);err_unmap:	munmap(mem, st.st_size);err_close:	close(fd);err_out:	return ret;}static char *cmdname;static void version(void){	fprintf(stderr, "%s, Version 0.01\n", cmdname);	fprintf(stderr, "Romfsck (Modified to unpack Beyonwiz firmware files.)\n");	fprintf(stderr, "(C) 2007 by Eric Fry <efry78@gmail.com>\n\n");	fprintf(stderr, "Original Romfsck (C) 2004 by Harald Welte <laforge@gnumonks.org>\n\n");		fprintf(stderr, "This program is Free Software covered by GNU GPLv2\n");}static void usage(void){	version();	fprintf(stderr, "%s [options] firmware\n",cmdname);	fprintf(stderr, "Options:\n");	fprintf(stderr, "-i           Case in-sensitive mode. (prepend nnn_ to all files/directories)\n");		fprintf(stderr, "-x outdir    Expand firmware romfs image into directory/\n");	fprintf(stderr, "-q           Quiet; don't list the image contents\n");	fprintf(stderr, "-V           Print version and exit\n");	fprintf(stderr, "-h           Print this usage and exit\n\n");}int main(int argc, char **argv){	int c;	char *outdir = NULL;	struct stat s;		cmdname = argv[0];#ifdef WIN32	case_insensitive_mode = 1; // We hard code this for the Windows platform.#endif	while ((c = getopt(argc, argv, "x:hiqV")) != EOF) {		switch (c) {		case 'i':			case_insensitive_mode = 1;			break;		case 'q':			quiet = 1;			break;		case 'x':			outdir = optarg;			break;		case 'h':			usage();			exit(0);			break;		case 'V':			version();			exit(0);			break;		}	}	if (argc <= optind) {		usage();		exit(2);	}	if (outdir && stat(outdir,&s) != 0) {		if (mkdir(outdir, 0750) < 0) { //try and create directory			fprintf(stderr, "unable to create `%s': %s\n",				outdir, strerror(errno));			exit(1);		}	}	if (extract(argv[optind], outdir) < 0)		exit(1);	exit(0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费国产精品| 亚洲欧美在线视频| 国产精品乱码一区二三区小蝌蚪| 亚洲欧美色图小说| 日韩黄色一级片| 99国产麻豆精品| 久久综合九色综合久久久精品综合| 亚洲男人天堂av网| 国产成人99久久亚洲综合精品| 91精品国产全国免费观看| 亚洲精品老司机| 成人三级伦理片| 久久久亚洲精品石原莉奈| 免费在线观看成人| 欧美日韩国产在线播放网站| 亚洲欧美一区二区视频| 国产成人综合自拍| 久久久美女艺术照精彩视频福利播放| 亚洲高清不卡在线观看| 一本大道av伊人久久综合| 国产欧美日韩在线视频| 韩国av一区二区三区在线观看| 欧美日韩视频一区二区| 亚洲亚洲精品在线观看| 日本韩国精品在线| 18欧美亚洲精品| 91在线视频播放地址| 国产精品国产三级国产有无不卡| 国产成人在线视频免费播放| www国产成人| 国产一区二区免费看| 国产午夜一区二区三区| 成人性生交大合| 国产精品短视频| 91猫先生在线| 亚洲va天堂va国产va久| 欧美丰满少妇xxxxx高潮对白| 三级久久三级久久| 777午夜精品免费视频| 老司机一区二区| 久久精品一区二区| 不卡av在线免费观看| 亚洲欧美电影院| 欧美午夜免费电影| 蜜臀久久99精品久久久久宅男| 日韩精品一区二区三区四区| 久久99国产精品久久| 国产日本亚洲高清| 99精品国产99久久久久久白柏| 亚洲黄色性网站| 欧美二区乱c少妇| 九一九一国产精品| 中文字幕在线一区| 欧美日韩成人综合天天影院| 毛片av一区二区| 国产精品三级av在线播放| 日本久久精品电影| 蜜臀91精品一区二区三区| 久久久久亚洲蜜桃| 91福利国产成人精品照片| 视频一区视频二区中文| 国产午夜精品理论片a级大结局 | 亚洲第一主播视频| 欧美一区二区三区在线视频| 狠狠色丁香婷综合久久| 亚洲视频每日更新| 欧美一级片免费看| 色综合亚洲欧洲| 日本不卡的三区四区五区| 日本一区二区三区dvd视频在线| 99精品久久免费看蜜臀剧情介绍| 亚洲v日本v欧美v久久精品| 久久久久久久久久久久久久久99 | 亚洲激情在线播放| 精品欧美一区二区三区精品久久| 成人永久免费视频| 天天综合网天天综合色| 国产精品欧美经典| 日韩视频一区二区三区 | 国产麻豆视频精品| 亚洲va国产天堂va久久en| 日本一区二区三级电影在线观看| 欧美精品123区| 99久久伊人网影院| 韩国欧美国产一区| 性欧美疯狂xxxxbbbb| 一区二区中文字幕在线| 精品久久久久99| 91精品欧美综合在线观看最新| 99久久国产综合色|国产精品| 九九视频精品免费| 午夜a成v人精品| 伊人开心综合网| 中文字幕一区二区视频| 久久品道一品道久久精品| 欧美日本一区二区三区四区| 91美女在线视频| av激情成人网| 成人av影视在线观看| 激情成人综合网| 久久激情综合网| 日本不卡一二三| 日精品一区二区三区| 亚洲第一电影网| 亚洲大尺度视频在线观看| 一区二区在线看| 亚洲精选视频在线| 亚洲美女电影在线| 亚洲欧美电影院| 亚洲激情自拍偷拍| 亚洲免费视频成人| 一区二区三区在线不卡| 亚洲卡通欧美制服中文| 亚洲久本草在线中文字幕| 亚洲欧美一区二区三区久本道91| 国产精品国产三级国产aⅴ中文 | 国产精品久久久久久久久图文区 | 欧美一区二区三区四区久久| 欧美日韩免费视频| 4438x成人网最大色成网站| 在线综合+亚洲+欧美中文字幕| 欧美日韩1区2区| 国产亚洲欧美一级| 久久伊99综合婷婷久久伊| 久久先锋影音av| 中文av一区二区| 中文字幕一区二区三区视频| 亚洲欧美日韩在线播放| 亚洲视频在线一区观看| 亚洲国产成人精品视频| 青娱乐精品视频在线| 国产一区二区影院| 成人免费毛片app| 欧美亚洲动漫精品| 欧美一卡二卡在线| 国产三级精品在线| 1区2区3区欧美| 日本亚洲三级在线| 精品一区二区三区免费毛片爱| 国产福利精品导航| 色综合天天性综合| 91精品国产黑色紧身裤美女| 久久嫩草精品久久久久| 综合久久久久久| 日韩高清不卡一区二区三区| 国产综合色在线视频区| 91丨porny丨首页| 欧美电视剧在线看免费| 国产精品久久毛片a| 午夜亚洲国产au精品一区二区| 毛片一区二区三区| 91麻豆国产在线观看| 日韩视频一区二区三区| 亚洲视频香蕉人妖| 精品一二三四在线| 色妞www精品视频| 精品久久人人做人人爽| 亚洲欧美日韩国产另类专区| 免费三级欧美电影| 成人av在线一区二区三区| 在线播放中文字幕一区| 中文字幕一区二区三区四区| 日本vs亚洲vs韩国一区三区二区 | 在线观看视频91| 久久精品亚洲乱码伦伦中文| 亚洲电影你懂得| 成人激情电影免费在线观看| 日韩一区二区中文字幕| 成人免费在线视频观看| 国产精品一级在线| 777a∨成人精品桃花网| 亚洲精品水蜜桃| 国产精品99久久久久久有的能看| 欧美高清视频www夜色资源网| 国产精品第一页第二页第三页| 国产大片一区二区| 欧美一级欧美一级在线播放| 一区二区理论电影在线观看| 国产suv精品一区二区6| 欧美成人精品1314www| 亚洲v日本v欧美v久久精品| 97久久精品人人爽人人爽蜜臀 | 欧美三片在线视频观看| 国产精品家庭影院| 成人做爰69片免费看网站| 亚洲精品在线免费播放| 视频一区二区三区在线| 91福利视频久久久久| 亚洲伦在线观看| 99免费精品视频| 国产精品卡一卡二卡三| 国产宾馆实践打屁股91| 国产日产欧美一区| 国产成人高清视频| 国产情人综合久久777777| 激情综合色丁香一区二区| 欧美一级一区二区| 麻豆传媒一区二区三区| 日韩一区二区视频在线观看| 秋霞成人午夜伦在线观看|