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

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

?? dump.c

?? NTFS(NT文件系統) for Linux的一個實現源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
		printf ("\n");	}}/* display the list of runs of an attribute */static void dump_runs(unsigned char *start, int vcnstart, int vcnend,	int compressed){	int length=0;	ntfs_cluster_t cluster=0;	int l=vcnend-vcnstart;	int vcn=vcnstart;	int ctype;	while(l>0 && ntfs_decompress_run(&start,&length,&cluster,&ctype)!=-1)	{		l-=length;		if(!ctype)			printf("\tRun from %x to %x (VCN=%x)\n",cluster,cluster+length-1,vcn);		else			printf("\tCompression unit size %x\n",length);		vcn+=length;	}}/* print the attribute list at rec */void list_attr_mem(ntfs_volume *vol, char *rec){	int offs;	int type, attr_length, stream_length, resident, namelen, compressed;	char *start;	/* first attribute should start at *0x14 */	offs= NTFS_GETU16(rec + 0x14);	while(offs<vol->mft_recordsize)	{		printf("%4.4X:",offs);		printf("Type %X ",type=NTFS_GETU32(rec+offs));		if(type==-1)break;		/* offset to the next attribute */		printf("Length %X ", attr_length = NTFS_GETU32(rec + offs + 0x4));		resident=*(rec+offs+8)=='\0';		compressed=*(rec+offs+0xC);		if(resident){			stream_length = NTFS_GETU32(rec + offs + 0x10);			printf("resident ");			if(*(rec+offs+0x16))				printf("indexed ");		}		if(compressed)			printf("compressed ");		printf("Slot #%X ",NTFS_GETU16(rec+offs+14));		/* position of attribute data if resident */		start=rec+offs+NTFS_GETU8(rec+offs+10);		if(NTFS_GETU8(rec+offs+10)==0)start+=NTFS_GETU16(rec+offs+0x20);		/* length attribute name, name starts at start */		namelen=NTFS_GETU8(rec+offs+9);		if(namelen!=0)		{			printf("named(");			uniprint(start,namelen);			start+=namelen*2;			printf(") ");		}		if(NTFS_GETU8(rec+offs+11))			fprintf(stderr,"Found [B] at offset %X\n",offs);		if(NTFS_GETU8(rec+offs+13))			fprintf(stderr,"Found [D] at offset %X\n",offs);		print_attr_type(vol,type);		printf("\n");		if(resident)			printf("\tStream length 0x%X \n", stream_length);		switch(type)		{		case 0x10:			dump_standard_information(rec + offs + 0x18);			break;		case 0x20:			dump_attribute_list(rec + offs + 0x18, rec + offs + 0x18 + stream_length);			break;		case 0x30:			dump_filename(rec + offs + 0x18);			break;		case 0x50:			if (resident)				dump_security_descriptor(rec + offs + 0x18, stream_length);			break;		}		if(!resident) {			printf("\tAllocated %x, size %x, initialized %x",			       NTFS_GETU32(rec+offs+0x28),NTFS_GETU32(rec+offs+0x30),			       NTFS_GETU32(rec+offs+0x38));			if(compressed)				printf(", compressed %x\n",NTFS_GETU32(rec+offs+0x40));			else				putchar('\n');			if(NTFS_GETU16(rec+offs+0x22))				fprintf(stderr,"Found [22]=%x at offset %X\n",NTFS_GETU16(rec+offs+0x22),offs);			if(NTFS_GETU32(rec+offs+0x24))				fprintf(stderr,"Found [24] at offset %X\n",offs);			dump_runs(start,NTFS_GETU32(rec+offs+0x10),				  NTFS_GETU32(rec+offs+0x18),compressed);		}		offs += attr_length;	}	puts("");}	/* Necessary forward reference */static void dumpdir_entry(ntfs_inode* ino,char *entry);/* display a directory record */static void dumpdir_record(ntfs_inode* ino,int nextblock){	int length,error;	char record[8192];	char *offset;	ntfs_io io;	io.fn_put=ntfs_put;	io.fn_get=0;	io.param=record;	io.size=ino->u.index.recordsize;	error=ntfs_read_attr(ino,ino->vol->at_index_allocation,"$I30",			     nextblock*ino->vol->clustersize,&io);	if(error || io.size!=ino->u.index.recordsize){		printf("read failed\n");		return;	}	if(!ntfs_check_index_record(ino,record)){		printf("Not a index record\n");		return;	}	offset=record+NTFS_GETU16(record+0x18)+0x18;	do{		dumpdir_entry(ino,offset);		if(*(offset+0xC)&2)break;		length=NTFS_GETU16(offset+8);		if(!length)break;		offset+=length;	}while(1);}/* display all subentries, then display this entry */static void dumpdir_entry(ntfs_inode* ino,char *entry){	int length=NTFS_GETU16(entry+8);	int used=(NTFS_GETU8(entry+12)&2)==0;	if(used)printf("\tinode %x\t",NTFS_GETU32(entry));	if(NTFS_GETU8(entry+13))		fprintf(stderr,"Found [D] at %x\n",ino->i_number);	if(NTFS_GETU16(entry+14))		fprintf(stderr,"Found [E] at %x\n", ino->i_number);	if((int)NTFS_GETU8(entry+12)&1){		int nextblock=NTFS_GETU64(entry+length-8);		printf("Going down to block %x\n",nextblock);		dumpdir_record(ino,nextblock);		printf("back to\tinode %x\t",NTFS_GETU32(entry));	}	if(used)print_name(entry+0x50);}/* display an inode as directory */void dumpdir(ntfs_inode *ino){	int length=ino->vol->mft_recordsize;	char *buf=(char*)malloc(length);	char *data;	ntfs_io io;	io.fn_put=ntfs_put;	io.fn_get=0;	io.param=buf;	io.size=length;	if(ntfs_read_attr(ino,ino->vol->at_index_root,"$I30",0,&io))	{		printf("Not a directory\n");		free(buf);		return;	}	ino->u.index.recordsize=NTFS_GETU32(buf+0x8);	ino->u.index.clusters_per_record=NTFS_GETU32(buf+0xC);	/* FIXME: consistency check */	data=buf+0x20;	while(1)	{		length=NTFS_GETU16(data+8);		dumpdir_entry(ino,data);		if(NTFS_GETU8(data+12)&2)break;		data+=length;		if(!length){			printf("length==0!!\n");			break;		}	}	free(buf);}#if 0static void putchar1(unsigned char c){	if(c>=32 && c<=127)		putchar(c);	else switch(c)	{	case 10: printf("\\n");break;	case 13: printf("\\r");break;	default: printf("\\%o",c);	}}#endifvoid dump_decompress(ntfs_inode *ino, int run, int verbose){	printf("Function is obsolete\n");	/* FIXME: really? */#if 0	int block,len,clear_pos;	unsigned char *compressed;	char clear[16384];	int tag=0,bits,charmode;	int ctype;	unsigned char *data;	int offset=0;	unsigned char *attr=ntfs_get_attr(ino,AT_DATA,0);	ntfs_io io;	io.fn_put=ntfs_put;	io.fn_get=0;	if(!attr)	{		fprintf(stderr,"No data attribute in this inode\n");		return;	}	if(attr->resident)	{		fprintf(stderr,"Attribute is resident\n");		return;	}	if(!attr->compressed)	{		fprintf(stderr,"Data attribute is not compressed\n");		return;	}	/*Skip name and valueoffset*/	attr+=NTFS_GETU16(attr+0x20)+NTFS_GETU8(attr+9);	block=0;	do{		ntfs_decompress_run(&attr,&len,&block,&ctype);	}while(run--);	compressed=(char*)malloc(len*vol->clustersize);	io.param=compressed;	io.do_read=1;	error=ntfs_getput_clusters(vol,block,0,				   len*vol->clustersize,&io);	if(error)		fprintf(stderr,"Error reading block %x\n",block);	data=compressed;	while(*(data+1) & 0xF0)	{		int block_size;		unsigned char *stop;		block_size = *(unsigned short*)data;		if(verbose)printf("Head %x",block_size);		block_size &= 0xFFF;		data+=2;		offset+=2;		stop = data + block_size;		bits=0;		charmode=0;		clear_pos=0;		while(data<=stop)		{			if(!bits){				if(verbose)printf("\nOffset %x",offset);				charmode=0;				tag=*data;				bits=8;				data++;				offset++;				if(data>stop)					break;			}			if(tag&1){				int i,len,delta,delta1=0;				delta = *(unsigned short*)(data);				len=*data;				len&=0x1f;				if(clear_pos<=0x10)				{					delta1=delta>>12;					len = delta & 0xFFF;				}				else if(clear_pos<=0x20)				{					delta1=delta>>11;					len = delta & 0x7FF;				}				else if(clear_pos<=0x40)				{					delta1=delta>>10;					len = delta & 0x3FF;				}				else if(clear_pos<=0x80)				{					delta1=delta>>9;					len = delta & 0x1FF;				}				else if(clear_pos<=0x100)				{					delta1=delta>>8;					len = delta & 0xFF;				}				else if(clear_pos<=0x200)				{					delta1=delta>>7;					len = delta & 0x7F;				}				else if(clear_pos<=0x400)				{					delta1=delta>>6;					len = delta & 0x3F;				}				else if(clear_pos<=0x800)				{					delta1=delta>>5;					len = delta & 0x1F;				}				else if(clear_pos<=0x1000)				{					delta1=delta>>4;					len = delta & 0xF;				}else					fprintf(stderr,"NOW WHAT?\n");				len+=3;				if(verbose)printf("\n%8.8X:len %x(%x) delta %x(%x) ",						  clear_pos,len,*data,delta,delta1);				charmode=0;				for(i=0;i<len;i++)				{					if(verbose)						putchar1(clear[clear_pos-delta1-1]);					else						putchar(clear[clear_pos-delta1-1]);					clear[clear_pos]=clear[clear_pos-delta1-1];					clear_pos++;				}				data+=2;				offset+=2;			}else{				if(verbose)if(!charmode)					printf("\n%8.8X:",clear_pos);				if(verbose)					putchar1(*data);				else					putchar(*data);				clear[clear_pos++]=*data;				data++;				offset++;				charmode=1;			}			tag>>=1;			bits--;		}		if(verbose)putchar('\n');	}/*while*/#endif}void dump_inode(ntfs_inode *ino){	int i,j,vcn;	printf("Inode %d, %d attributes, %d mft clusters\n",	       ino->i_number, ino->attr_count, ino->record_count);	for(i=0;i<ino->attr_count;i++)	{		printf("attribute %X",ino->attrs[i].type);		if(ino->attrs[i].name)		{			printf(" named(");			uniprint((char*)ino->attrs[i].name,ino->attrs[i].namelen);			printf(")\n");		}else			printf("\n");		if(ino->attrs[i].resident)			printf("  resident\n");		else			for(j=0,vcn=0;j<ino->attrs[i].d.r.len;j++)			{				printf("  Run %d from %x len %x (VCN=%x)\n", j,				       ino->attrs[i].d.r.runlist[j].cluster,				       ino->attrs[i].d.r.runlist[j].len,vcn);				vcn+=ino->attrs[i].d.r.runlist[j].len;			}	}}/* * Local variables: * c-file-style: "linux" * End: */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜成人免费视频| 在线观看国产精品网站| 在线国产电影不卡| 久久嫩草精品久久久精品| 亚洲va国产天堂va久久en| 成人免费看黄yyy456| 日韩一二在线观看| 亚洲高清视频在线| 99国产精品久久久久久久久久| 日韩精品一区二区三区蜜臀 | 色综合久久99| 欧美激情一区二区三区蜜桃视频| 日韩精彩视频在线观看| 色综合亚洲欧洲| 亚洲图片欧美激情| 高清av一区二区| 久久综合国产精品| 青青草一区二区三区| 欧美日韩国产另类不卡| 亚洲一区二区综合| 欧美视频第二页| 亚洲欧美日韩在线播放| 99久久免费视频.com| 日韩一区在线免费观看| 成人美女视频在线观看18| 国产日韩欧美麻豆| 国产一区二区导航在线播放| 精品成人在线观看| 国产毛片精品一区| 国产日产欧产精品推荐色| 国产乱色国产精品免费视频| 精品成人一区二区三区| 国产一区二区三区美女| 国产欧美精品一区| eeuss鲁一区二区三区| 最新高清无码专区| 色综合久久天天综合网| 一区二区久久久久久| 欧美中文字幕亚洲一区二区va在线| 亚洲另类一区二区| 欧美日本一区二区三区四区| 美女看a上一区| 久久久久久日产精品| 成人国产精品视频| 一区二区欧美精品| 日韩欧美国产精品一区| 国产主播一区二区| 亚洲欧洲av另类| 欧美日韩免费不卡视频一区二区三区| 亚洲成av人片在线观看| 日韩三级视频中文字幕| 国产精品99久久久久久久女警 | 91国产免费观看| 日韩制服丝袜先锋影音| 26uuu国产日韩综合| 高清在线成人网| 亚洲综合久久久久| 欧美精品一区二区久久久| 成人av电影免费在线播放| 亚洲电影视频在线| 久久久久久9999| 欧美伊人久久大香线蕉综合69| 蜜臀av性久久久久蜜臀aⅴ流畅| 精品国产乱子伦一区| 色综合久久久久综合体| 九九精品一区二区| 亚洲免费毛片网站| 日韩女优电影在线观看| 91浏览器打开| 精品在线一区二区| 亚洲永久免费视频| 久久精品欧美一区二区三区不卡| jizz一区二区| 国产在线精品免费| 日韩精品乱码免费| 亚洲日本中文字幕区| 久久一夜天堂av一区二区三区| 在线观看视频欧美| 成人在线视频一区| 老司机免费视频一区二区三区| 亚洲另类春色校园小说| 国产精品素人视频| 精品欧美一区二区久久| 欧美天堂亚洲电影院在线播放| 国产精品1区二区.| 免费精品视频在线| 亚洲成a人片综合在线| 1000精品久久久久久久久| 久久影音资源网| 欧美一区二区三区视频在线| 色先锋aa成人| 成人小视频免费观看| 久久精品免费看| 亚洲成人av一区二区三区| 亚洲色图视频免费播放| 亚洲国产高清aⅴ视频| 久久久久久免费| 欧美不卡在线视频| 日韩欧美中文字幕精品| 欧美日韩的一区二区| 欧美偷拍一区二区| 欧美亚洲高清一区二区三区不卡| www.视频一区| 成人av资源下载| 国产成人欧美日韩在线电影| 激情欧美一区二区三区在线观看| 免费在线观看日韩欧美| 青娱乐精品在线视频| 日韩中文字幕91| 日本美女一区二区三区| 青娱乐精品在线视频| 免费不卡在线观看| 久久精品国产亚洲高清剧情介绍| 天天综合色天天综合| 日本在线播放一区二区三区| 日韩精品高清不卡| 久久99精品国产| 国产精品亚洲第一| 成人免费视频国产在线观看| av电影一区二区| 色视频欧美一区二区三区| 色88888久久久久久影院按摩 | 亚洲一二三四在线| 天堂va蜜桃一区二区三区漫画版| 日韩高清欧美激情| 日本三级亚洲精品| 国内一区二区在线| 成人av网站免费观看| 色诱视频网站一区| 欧美精品第一页| 欧美mv和日韩mv的网站| 国产精品日韩成人| 亚洲国产精品欧美一二99| 日本一道高清亚洲日美韩| 久久精品国产99国产| 成人动漫视频在线| 精品视频免费在线| 久久亚洲免费视频| 中文字幕佐山爱一区二区免费| 亚洲国产另类av| 国产91丝袜在线播放| 色域天天综合网| 精品国产人成亚洲区| 日韩毛片在线免费观看| 日韩激情中文字幕| 成人av在线资源网| 日韩一区二区三区四区| 国产精品久久久久久久久图文区 | 日韩免费观看高清完整版| 久久久国产综合精品女国产盗摄| 国产精品青草久久| 偷拍亚洲欧洲综合| 成人精品一区二区三区中文字幕| 欧美色图天堂网| 国产肉丝袜一区二区| 亚洲大片精品永久免费| 国产传媒日韩欧美成人| 欧美日韩在线一区二区| 国产精品三级电影| 久久超碰97人人做人人爱| 一本大道综合伊人精品热热| 精品国产乱码久久久久久牛牛| 一区二区三区中文在线| 国产1区2区3区精品美女| 欧美日韩aaa| 自拍视频在线观看一区二区| 国模娜娜一区二区三区| 337p亚洲精品色噜噜噜| 亚洲欧洲综合另类在线| 国产精品亚洲第一区在线暖暖韩国| 欧美色综合影院| 亚洲色图在线播放| 成人黄页毛片网站| 久久久99免费| 国内欧美视频一区二区 | 91免费视频网址| 久久丝袜美腿综合| 麻豆精品视频在线观看| 欧美日韩久久久| 亚洲综合在线五月| 91免费在线看| 亚洲天堂精品视频| 99热国产精品| ●精品国产综合乱码久久久久| 国产91精品露脸国语对白| 精品国产伦一区二区三区观看方式| 日韩av中文字幕一区二区三区| 欧美午夜精品久久久久久孕妇| 亚洲激情男女视频| 日本精品一区二区三区四区的功能| 国产欧美精品国产国产专区 | 日韩av一级片| 欧美人与性动xxxx| 天天操天天综合网| 5566中文字幕一区二区电影| 午夜免费欧美电影| 欧美一区二区三区系列电影| 蜜桃av一区二区在线观看| 日韩美女在线视频| 精品一区二区综合|