⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tsk_fs_i.h

📁 linux下开发的针对所有磁盘的数据恢复的源码
💻 H
字号:
/*** The Sleuth Kit **** Brian Carrier [carrier <at> sleuthkit [dot] org]** Copyright (c) 2003-2008 Brian Carrier.  All rights reserved**** TASK** Copyright (c) 2002 @stake Inc.  All rights reserved** ** Copyright (c) 1997,1998,1999, International Business Machines          ** Corporation and others. All Rights Reserved.*//* LICENSE* .ad* .fi*	This software is distributed under the IBM Public License.* AUTHOR(S)*	Wietse Venema*	IBM T.J. Watson Research*	P.O. Box 704*	Yorktown Heights, NY 10598, USA--*//** * \file tsk_fs_i.h * Contains the internal library definitions for the file system functions.  This should * be included by the code in the file system library. */#ifndef _TSK_FS_I_H#define _TSK_FS_I_H#ifdef __cplusplusextern "C" {#endif// Include the other internal TSK header files#include "tsk3/base/tsk_base_i.h"#include "tsk3/img/tsk_img_i.h"#include "tsk3/vs/tsk_vs_i.h"// Include the external file #include "tsk_fs.h"#include <time.h>#include <locale.h>#if !defined (TSK_WIN32)#include <sys/fcntl.h>#include <sys/time.h>#endif// set to 1 to open HFS+ file systems -- which is not fully tested#ifndef TSK_USE_HFS#define TSK_USE_HFS 0#endif#ifndef NBBY#define NBBY 8#endif#ifndef isset#define isset(a,i)	(((uint8_t *)(a))[(i)/NBBY] &  (1<<((i)%NBBY)))#endif#ifndef setbit#define setbit(a,i)     (((uint8_t *)(a))[(i)/NBBY] |= (1<<((i)%NBBY)))#endif/* Data structure and action to internally load a file */    typedef struct {        char *base;        char *cur;        size_t total;        size_t left;    } TSK_FS_LOAD_FILE;    extern TSK_WALK_RET_ENUM tsk_fs_load_file_action(TSK_FS_FILE * fs_file,        TSK_OFF_T, TSK_DADDR_T, char *, size_t, TSK_FS_BLOCK_FLAG_ENUM,        void *);    /* BLOCK */    extern TSK_FS_BLOCK *tsk_fs_block_alloc(TSK_FS_INFO * fs);    extern int tsk_fs_block_set(TSK_FS_INFO * fs, TSK_FS_BLOCK * fs_block,        TSK_DADDR_T a_addr, TSK_FS_BLOCK_FLAG_ENUM a_flags, char *a_buf);    /* FS_DATA */    extern TSK_FS_ATTR *tsk_fs_attr_alloc(TSK_FS_ATTR_FLAG_ENUM);    extern void tsk_fs_attr_free(TSK_FS_ATTR *);    extern void tsk_fs_attr_clear(TSK_FS_ATTR *);    extern uint8_t tsk_fs_attr_set_str(TSK_FS_FILE *, TSK_FS_ATTR *,        const char *, TSK_FS_ATTR_TYPE_ENUM, uint16_t, void *, size_t);    extern uint8_t tsk_fs_attr_set_run(TSK_FS_FILE *,        TSK_FS_ATTR * a_fs_attr, TSK_FS_ATTR_RUN * data_run_new,        const char *name, TSK_FS_ATTR_TYPE_ENUM type, uint16_t id,        TSK_OFF_T size, TSK_OFF_T allocsize, TSK_FS_ATTR_FLAG_ENUM flags,        uint32_t compsize);    extern uint8_t tsk_fs_attr_add_run(TSK_FS_INFO * fs,        TSK_FS_ATTR * a_fs_attr, TSK_FS_ATTR_RUN * data_run_new);    extern void tsk_fs_attr_append_run(TSK_FS_INFO * fs,        TSK_FS_ATTR * a_fs_attr, TSK_FS_ATTR_RUN * a_data_run);    /* FS_DATALIST */    extern TSK_FS_ATTRLIST *tsk_fs_attrlist_alloc();    extern void tsk_fs_attrlist_free(TSK_FS_ATTRLIST *);    extern uint8_t tsk_fs_attrlist_add(TSK_FS_ATTRLIST *, TSK_FS_ATTR *);    extern TSK_FS_ATTR *tsk_fs_attrlist_getnew(TSK_FS_ATTRLIST *,        TSK_FS_ATTR_FLAG_ENUM a_atype);    extern void tsk_fs_attrlist_markunused(TSK_FS_ATTRLIST *);    extern const TSK_FS_ATTR *tsk_fs_attrlist_get(const TSK_FS_ATTRLIST *,        TSK_FS_ATTR_TYPE_ENUM);    extern const TSK_FS_ATTR *tsk_fs_attrlist_get_id(const TSK_FS_ATTRLIST        *, TSK_FS_ATTR_TYPE_ENUM, uint16_t);    extern const TSK_FS_ATTR *tsk_fs_attrlist_get_idx(const TSK_FS_ATTRLIST        *, int);    extern int tsk_fs_attrlist_get_len(const TSK_FS_ATTRLIST *        a_fs_attrlist);    /* FS_DATA_RUN */    extern TSK_FS_ATTR_RUN *tsk_fs_attr_run_alloc();    extern void tsk_fs_attr_run_free(TSK_FS_ATTR_RUN *);    /* FS_META */    extern TSK_FS_META *tsk_fs_meta_alloc(size_t);    extern TSK_FS_META *tsk_fs_meta_realloc(TSK_FS_META *, size_t);    extern void tsk_fs_meta_reset(TSK_FS_META *);    extern void tsk_fs_meta_close(TSK_FS_META * fs_meta);    /* FS_FILE */    extern TSK_FS_FILE *tsk_fs_file_alloc(TSK_FS_INFO *);    /* FS_DIR */    extern TSK_FS_DIR *tsk_fs_dir_alloc(TSK_FS_INFO * a_fs, size_t a_cnt);    extern uint8_t tsk_fs_dir_realloc(TSK_FS_DIR * a_fs_dir, size_t a_cnt);    extern uint8_t tsk_fs_dir_add(TSK_FS_DIR * a_fs_dir,        const TSK_FS_NAME * a_fs_dent);    extern void tsk_fs_dir_reset(TSK_FS_DIR * a_fs_dir);    /* Orphan Directory Support */    TSK_RETVAL_ENUM tsk_fs_dir_load_inum_named(TSK_FS_INFO * a_fs);    extern uint8_t tsk_fs_dir_make_orphan_dir_meta(TSK_FS_INFO * a_fs,        TSK_FS_META * a_fs_meta);    extern uint8_t tsk_fs_dir_make_orphan_dir_name(TSK_FS_INFO * a_fs,        TSK_FS_NAME * a_fs_name);    extern TSK_RETVAL_ENUM tsk_fs_dir_find_orphans(TSK_FS_INFO * a_fs,        TSK_FS_DIR * a_fs_dir);    /* we are using the last inode as the special inode for the orphan directory.  Note that this     * macro is defined to abstract this convention, but there are many places in the code where     * there is implied logic about this convention. For example, inode_walks will stop before     * this value so that special handling can occur. */#define TSK_FS_ORPHANDIR_INUM(fs_info) \    (fs_info->last_inum)    /* FS_DENT */    extern TSK_FS_NAME *tsk_fs_name_alloc(size_t, size_t);    extern uint8_t tsk_fs_name_realloc(TSK_FS_NAME *, size_t);    extern void tsk_fs_name_free(TSK_FS_NAME *);    extern void tsk_fs_name_print(FILE *, const TSK_FS_FILE *,        const char *, TSK_FS_INFO *, const TSK_FS_ATTR *, uint8_t);    extern void tsk_fs_name_print_long(FILE *, const TSK_FS_FILE *,        const char *, TSK_FS_INFO *, const TSK_FS_ATTR *, uint8_t);    extern void tsk_fs_name_print_mac(FILE *, const TSK_FS_FILE *,        const char *, TSK_FS_INFO *, const TSK_FS_ATTR * fs_attr,        const char *);    extern uint8_t tsk_fs_name_copy(TSK_FS_NAME * a_fs_name_to,        const TSK_FS_NAME * a_fs_name_from);    extern void tsk_fs_name_reset(TSK_FS_NAME * a_fs_name);    /* Utilities */    extern void tsk_fs_make_ls(TSK_FS_META *, char *);    extern uint8_t tsk_fs_unix_make_data_run(TSK_FS_FILE * fs_file);    extern TSK_FS_ATTR_TYPE_ENUM tsk_fs_unix_get_default_attr_type(const        TSK_FS_FILE * a_file);    /* Specific file system routines */    extern TSK_FS_INFO *ext2fs_open(TSK_IMG_INFO *, TSK_OFF_T,        TSK_FS_TYPE_ENUM, uint8_t);    extern TSK_FS_INFO *fatfs_open(TSK_IMG_INFO *, TSK_OFF_T,        TSK_FS_TYPE_ENUM, uint8_t);    extern TSK_FS_INFO *ffs_open(TSK_IMG_INFO *, TSK_OFF_T,        TSK_FS_TYPE_ENUM);    extern TSK_FS_INFO *ntfs_open(TSK_IMG_INFO *, TSK_OFF_T,        TSK_FS_TYPE_ENUM, uint8_t);    extern TSK_FS_INFO *rawfs_open(TSK_IMG_INFO *, TSK_OFF_T);    extern TSK_FS_INFO *swapfs_open(TSK_IMG_INFO *, TSK_OFF_T);    extern TSK_FS_INFO *iso9660_open(TSK_IMG_INFO *, TSK_OFF_T,        TSK_FS_TYPE_ENUM, uint8_t);    extern TSK_FS_INFO *hfs_open(TSK_IMG_INFO *, TSK_OFF_T,        TSK_FS_TYPE_ENUM, uint8_t);    /* Generic functions for swap and raw -- many say "not supported" */    extern uint8_t tsk_fs_nofs_fsstat(TSK_FS_INFO * fs, FILE * hFile);    extern void tsk_fs_nofs_close(TSK_FS_INFO * fs);    extern TSK_FS_ATTR_TYPE_ENUM tsk_fs_nofs_get_default_attr_type(const        TSK_FS_FILE * a_file);    extern uint8_t tsk_fs_nofs_make_data_run(TSK_FS_FILE *);    extern TSK_FS_BLOCK_FLAG_ENUM tsk_fs_nofs_block_getflags(TSK_FS_INFO *        a_fs, TSK_DADDR_T a_addr);    extern uint8_t tsk_fs_nofs_block_walk(TSK_FS_INFO * fs,        TSK_DADDR_T a_start_blk, TSK_DADDR_T a_end_blk,        TSK_FS_BLOCK_WALK_FLAG_ENUM a_flags, TSK_FS_BLOCK_WALK_CB a_action,        void *a_ptr);    extern uint8_t tsk_fs_nofs_file_add_meta(TSK_FS_INFO * fs,        TSK_FS_FILE * a_fs_file, TSK_INUM_T inum);    extern uint8_t tsk_fs_nofs_inode_walk(TSK_FS_INFO * fs,        TSK_INUM_T a_start_inum, TSK_INUM_T a_end_inum,        TSK_FS_META_FLAG_ENUM a_flags, TSK_FS_META_WALK_CB a_action,        void *a_ptr);    extern uint8_t tsk_fs_nofs_istat(TSK_FS_INFO * a_fs, FILE * hFile,        TSK_INUM_T inum, TSK_DADDR_T numblock, int32_t sec_skew);    extern TSK_RETVAL_ENUM tsk_fs_nofs_dir_open_meta(TSK_FS_INFO * a_fs,        TSK_FS_DIR ** a_fs_dir, TSK_INUM_T a_addr);    extern uint8_t tsk_fs_nofs_jopen(TSK_FS_INFO * a_fs, TSK_INUM_T inum);    extern uint8_t tsk_fs_nofs_jentry_walk(TSK_FS_INFO * a_fs, int a_flags,        TSK_FS_JENTRY_WALK_CB a_action, void *a_ptr);    extern uint8_t tsk_fs_nofs_jblk_walk(TSK_FS_INFO * a_fs,        TSK_INUM_T start, TSK_INUM_T end, int a_flags,        TSK_FS_JBLK_WALK_CB a_action, void *a_ptr);// Endian macros - actual functions in misc/#define tsk_fs_guessu16(fs, x, mag)   \	tsk_guess_end_u16(&(fs->endian), (x), (mag))#define tsk_fs_guessu32(fs, x, mag)   \	tsk_guess_end_u32(&(fs->endian), (x), (mag))#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -