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

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

?? dump.c

?? NTFS(NT文件系統) for Linux的一個實現源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* *  dump.c *  Output functions for the ntfs tools * *  Copyright (C) 1995-1997 Martin von L鰓is *  Copyright (C) 1997,1999 R間is Duchesne *  Copyright (c) 1999 Richard Russon * *  1999/04/05: Merged Security Descriptor dump code from Richard --red */#include <errno.h>#include "ntfstypes.h"#include "struct.h"#include "dump.h"#include "config.h"#include "util.h"#include "nttools.h"#include "inode.h"#include "dir.h"#include "support.h"#include <stdio.h>#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_IO_H#include <io.h>#endif#include <ctype.h>#include <stdlib.h>#include "macros.h"/* attribute names. Maybe this gets merged into ntfs_volume some day */static char* attr_names=0;static int attr_names_size;/* Dump a block of memory starting at buf. Display length bytes. The displayed   index of the first byte is start */void dump_mem(unsigned char *buf, int start, int length){	int offs,i;	for(offs=0;offs<length;offs+=16)	{		printf("%8.8X ",start+offs);		for(i=0;i<16;i++)printf("%2X ",buf[offs+i]);		for(i=0;i<16;i++)			if(buf[offs+i]>31 && buf[offs+i]<128)putchar(buf[offs+i]);			else putchar('.');		putchar('\n');	}}	/* dump from the raw volume, starting at position */void dump(ntfs_volume *vol, ntfs_size_t position, int start, int length){	int offset;	ntfs_lseek(NTFS_FD(vol),position,SEEK_SET);	for(offset=0;length==-1 || offset<length;offset+=16)	{		int i;		unsigned char buf[16];		if(read(NTFS_FD(vol),buf,16)!=16)		{perror("read");return;}		printf("%8.8X ",start+offset);		for(i=0;i<16;i++)			printf("%2X ",buf[i]);		for(i=0;i<16;i++)			if(buf[i]>31 && buf[i]<128)putchar(buf[i]);			else putchar('.');		putchar('\n');	}}static void uniprintz(char *first){	while(*first){		putchar(*first++);		if(*first++){			printf("!!!!Error printing string\n");			return;		}	}}/* Find a string on the volume, starting at position. If searching for Unicode   strings, the string argument should already be Unicode */#define BSIZE	32768int grep(ntfs_volume *vol, ntfs_size_t position, int length,	 unsigned char *string, int stringlen, int ignore_case){	int offset;	int b_offs;	int i;	unsigned char buf[2*BSIZE];	if(ignore_case)		for(i=0;string[i];i++)string[i]=tolower(string[i]);	ntfs_lseek(NTFS_FD(vol),position,SEEK_SET);	read(NTFS_FD(vol),buf,BSIZE);	if(ignore_case)		for(i=0;i<BSIZE;i++)buf[i]=tolower(buf[i]);	for(offset=b_offs=0;length==-1 || offset<length;offset+=BSIZE)	{		if(read(NTFS_FD(vol),buf+BSIZE,BSIZE)!=BSIZE)		{perror("read");return -1;}		if(ignore_case)			for(i=BSIZE;i<2*BSIZE;i++)buf[i]=tolower(buf[i]);		for(;b_offs<BSIZE;b_offs++)			if(buf[b_offs]==string[0])			{				for(i=0;i<stringlen;i++)					if(buf[b_offs+i]!=string[i])						break;				if(i==stringlen)return position+offset+b_offs;			}		ntfs_memcpy(buf,buf+BSIZE,BSIZE);		b_offs-=BSIZE;	}	return -1;}static intprint_attr_type(ntfs_volume* vol,int type){	int offset,error;	ntfs_u8 *buf=0;	if(!attr_names){		ntfs_attribute *data;		ntfs_io io;		ntfs_inode attrdef;		error=ntfs_init_inode(&attrdef,vol,FILE_ATTRDEF);		if(error)return error;		offset=0;		data=ntfs_find_attr(&attrdef,vol->at_data,NULL);		if(!data){			free(buf);			return EINVAL;		}		buf=malloc(data->size);		if(!buf)return ENOMEM;		io.fn_put=ntfs_put;		io.fn_get=ntfs_get;		io.do_read=1;		io.param=buf;		io.size=4096;		error=ntfs_readwrite_attr(&attrdef,data,offset,&io);		if(error)return error;		attr_names=buf;		attr_names_size=data->size;	}	for(offset=0;offset<attr_names_size;offset+=0xA0)		if(NTFS_GETU32(attr_names+offset+0x80)==type){			uniprintz(attr_names+offset+2);			break;		}	if(offset>=attr_names_size)		printf("Unknown type");	return 0;}			/* print the attribute list for the MFT record at offset on the volume */void list_attributes(ntfs_volume *vol, ntfs_size_t offset){	char rec[4096];	ntfs_lseek(NTFS_FD(vol),offset,SEEK_SET);	if(read(NTFS_FD(vol),rec,sizeof(rec))!=sizeof(rec)){		perror("read");		return;	}	if(!ntfs_check_mft_record(vol,rec)){		fprintf(stderr,"Not a mft record\n");		return;	}	list_attr_mem(vol,rec);}/* dump the standard information attribute */static void dump_standard_information(ntfs_u8 *start){	printf("\tCreation time ");	print_time(NTFS_GETU64(start));	printf("\n\tModification time ");	print_time(NTFS_GETU64(start + 0x8));	printf("\n\tMFT Modification time ");	print_time(NTFS_GETU64(start + 0x10));	printf("\n\tAccess time ");	print_time(NTFS_GETU64(start + 0x18));	printf("\n");}/* dump the attribute list attribute */static void dump_attribute_list(ntfs_u8 *start, ntfs_u8 *stop){	while(start!=stop){		printf("\tType %X,MFT# %X,Start VCN %X ",NTFS_GETU32(start),		       NTFS_GETU32(start+0x10),NTFS_GETU32(start+0x8));		uniprint(start+0x1A,NTFS_GETU8(start+0x6));		start+=NTFS_GETU16(start+4);		putchar('\n');	}}static void print_name(ntfs_u8 *first){        int length=*(unsigned char*)first++;        switch(*first++)        {        case 0: printf("Posix-Name:");break;        case 1: printf("Unicode-Name:");break;        case 2: printf("DOS-Name:");break;        case 3: printf("Unicode+DOS:");break;        default:                printf("Don't know how to read the name\n");                return;        }        uniprint(first,length);        puts("");}/* dump the filename attribute */static void dump_filename(ntfs_u8 *start){	printf("\t");	print_name(start+0x40);	printf("\tIndexed in 0x%X\n",NTFS_GETU32(start));}/* dump a sid */long dump_sid (ntfs_u8 *sid){	int revision;	int sa_count;	int i;	ntfs_u64 ident_auth = 0;	revision = *sid;			/* Should always be 1 */	sid++;	sa_count = *sid;			/* Number of Sub-authorities */	sid++;	for (i = 0; i < 6; i ++)	{		ident_auth <<= 8;		ident_auth += *sid;		sid++;	}	printf ("S-%d-%Lu", revision, ident_auth);	for (i = 0; i < sa_count; i++)	{		printf ("-%u", *((ntfs_u32*) sid));		sid += 4;	}	return 8 + (sa_count * 4);}void display_access_flags (ntfs_u8 flags){	if (flags & 0x1) printf (" Obj inh ACE");	if (flags & 0x2) printf (" Con inh ACE");	if (flags & 0x4) printf (" No prop inh");	if (flags & 0x8) printf (" Inh onlyACE");}void display_access_mask (ntfs_u32 mask){	if ((mask & 0x00120089) == 0x00120089) printf ("R"); else printf (".");	if ((mask & 0x00120116) == 0x00120116) printf ("W"); else printf (".");	if ((mask & 0x001200a0) == 0x001200a0) printf ("X"); else printf (".");	if ((mask & 0x00010000) == 0x00010000) printf ("D"); else printf (".");	if ((mask & 0x00040000) == 0x00040000) printf ("P"); else printf (".");	if ((mask & 0x00080000) == 0x00080000) printf ("O"); else printf (".");}void display_access_allowed_ace (ntfs_u8 *ace){	ntfs_u32 mask  = NTFS_GETU32 (ace + 4);	ntfs_u8  flags = NTFS_GETU8  (ace + 1);	display_access_mask (mask);	display_access_flags (flags);}void display_access_denied_ace (ntfs_u8 *ace){	ntfs_u32 mask  = NTFS_GETU32 (ace + 4);	ntfs_u8  flags = NTFS_GETU8  (ace + 1);	display_access_mask (mask);	display_access_flags (flags);}void display_system_audit_ace (ntfs_u8 *ace){	ntfs_u32 mask  = NTFS_GETU32 (ace + 4);	ntfs_u8  flags = NTFS_GETU8  (ace + 1);	display_access_mask (mask);	if (flags & 0x80) printf (" Success ");	if (flags & 0x40) printf (" Failure ");}long display_ace (ntfs_u8 *ace){	ntfs_u8  type     = NTFS_GETU8  (ace);	//ntfs_u8  flags    = NTFS_GETU8  (ace + 1);	ntfs_u16 ace_size = NTFS_GETU16 (ace + 2);	ntfs_u32 mask     = NTFS_GETU32 (ace + 4);	long sid_size     = 0;	switch (type)	{		case 0x00:			printf ("\t\tAccess allowed: ");			display_access_allowed_ace(ace);			break;		case 0x01:			printf ("\t\tAccess denied:  ");			display_access_denied_ace(ace);			break;		case 0x02:			printf ("\t\tSystem audit:   ");			display_system_audit_ace(ace);			break;		default:			printf ("\t\tUnknown:        %#010x\n", mask);			return ace_size;	}	printf (" ");	sid_size = dump_sid (ace + 8);	printf ("\n");	if (sid_size != ace_size) {		// I've seen this happen	}	return ace_size;}long display_acl (ntfs_u8 *acl, int len){	//ntfs_u8  version  = NTFS_GETU8  (acl);	//ntfs_u8  unknown1 = NTFS_GETU8  (acl + 1);	ntfs_u32 acl_size = NTFS_GETU16 (acl + 2);	ntfs_u32 num_aces = NTFS_GETU16 (acl + 4);	//ntfs_u32 unknown2 = NTFS_GETU16 (acl + 6);	long l;	long size = 8;	printf (" %d entr%s\n", num_aces, num_aces == 1 ? "y" : "ies");	if (acl_size < len)	{		for (l = 0; l < num_aces; l++)		{			size += display_ace (acl + size);		}	}	return size;}/* dump the security descriptor attribute */static void dump_security_descriptor(ntfs_u8 *start, int len){	//ntfs_u32 unknown       = NTFS_GETU32 (start);		// This looks like flags	ntfs_u32 off_user      = NTFS_GETU32 (start + 0x4);	// user SID	ntfs_u32 off_group     = NTFS_GETU32 (start + 0x8);	// group SID	ntfs_u32 off_acl_audit = NTFS_GETU32 (start + 0xC);	// ACL containing audit info	ntfs_u32 off_acl_perms = NTFS_GETU32 (start + 0x10);	// ACL containing permission info	/* When the Audit ACL is missing, its offset is zeroed */	if (off_acl_audit && off_acl_audit < len) {		printf ("\tACL - Audit");		display_acl (start + off_acl_audit, len);	}	if (off_acl_perms < len) {		printf ("\tACL - Permissions");		display_acl (start + off_acl_perms, len);	}	if (off_user < len) {		printf ("\tUser:  ");		dump_sid (start + off_user);		printf ("\n");	}	if (off_group < len) {		printf ("\tGroup: ");		dump_sid (start + off_group);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱子伦一区| 亚洲欧洲在线观看av| 国产精品欧美久久久久无广告| 亚洲精品国产品国语在线app| 久久精品久久久精品美女| 99精品久久久久久| 欧美精品一区二区三区在线| 亚洲一区免费在线观看| 成人午夜在线视频| 久久综合中文字幕| 日本午夜一区二区| 在线观看视频91| 中文字幕亚洲区| 国产成人av电影在线| 日韩精品中文字幕在线一区| 亚洲一本大道在线| 91热门视频在线观看| 国产精品区一区二区三| 国产成人亚洲精品狼色在线| 日韩一区二区中文字幕| 五月天激情综合网| 91久久久免费一区二区| 亚洲欧美日韩精品久久久久| 成人久久18免费网站麻豆 | 久久国产精品一区二区| 欧美日韩国产综合视频在线观看| 亚洲视频在线一区观看| 成人做爰69片免费看网站| 国产午夜精品一区二区三区视频| 国产一区二区三区四| 精品久久久网站| 国产在线视频一区二区| 亚洲欧美日韩综合aⅴ视频| av一区二区三区| 亚洲视频精选在线| 日本韩国欧美一区二区三区| 亚洲一区二区视频| 欧美日韩国产a| 男人的j进女人的j一区| 欧美成人性福生活免费看| 精品一区二区三区av| 欧美xxxx老人做受| 国产精品自在在线| 国产日韩欧美a| 一本色道a无线码一区v| 亚洲电影视频在线| 欧美一区二区三区在线| 久久国产综合精品| 日本一区二区综合亚洲| 色婷婷国产精品久久包臀| 亚洲一区二区三区在线播放| 在线播放视频一区| 国产乱码精品一区二区三区忘忧草 | 亚洲成人动漫av| 日韩一区二区在线免费观看| 国产在线视频精品一区| 亚洲三级在线观看| 4438x亚洲最大成人网| 国产精品资源网| 尤物在线观看一区| 日韩免费福利电影在线观看| 丁香桃色午夜亚洲一区二区三区| 一区二区三区小说| 精品少妇一区二区三区日产乱码| 国产91精品欧美| 午夜视黄欧洲亚洲| 中文文精品字幕一区二区| 欧美中文字幕一二三区视频| 久88久久88久久久| 一区二区三区在线视频播放| 欧美一区2区视频在线观看| 成人免费看片app下载| 午夜精品免费在线观看| 亚洲国产精品国自产拍av| 欧美久久久影院| 波多野结衣一区二区三区| 首页欧美精品中文字幕| 亚洲国产精华液网站w| 欧美久久久久久蜜桃| 成人18视频在线播放| 免费在线观看成人| 一区二区三区**美女毛片| 久久久三级国产网站| 欧美日韩高清一区二区三区| 成人美女视频在线观看18| 看电视剧不卡顿的网站| 亚洲成年人网站在线观看| 国产欧美日韩精品一区| 日韩精品最新网址| 欧美精品第1页| 91蝌蚪国产九色| 成人免费高清在线| 国产在线国偷精品免费看| 五月天网站亚洲| 夜夜精品视频一区二区 | 国产91丝袜在线播放九色| 日本美女视频一区二区| 一区二区高清在线| 亚洲人成在线观看一区二区| 欧美国产精品一区二区三区| 精品日韩一区二区| 日韩欧美国产一二三区| 欧美日韩国产不卡| 欧美日韩三级一区二区| 在线视频欧美精品| 欧洲av在线精品| 日本高清成人免费播放| 一本大道av一区二区在线播放| 成人午夜av影视| 成人免费av资源| av一区二区久久| 99热这里都是精品| 色婷婷亚洲婷婷| 日本国产一区二区| 欧美日韩亚洲国产综合| 欧美日韩免费电影| 91精品国产欧美日韩| 日韩一级完整毛片| 欧美精品一区二区在线观看| 欧美精品一区二区三区高清aⅴ| 精品国免费一区二区三区| 久久亚洲精品小早川怜子| 久久网站热最新地址| 久久精品视频一区二区| 欧美国产一区视频在线观看| 国产精品乱子久久久久| 国产91丝袜在线观看| 成人免费观看av| 日本精品视频一区二区三区| 欧美久久久影院| 精品成人a区在线观看| 欧美国产禁国产网站cc| 亚洲人成电影网站色mp4| 亚洲国产成人tv| 麻豆久久久久久| 成人中文字幕合集| 欧美亚洲一区二区三区四区| 91麻豆精品91久久久久同性| 精品福利在线导航| 国产精品对白交换视频| 香蕉加勒比综合久久| 久久草av在线| 91影院在线免费观看| 7777精品久久久大香线蕉| 精品电影一区二区三区| 中文字幕在线观看不卡| 首页欧美精品中文字幕| 国产福利91精品一区二区三区| av成人老司机| 日韩三区在线观看| 专区另类欧美日韩| 日本美女一区二区三区视频| 成人黄动漫网站免费app| 欧美私人免费视频| 国产欧美日韩亚州综合| 亚洲国产综合色| 国产成a人无v码亚洲福利| 欧美色老头old∨ideo| 国产午夜精品一区二区三区嫩草| 亚洲综合丁香婷婷六月香| 国产精品夜夜爽| 在线观看91精品国产麻豆| 国产精品久久99| 国内偷窥港台综合视频在线播放| 日本韩国一区二区三区| 欧美激情在线一区二区三区| 亚洲va中文字幕| 91在线视频在线| 国产女主播在线一区二区| 日日夜夜精品免费视频| 97久久精品人人澡人人爽| 欧美精品一区二区三区四区| 亚洲成年人影院| 欧洲精品在线观看| 最新久久zyz资源站| 国产在线一区二区| 日韩精品一区二区三区四区视频| 一区二区三区日韩精品视频| 成人美女视频在线看| 久久亚洲二区三区| 久久狠狠亚洲综合| 欧美顶级少妇做爰| 亚洲成人av一区二区三区| 一本一道波多野结衣一区二区| 国产日韩欧美高清| 国产成人午夜99999| 精品国产露脸精彩对白| 久久精品国产免费| 日韩一区二区免费在线观看| 天天色 色综合| 欧美日韩免费视频| 午夜影院在线观看欧美| 欧美亚洲国产一区二区三区va| 亚洲欧美日韩国产综合| 一本久久a久久精品亚洲| 亚洲美女屁股眼交3| 在线观看日韩精品| 亚洲制服丝袜av| 欧美日韩电影一区| 性欧美疯狂xxxxbbbb|