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

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

?? sigfind.cpp

?? linux下開發的針對所有磁盤的數據恢復的源碼
?? CPP
字號:
/* * The Sleuth Kit * * Brian Carrier [carrier <at> sleuthkit [dot] org] * Copyright (c) 2004 Brian Carrier.  All rights reserved * * sigfind * * This software is distributed under the Common Public License 1.0 */#include "tsk3/tsk_tools_i.h"#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <limits.h>#include <errno.h>extern char *progname;voidusage(){    fprintf(stderr,            "%s [-b bsize] [-o offset] [-t template] [-lV] [hex_signature] file\n",            progname);    fprintf(stderr, "\t-b bsize: Give block size (default 512)\n");    fprintf(stderr,            "\t-o offset: Give offset into block where signature should exist (default 0)\n");    fprintf(stderr, "\t-l: Signature will be little endian in image\n");    fprintf(stderr, "\t-V: Version\n");    fprintf(stderr,            "\t-t template: The name of a data structure template:\n");    fprintf(stderr,            "\t\tdospart, ext2, ext3, fat, hfs, hfs+, ntfs, ufs1, ufs2\n");    exit(1);}// @@@ Should have a big endian flag as wellintmain(int argc, char **argv){    int ch;    uint8_t sig[4] = { 0, 0, 0, 0 };    uint8_t block[1024];    char **err = NULL;    int fd;    int offset = 0, rel_offset = 0;    int read_size = 512, bs = 512;    daddr_t i, prev_hit;    int sig_size = 0;    uint8_t lit_end = 0;    int sig_print = 0;    progname = argv[0];    while ((ch = getopt(argc, argv, "b:lo:t:V")) > 0) {        switch (ch) {        case 'b':            bs = strtol(optarg, err, 10);            if ((bs == 0) || (errno == EINVAL)) {                fprintf(stderr, "Error converting block size: %s\n",                        optarg);                exit(1);            }            if (bs % 512) {                fprintf(stderr, "Invalid block size\n");                exit(1);            }            break;        case 'l':            lit_end = 1;            break;        case 'o':            /* Get the offset in the sector */            offset = strtol(optarg, err, 10);            if ((offset == 0) || (errno == EINVAL)) {                fprintf(stderr, "Error converting offset value: %s\n",                        optarg);                exit(1);            }            break;        case 't':            if ((strcmp(optarg, "ext2") == 0) ||                (strcmp(optarg, "ext3") == 0)) {                lit_end = 1;                sig[0] = 0x53;                sig[1] = 0xef;                sig_size = 2;                offset = 56;                bs = 512;            }            else if ((strcmp(optarg, "dospart") == 0) ||                     (strcmp(optarg, "fat") == 0) ||                     (strcmp(optarg, "ntfs") == 0)) {                lit_end = 1;                sig[0] = 0x55;                sig[1] = 0xaa;                sig_size = 2;                offset = 510;                bs = 512;            }            else if (strcmp(optarg, "ufs1") == 0) {                lit_end = 1;                sig[0] = 0x54;                sig[1] = 0x19;                sig[2] = 0x01;                sig[3] = 0x00;                sig_size = 4;                /* Located 1372 into SB */                offset = 348;                bs = 512;            }            else if (strcmp(optarg, "ufs2") == 0) {                lit_end = 1;                sig[0] = 0x19;                sig[1] = 0x01;                sig[2] = 0x54;                sig[3] = 0x19;                sig_size = 4;                /* Located 1372 into SB */                offset = 348;                bs = 512;            }            else if (strcmp(optarg, "hfs+") == 0) {                lit_end = 1;                sig[0] = 0x48;                sig[1] = 0x2b;                sig[2] = 0x00;                sig[3] = 0x04;                sig_size = 4;                /* Located 1024 into image */                offset = 0;                bs = 512;            }            else if (strcmp(optarg, "hfs") == 0) {                lit_end = 1;                sig[0] = 0x42;                sig[1] = 0x44;                sig_size = 2;                /* Located 1024 into image */                offset = 0;                bs = 512;            }            else {                fprintf(stderr, "Invalid template\n");                exit(1);            }            break;        case 'V':            tsk_version_print(stdout);            exit(0);        default:            usage();        }    }    /* If we didn't get a template then check the cmd line */    if (sig_size == 0) {        if (optind + 1 > argc) {            usage();        }        /* Get the hex value */        sig_size = 0;        for (i = 0; i < 9; i++) {            uint8_t tmp;            tmp = argv[optind][i];            if (tmp == 0) {                if (i % 2) {                    fprintf(stderr,                            "Invaild signature - full bytes only\n");                    exit(1);                }                break;            }            /* Digit */            if ((tmp >= 0x30) && (tmp <= 0x39)) {                tmp -= 0x30;            }            /* lowercase a-f */            else if ((tmp >= 0x61) && (tmp <= 0x66)) {                tmp -= 0x57;            }            else if ((tmp >= 0x41) && (tmp <= 0x46)) {                tmp -= 0x37;            }            else {                fprintf(stderr, "Invalid signature value: %c\n", tmp);                exit(1);            }            /* big nibble */            if (0 == (i % 2)) {                sig[sig_size] = 16 * tmp;            }            else {                sig[sig_size] += tmp;                sig_size++;            }        }        optind++;        /* Check the signature length */        if (i == 9) {            fprintf(stderr,                    "Error: Maximum supported signature size is 4 bytes\n");            exit(1);        }        /* Need to switch order */        if (lit_end) {            uint8_t tmp;            if (sig_size == 2) {                tmp = sig[1];                sig[1] = sig[0];                sig[0] = tmp;            }            else if (sig_size == 3) {                tmp = sig[2];                sig[2] = sig[0];                sig[0] = tmp;            }            else if (sig_size == 4) {                tmp = sig[3];                sig[3] = sig[0];                sig[0] = tmp;                tmp = sig[2];                sig[2] = sig[1];                sig[1] = tmp;            }        }    }    if (offset < 0) {        fprintf(stderr, "Error: negative offset\n");        exit(1);    }    /* Check that the signature and offset are not larger than a block */    if ((offset + sig_size) > bs) {        fprintf(stderr,                "Error: The offset and signature sizes are greater than the block size\n");        exit(1);    }    /* If our signature crosses the 512 boundary, then read 1k at a time */    if ((offset / 512) != ((offset + sig_size - 1) / 512)) {        read_size = 1024;    }    rel_offset = offset % 512;    /* Get the image */    if (optind + 1 != argc) {        usage();    }    fd = open(argv[optind], O_RDONLY);    if (fd == -1) {        fprintf(stderr, "error opening: %s\n", argv[optind]);        exit(1);    }    /* Seek to the correct block */    if (offset > 512) {        if (-1 == lseek(fd, (offset / 512) * 512, SEEK_SET)) {            fprintf(stderr, "error doing initial seek\n");            exit(1);        }    }    /* Make a version that can be more easily printed */    for (i = 0; i < sig_size; i++) {        sig_print |= (sig[i] << ((sig_size - 1 - i) * 8));    }    printf("Block size: %d  Offset: %d  Signature: %X\n", bs, offset,           sig_print);    /* Loop through by blocks  - we will read in block sized chunks     * so that we can be used on raw devices      */    prev_hit = -1;    for (i = 0;; i++) {        int retval;        /* Read the signature area */        retval = read(fd, (void *) block, read_size);        if (retval == 0)            break;        else if (retval == -1) {            fprintf(stderr, "error reading bytes %lu\n",                    (unsigned long) i);            exit(1);        }        /* Check the sig */        if ((block[rel_offset] == sig[0]) &&            ((sig_size < 2) || (block[rel_offset + 1] == sig[1])) &&            ((sig_size < 3) || (block[rel_offset + 2] == sig[2])) &&            ((sig_size < 4) || (block[rel_offset + 3] == sig[3]))) {            if (prev_hit == -1)                printf("Block: %lu (-)\n", (unsigned long) i);            else                printf("Block: %lu (+%lu)\n", (unsigned long) i,                       (unsigned long) (i - prev_hit));            prev_hit = i;        }        /* Seek ahead another block */        if (-1 == lseek(fd, bs - read_size, SEEK_CUR)) {            break;        }    }    close(fd);    exit(0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产电影| 日韩精品一区二区三区在线播放 | 在线观看成人小视频| 极品瑜伽女神91| 久久精品国产亚洲高清剧情介绍| 蜜臀久久99精品久久久久久9| 调教+趴+乳夹+国产+精品| 亚洲大型综合色站| 日本视频在线一区| 久久精品国产亚洲5555| 国精产品一区一区三区mba视频 | 欧美午夜精品电影| 7777精品伊人久久久大香线蕉超级流畅| 在线观看日韩国产| 欧美一级欧美一级在线播放| 欧美刺激午夜性久久久久久久| 久久综合丝袜日本网| 国产精品美女久久福利网站| 一区二区三区在线视频观看58| 亚洲成人久久影院| 久久99国产精品免费网站| 国产一区二区三区在线观看免费 | 国产91在线观看| a级精品国产片在线观看| 色综合久久中文综合久久97 | 国产69精品久久久久毛片| 成人爱爱电影网址| 欧美日韩成人一区二区| 精品国产精品网麻豆系列| 国产亚洲福利社区一区| 亚洲欧美激情一区二区| 日韩av电影免费观看高清完整版 | 黄页网站大全一区二区| 成人av网址在线| 欧美日韩一二三| 国产视频视频一区| 午夜伦欧美伦电影理论片| 国产大陆精品国产| 欧美福利视频导航| 国产精品久久久久久久久快鸭 | 久久久亚洲综合| 亚洲地区一二三色| 成人理论电影网| 日韩一区二区三免费高清| 国产精品伦理在线| 男女视频一区二区| 色婷婷激情一区二区三区| 国产亚洲精品久| 麻豆91小视频| 欧美日韩精品综合在线| 国产精品不卡在线| 国产精品一二三| 日韩欧美一区二区在线视频| 亚洲色图制服丝袜| 国产成人在线免费观看| 欧美成人a∨高清免费观看| 亚洲一线二线三线久久久| 国产91对白在线观看九色| 日韩一级精品视频在线观看| 一区二区三区在线免费观看| 成人av动漫网站| 久久一二三国产| 激情综合网激情| 欧美成人福利视频| 免费高清成人在线| 日韩视频免费直播| 蜜臀精品一区二区三区在线观看 | 一本大道久久a久久精品综合| 欧美成人福利视频| 麻豆精品国产91久久久久久| 欧美一区二区三区四区五区| 亚洲国产欧美日韩另类综合| 在线欧美日韩国产| 亚洲靠逼com| 91视频免费看| 亚洲综合一区在线| 欧美怡红院视频| 亚洲.国产.中文慕字在线| 欧美情侣在线播放| 日本三级韩国三级欧美三级| 日韩免费性生活视频播放| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美一区三区二区| 蜜桃视频一区二区三区在线观看| 日韩一区二区免费在线观看| 激情综合网av| 国产偷国产偷精品高清尤物| 国产+成+人+亚洲欧洲自线| 日本一区二区三区高清不卡| 91亚洲国产成人精品一区二区三| 亚洲精品国久久99热| 欧美三级在线看| 六月婷婷色综合| 国产精品久久久久影院老司| 欧美亚洲国产一区二区三区| 五月天亚洲婷婷| 国产亚洲婷婷免费| 91一区二区在线| 蜜臀91精品一区二区三区| 欧美激情艳妇裸体舞| 在线观看日韩av先锋影音电影院| 免费精品99久久国产综合精品| 精品国产免费久久| 99久久久国产精品| 日本 国产 欧美色综合| 久久久91精品国产一区二区精品| 91久色porny | 国产精品久久久久三级| 日本高清视频一区二区| 青椒成人免费视频| 自拍偷在线精品自拍偷无码专区 | 亚洲激情自拍偷拍| 欧美一级高清片| aaa亚洲精品| 捆绑调教美女网站视频一区| 中文字幕在线不卡一区二区三区| 欧美日韩免费观看一区二区三区 | 久久在线观看免费| 在线欧美日韩国产| 国产成人av影院| 视频一区二区三区在线| 成人免费一区二区三区视频 | 亚洲精品va在线观看| 精品人伦一区二区色婷婷| 一本到三区不卡视频| 国产一区在线不卡| 亚洲国产aⅴ天堂久久| 18欧美亚洲精品| 久久久高清一区二区三区| 欧美精品在线视频| 色拍拍在线精品视频8848| 国产激情一区二区三区四区| 免费观看在线综合色| 亚洲国产成人av网| 亚洲色图丝袜美腿| 亚洲欧洲三级电影| 久久精品一区二区三区不卡牛牛| 日韩一二三区视频| 欧美军同video69gay| 91国内精品野花午夜精品| 成人一级片网址| 懂色av噜噜一区二区三区av| 韩国午夜理伦三级不卡影院| 天堂在线一区二区| 亚洲午夜电影在线观看| 中文字幕在线观看不卡| 国产精品色婷婷久久58| 国产精品久久久久久一区二区三区 | 三级欧美韩日大片在线看| 18涩涩午夜精品.www| 国产精品视频在线看| 国产欧美一区二区精品性色 | 日韩精品最新网址| 91精品国产色综合久久久蜜香臀| 欧美日韩中文字幕一区二区| 在线观看91视频| 欧美高清视频在线高清观看mv色露露十八 | 亚洲精品中文字幕在线观看| 《视频一区视频二区| 国产精品第五页| 蜜臀av性久久久久av蜜臀妖精 | 日韩一区在线播放| 国产精品成人一区二区艾草| 悠悠色在线精品| 丝袜美腿亚洲一区| 另类成人小视频在线| 岛国精品在线播放| 91浏览器在线视频| 欧美人伦禁忌dvd放荡欲情| 日韩午夜精品电影| 久久综合999| 日韩理论片在线| 偷拍亚洲欧洲综合| 精品一区二区三区免费毛片爱| 国产乱一区二区| 色综合久久综合中文综合网| 欧美日韩中文字幕一区二区| 91精品国产一区二区三区| 久久久高清一区二区三区| 亚洲狠狠丁香婷婷综合久久久| 天堂精品中文字幕在线| 成人午夜激情视频| 欧美亚洲一区二区在线观看| 日韩欧美资源站| 国产精品国产三级国产普通话99| 亚洲成av人片| 国模无码大尺度一区二区三区| 99久久综合狠狠综合久久| 国产色产综合色产在线视频| 国产精品福利电影一区二区三区四区| 一区av在线播放| 成人教育av在线| 欧美一区二区三区在线观看视频| 国产精品每日更新| 另类专区欧美蜜桃臀第一页| 欧美亚洲一区二区三区四区| 国产免费久久精品| 免费精品视频最新在线| 在线观看免费亚洲| 欧美高清在线视频|