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

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

?? posix-style.cpp

?? linux下開發的針對所有磁盤的數據恢復的源碼
?? CPP
字號:
/* *  * This is a sample file that shows how to use some of the basic  * POSIX-style library functions in The Sleuth Kit (www.sleuthkit.org). * There are also callback-style functions that can be used to read * the data and partitions. * * Copyright (c) 2008>, Brian Carrier <carrier <at> sleuthkit <dot> org> * All rights reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: *  * - Redistributions of source code must retain the above copyright notice, *   this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright *   notice, this list of conditions and the following disclaimer in the *   documentation and/or other materials provided with the distribution. * - Neither the Sleuth Kit name nor the names of its contributors may be *   used to endorse or promote products derived from this software without *   specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */#include <stdio.h>#include <string.h>#include <stdlib.h>#include <tsk3/libtsk.h>/** * Open a directory and cycle through its contents.  Read each file and recurse * into each directory. * * @param fs_info File system to process * @param stack Stack to prevent infinite recursion loops * @param dir_inum Metadata address of directory to open * @param path Path of directory being opened * @returns 1 on error */static uint8_tproc_dir(TSK_FS_INFO * fs_info, TSK_STACK * stack,    TSK_INUM_T dir_inum, const char *path){    TSK_FS_DIR *fs_dir;    size_t i;    char *path2 = NULL;    char *buf = NULL;    // open the directory    if ((fs_dir = tsk_fs_dir_open_meta(fs_info, dir_inum)) == NULL) {        fprintf(stderr, "Error opening directory: %" PRIuINUM "\n",            dir_inum);        tsk_error_print(stderr);        return 1;    }    /* These should be dynamic lengths, but this is just a sample program.     * Allocate heap space instead of stack to prevent overflow for deep     * directories. */    if ((path2 = (char *) malloc(4096)) == NULL) {        return 1;    }    if ((buf = (char *) malloc(2048)) == NULL) {        free(path2);        return 1;    }    // cycle through each entry    for (i = 0; i < tsk_fs_dir_getsize(fs_dir); i++) {        TSK_FS_FILE *fs_file;        TSK_OFF_T off = 0;        size_t len = 0;        // get the entry        if ((fs_file = tsk_fs_dir_get(fs_dir, i)) == NULL) {            fprintf(stderr,                "Error getting directory entry %" PRIuSIZE                " in directory %" PRIuINUM "\n", i, dir_inum);            tsk_error_print(stderr);            free(path2);            free(buf);            return 1;        }        /* Ignore NTFS System files */        if ((TSK_FS_TYPE_ISNTFS(fs_file->fs_info->ftype)) &&            (fs_file->name->name[0] == '$')) {            tsk_fs_file_close(fs_file);            continue;        }        //printf("Processing %s/%s\n", path, fs_file->name->name);        // make sure it's got metadata and not only a name        if (fs_file->meta) {            ssize_t cnt;            // read file contents            if (fs_file->meta->type == TSK_FS_META_TYPE_REG) {                int myflags = 0;                for (off = 0; off < fs_file->meta->size; off += len) {                    if (fs_file->meta->size - off < 2048)                        len = (size_t) (fs_file->meta->size - off);                    else                        len = 2048;                    cnt = tsk_fs_file_read(fs_file, off, buf, len,                        (TSK_FS_FILE_READ_FLAG_ENUM) myflags);                    if (cnt == -1) {                        // could check tsk_errno here for a recovery error (TSK_ERR_FS_RECOVER)                        fprintf(stderr, "Error reading %s file: %s\n",                            ((fs_file->name->                                    flags & TSK_FS_NAME_FLAG_UNALLOC)                                || (fs_file->meta->                                    flags & TSK_FS_META_FLAG_UNALLOC)) ?                            "unallocated" : "allocated",                            fs_file->name->name);                        tsk_error_print(stderr);                        break;                    }                    else if (cnt != (ssize_t) len) {                        fprintf(stderr,                            "Warning: %" PRIuSIZE " of %" PRIuSIZE                            " bytes read from %s file %s\n", cnt, len,                            ((fs_file->name->                                    flags & TSK_FS_NAME_FLAG_UNALLOC)                                || (fs_file->meta->                                    flags & TSK_FS_META_FLAG_UNALLOC)) ?                            "unallocated" : "allocated",                            fs_file->name->name);                    }                    // do something with the data...                }            }            // recurse into another directory (unless it is a '.' or '..')            else if (fs_file->meta->type == TSK_FS_META_TYPE_DIR) {                if (TSK_FS_ISDOT(fs_file->name->name) == 0) {                    // only go in if it is not on our stack                    if (tsk_stack_find(stack, fs_file->meta->addr) == 0) {                        // add the address to the top of the stack                        tsk_stack_push(stack, fs_file->meta->addr);                        snprintf(path2, 4096, "%s/%s", path,                            fs_file->name->name);                        if (proc_dir(fs_info, stack, fs_file->meta->addr,                                path2)) {                            tsk_fs_file_close(fs_file);                            tsk_fs_dir_close(fs_dir);                            free(path2);                            free(buf);                            return 1;                        }                        // pop the address                        tsk_stack_pop(stack);                    }                }            }        }        tsk_fs_file_close(fs_file);    }    tsk_fs_dir_close(fs_dir);    free(path2);    free(buf);    return 0;}/** * Analyze the volume starting at byte offset 'start' and look* for a file system.  When found, the files will be analyzed. ** @param img Disk image to be analyzed.* @param start Byte offset of volume starting location.** @return 1 on error and 0 on success*/static uint8_tproc_fs(TSK_IMG_INFO * img_info, TSK_OFF_T start){    TSK_FS_INFO *fs_info;    TSK_STACK *stack;    /* Try it as a file system */    if ((fs_info =            tsk_fs_open_img(img_info, start, TSK_FS_TYPE_DETECT)) == NULL)    {        fprintf(stderr,            "Error opening file system in partition at offset %" PRIuOFF            "\n", start);        tsk_error_print(stderr);        /* We could do some carving on the volume data at this point */        return 1;    }    // create a stack to prevent infinite loops    stack = tsk_stack_create();    // Process the directories    if (proc_dir(fs_info, stack, fs_info->root_inum, "")) {        fprintf(stderr,            "Error processing file system in partition at offset %" PRIuOFF            "\n", start);        tsk_fs_close(fs_info);        return 1;    }    tsk_stack_free(stack);    /* We could do some analysis of unallocated blocks at this point...  */    tsk_fs_close(fs_info);    return 0;}/*** Process the data as a volume system to find the partitions * and volumes.   * File system analysis will be performed on each partition. * * @param img Image file information structure for data to analyze * @param start Byte offset to start analyzing from.  * * @return 1 on error and 0 on success */static uint8_tproc_vs(TSK_IMG_INFO * img_info, TSK_OFF_T start){    TSK_VS_INFO *vs_info;    // Open the volume system    if ((vs_info =            tsk_vs_open(img_info, start, TSK_VS_TYPE_DETECT)) == NULL) {        if (tsk_verbose)            fprintf(stderr,                "Error determining volume system -- trying file systems\n");        /* There was no volume system, but there could be a file system */        tsk_error_reset();        if (proc_fs(img_info, start)) {            return 1;        }    }    else {        fprintf(stderr, "Volume system open, examining each\n");        // cycle through the partitions        for (TSK_PNUM_T i = 0; i < vs_info->part_count; i++) {            const TSK_VS_PART_INFO *vs_part;            if ((vs_part = tsk_vs_part_get(vs_info, i)) == NULL) {                fprintf(stderr, "Error getting volume %" PRIuPNUM "\n", i);                continue;            }            // ignore the metadata partitions            if (vs_part->flags & TSK_VS_PART_FLAG_META)                continue;            // could do something with unallocated volumes            else if (vs_part->flags & TSK_VS_PART_FLAG_UNALLOC) {            }            else {                if (proc_fs(img_info,                        vs_part->start * vs_info->block_size)) {                    // We could do more fancy error checking here to see the cause                     // of the error or consider the allocation status of the volume...                    tsk_error_reset();                }            }        }        tsk_vs_close(vs_info);    }    return 0;}intmain(int argc, char **argv1){    TSK_IMG_INFO *img_info;    TSK_TCHAR **argv;#ifdef TSK_WIN32    // On Windows, get the wide arguments (mingw doesn't support wmain)    argv = CommandLineToArgvW(GetCommandLineW(), &argc);    if (argv == NULL) {        fprintf(stderr, "Error getting wide arguments\n");        exit(1);    }#else    argv = (TSK_TCHAR **) argv1;#endif    if (argc != 2) {        fprintf(stderr, "Missing image name\n");        exit(1);    }    // open the disk image    img_info =        tsk_img_open_sing((const TSK_TCHAR *) argv[1],        TSK_IMG_TYPE_DETECT);    if (img_info == NULL) {        fprintf(stderr, "Error opening file\n");        tsk_error_print(stderr);        exit(1);    }    // process the volume starting at sector 0    if (proc_vs(img_info, 0)) {        tsk_error_print(stderr);        tsk_img_close(img_info);        exit(1);    }    // close the image    tsk_img_close(img_info);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久久无码国产精品| 正在播放一区二区| 欧美精品九九99久久| 国产网红主播福利一区二区| 亚洲国产精品久久人人爱蜜臀| 精品无码三级在线观看视频| 91福利资源站| 国产精品久久久久久久裸模| 久久精品国产亚洲aⅴ| 欧美午夜精品久久久| 中文字幕亚洲视频| 国产一区91精品张津瑜| 这里只有精品99re| 亚洲一级二级在线| 色悠悠亚洲一区二区| 日本一区二区成人| 韩国精品免费视频| 日韩一本二本av| 丝袜诱惑亚洲看片| 91成人国产精品| 亚洲欧美国产三级| 色综合久久久网| 国产精品成人在线观看| 国产99久久久精品| 久久综合九色综合97_久久久| 爽好多水快深点欧美视频| 在线观看www91| 亚洲夂夂婷婷色拍ww47| 欧美综合天天夜夜久久| 亚洲精品伦理在线| 一本色道久久综合精品竹菊| 中文字幕佐山爱一区二区免费| 国产91高潮流白浆在线麻豆| 国产欧美一区二区在线观看| 国产大陆亚洲精品国产| 国产欧美精品一区二区色综合| 国产成人在线观看免费网站| 久久久精品国产99久久精品芒果| 寂寞少妇一区二区三区| 久久久久久久久久美女| 国产成人在线色| 17c精品麻豆一区二区免费| 91麻豆精品秘密| 亚洲一区二区在线免费看| 欧美视频在线一区二区三区 | 欧亚洲嫩模精品一区三区| 亚洲一区二区三区激情| 91精品在线观看入口| 久久精品国产澳门| 亚洲国产激情av| 一本色道久久加勒比精品| 亚洲图片自拍偷拍| 欧美一区二区三区色| 国产毛片一区二区| 中文字幕亚洲欧美在线不卡| 欧美色综合网站| 久久99最新地址| 国产精品色哟哟| 欧美三级电影一区| 久久精品国产999大香线蕉| 国产精品久久久久久户外露出 | 91麻豆精品久久久久蜜臀| 精品一区二区三区在线播放| 精品成人在线观看| 色妹子一区二区| 韩国女主播一区二区三区| 综合av第一页| 欧美成人福利视频| 99在线精品观看| 日本成人中文字幕| 中文字幕日韩欧美一区二区三区| 欧美日韩午夜影院| 国产成人综合视频| 日韩影视精彩在线| 国产精品久久三区| 欧美mv日韩mv国产网站| 91小视频免费观看| 精彩视频一区二区三区| 亚洲一二三区视频在线观看| 久久精品男人天堂av| 欧美日韩精品福利| 99re66热这里只有精品3直播| 久久精品国产亚洲高清剧情介绍| 一区二区三区在线视频观看58| 2020国产精品| 欧美久久免费观看| 一本大道久久a久久精品综合| 久久97超碰色| 视频一区二区三区在线| 亚洲欧洲三级电影| 国产拍欧美日韩视频二区 | 精品91自产拍在线观看一区| 欧美日韩精品一区二区天天拍小说 | 国产在线视频一区二区| 亚洲夂夂婷婷色拍ww47| 国产精品污www在线观看| 日韩欧美国产麻豆| 7799精品视频| 欧美日韩国产欧美日美国产精品| 成人精品视频.| 国产一区二区三区免费观看| 日韩1区2区日韩1区2区| 亚洲一区二区三区四区在线| 自拍偷在线精品自拍偷无码专区| 久久蜜臀精品av| 精品国产一区二区三区忘忧草| 欧美日韩国产小视频| 色婷婷精品大视频在线蜜桃视频 | 国产精品嫩草影院com| 日韩精品一区二区三区在线 | 欧美日韩在线不卡| 日韩电影在线一区二区| 亚洲乱码中文字幕| 亚洲国产精华液网站w| 欧美xxxxx牲另类人与| 91精品婷婷国产综合久久竹菊| 欧美性xxxxxxxx| 91国产免费看| 欧美久久一二三四区| 日韩欧美一区二区三区在线| 欧美一区二区二区| 日韩精品中午字幕| 欧美成人r级一区二区三区| www精品美女久久久tv| 久久久精品国产99久久精品芒果 | 欧美www视频| 欧美在线制服丝袜| 欧美欧美午夜aⅴ在线观看| 91丨porny丨蝌蚪视频| www.亚洲精品| 91看片淫黄大片一级在线观看| 97se狠狠狠综合亚洲狠狠| 91亚洲国产成人精品一区二三 | 成人午夜看片网址| 99久久免费国产| 欧美色国产精品| 欧美电影免费观看高清完整版 | 国产精品美日韩| 亚洲男人的天堂在线观看| 亚洲综合无码一区二区| 亚洲成人中文在线| 精品一区中文字幕| 成人av中文字幕| 欧美日韩国产片| 色激情天天射综合网| 欧美在线三级电影| 26uuu精品一区二区在线观看| 97精品久久久午夜一区二区三区| 在线日韩一区二区| 精品精品欲导航| 亚洲欧美自拍偷拍| 婷婷一区二区三区| zzijzzij亚洲日本少妇熟睡| 欧美色偷偷大香| 国产视频亚洲色图| 香港成人在线视频| 国产成人在线观看| 欧美日本一道本在线视频| 日本一区二区三区电影| 日韩成人精品在线观看| 成人av网在线| 日韩一级完整毛片| 综合网在线视频| 精东粉嫩av免费一区二区三区| 色综合久久久久久久| 久久久九九九九| 日本强好片久久久久久aaa| caoporen国产精品视频| 日韩欧美视频在线| 午夜精品久久一牛影视| 成人av动漫网站| 久久久亚洲高清| 麻豆成人久久精品二区三区小说| 色综合天天性综合| 欧美激情一区二区三区全黄| 蜜桃91丨九色丨蝌蚪91桃色| 在线观看亚洲a| 亚洲日本青草视频在线怡红院| 国产一区二区成人久久免费影院 | 国产麻豆视频一区| 在线观看91av| 亚洲综合丁香婷婷六月香| 成人午夜伦理影院| 久久婷婷一区二区三区| 精品综合久久久久久8888| 欧美日韩免费一区二区三区视频| 国产精品久久久久婷婷二区次| 国产综合色在线| 欧美tk丨vk视频| 久久草av在线| 欧美一区二区播放| 日本午夜一区二区| 91精品啪在线观看国产60岁| 亚洲国产一区二区a毛片| 92国产精品观看| 亚洲欧美日韩久久| 日本精品视频一区二区| 亚洲精品高清视频在线观看| 色一区在线观看| 亚洲午夜精品一区二区三区他趣|