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

📄 read_apis.cpp

📁 linux下开发的针对所有磁盘的数据恢复的源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    if (file1 == NULL) {        fprintf(stderr, "Error opening %s (%s)\n", fname2, tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    // verify expected size    if (file1->meta->size != 5905) {        fprintf(stderr,            "Error: %s not expected size (%" PRIuOFF ") (%s)\n", fname2,            file1->meta->size, tname);        return 1;    }    // verify we can open it via name as well    file2 = tsk_fs_file_open(fs, NULL, "/deleted/fragmented.html");    if (file2 == NULL) {        fprintf(stderr,            "Error opening /deleted/fragmented.html via path name (%s)\n",            tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if (file2->name == NULL) {        fprintf(stderr,            "Opening /deleted/fragmented.html via path name did not have name set(%s)\n",            tname);        return 1;    }    if (strcmp(file2->name->name, fname2) != 0) {        fprintf(stderr,            "Opening /deleted/fragmented.html via path had incorrect name set (%s) (%s)\n",            file2->name->name, tname);        return 1;    }    if ((file2->name->meta_addr != file2->meta->addr)        || (file2->meta->addr != file1->meta->addr)) {        fprintf(stderr,            "Opening /deleted/fragmented.html via path had incorrect meta addresses (%"            PRIuINUM " %" PRIuINUM " %" PRIuINUM " (%s)\n",            file2->name->meta_addr, file2->meta->addr, file1->meta->addr,            tname);        return 1;    }    tsk_fs_file_close(file2);    file2 = NULL;    // try to read past end of first 2048-byte cluster    retval =        tsk_fs_file_read(file1, 2048, buf, 512,        (TSK_FS_FILE_READ_FLAG_ENUM) 0);    if (retval == -1) {        fprintf(stderr, "Error reading %s past end w/out Recover flag\n",            fname2);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    // current behavior is to return 0s in "unitialized" space     //if (retval != 0) {    if (retval != 512) {        fprintf(stderr,            "Unexpected return value from reading %s past end w/out Recover flag.\n",            fname2);        fprintf(stderr, "Expected: 0.  Got: %zd\n", retval);        return 1;    }    retval =        tsk_fs_file_read(file1, 2048, buf, 512,        (TSK_FS_FILE_READ_FLAG_ENUM) 0);    if (retval == -1) {        fprintf(stderr, "Error reading %s past end w/Recover flag\n",            fname2);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if (retval != 512) {        fprintf(stderr,            "Unexpected return value from %s past end w/Recover flag.\n",            fname2);        fprintf(stderr, "Expected: 512.  Got: %zd\n", retval);        return 1;    }    // verify the term in the slack space    if (memcmp("appear", buf, 6) != 0) {        fprintf(stderr,            "expected string not found in %s recovery: %c %c %c %c %c %c\n",            fname2, buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);        return 1;    }    tsk_fs_file_close(file1);    tsk_fs_close(fs);    tsk_img_close(img);    return 0;}/* This test checks the SLACK flags and verifies * that we read data from the slack space */inttest_ntfs_slack_ads(){    TSK_FS_INFO *fs;    TSK_IMG_INFO *img;    char *tname = "ntfs-img-kw";    char fname[512];    TSK_FS_FILE *file1;    char buf[512];    ssize_t retval;    snprintf(fname, 512, "%s/ntfs-img-kw-1.dd", s_root);    if ((img =            tsk_img_open_sing((const TSK_TCHAR *) fname,                (TSK_IMG_TYPE_ENUM) 0)) == NULL) {        fprintf(stderr, "Error opening %s image\n", tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if ((fs = tsk_fs_open_img(img, 0, (TSK_FS_TYPE_ENUM) 0)) == NULL) {        fprintf(stderr, "Error opening %s image\n", tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    // file-n-44.dat    file1 = tsk_fs_file_open_meta(fs, NULL, 36);    if (file1 == NULL) {        fprintf(stderr, "Error opening file-n-4.dat (%s)\n", tname);        return 1;    }    // verify expected size    if (file1->meta->size != 2000) {        fprintf(stderr,            "Error: file-n-4.dat not expected size (%" PRIuOFF ") (%s)\n",            file1->meta->size, tname);        return 1;    }    // try to read all of last sector with/out Slack set    retval =        tsk_fs_file_read(file1, 1536, buf, 512,        (TSK_FS_FILE_READ_FLAG_ENUM) 0);    if (retval == -1) {        fprintf(stderr,            "Error reading file-n-4.dat to end w/out slack flag (%s)\n",            tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if (retval != 464) {        fprintf(stderr,            "Unexpected return value from reading file-n-4.dat to end w/out slack flag (%s).\n",            tname);        fprintf(stderr, "Expected: 464.  Got: %zd\n", retval);        return 1;    }    retval =        tsk_fs_file_read(file1, 1536, buf, 512,        TSK_FS_FILE_READ_FLAG_SLACK);    if (retval == -1) {        fprintf(stderr,            "Error reading file-n-4.dat to end w/slack flag (%s)\n",            tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if (retval != 512) {        fprintf(stderr,            "Unexpected return value from reading file-n-4.dat  w/slack flag. (%s)\n",            tname);        fprintf(stderr, "Expected: 512.  Got: %zd\n", retval);        return 1;    }    // verify the term in the slack space    if (memcmp("n-slack", &buf[485], 7) != 0) {        fprintf(stderr,            "slack string not found in file-n-4.dat slack space: %c %c %c %c %c %c %c (%s)\n",            buf[485], buf[486], buf[487], buf[488], buf[489], buf[490],            buf[491], tname);        return 1;    }    tsk_fs_file_close(file1);    // file-n-5.dat    file1 = tsk_fs_file_open_meta(fs, NULL, 37);    if (file1 == NULL) {        fprintf(stderr, "Error opening file-n-5.dat (%s)\n", tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    // check the default size to make sure it is the default $Data    if (file1->meta->size != 1300) {        fprintf(stderr,            "file-n-5.dat size is not 1300 (%" PRIuOFF ") (%s)",            file1->meta->size, tname);        return 1;    }    // test the getsize API for both attributes    const TSK_FS_ATTR *fs_attr = tsk_fs_file_attr_get_type(file1, TSK_FS_ATTR_TYPE_NTFS_DATA, 3, 1);    if (!fs_attr) {        fprintf(stderr,            "Error getting data attribute 3 in file-n-5.dat (%s)",            tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if (fs_attr->size != 1300) {        fprintf(stderr,            "file-n-5.dat size (via getsize) is not 1300 (%" PRIuOFF            ") (%s)", fs_attr->size, tname);        return 1;    }    fs_attr = tsk_fs_file_attr_get_type(file1, TSK_FS_ATTR_TYPE_NTFS_DATA, 5, 1);    if (!fs_attr) {        fprintf(stderr,            "Error getting size of attribute 5 in file-n-5.dat (%s)",            tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if (fs_attr->size != 2000) {        fprintf(stderr,            "file-n-5.dat:here size (via getsize) is not 2000 (%" PRIuOFF            ") (%s)", fs_attr->size, tname);        return 1;    }    tsk_fs_file_close(file1);    tsk_fs_close(fs);    tsk_img_close(img);    return 0;}inttest_ntfs_fe(){    TSK_FS_INFO *fs;    TSK_IMG_INFO *img;    char *tname = "fe_test_1-NTFS";    char fname[512];    snprintf(fname, 512, "%s/fe_test_1.img", s_root);    if ((img =            tsk_img_open_sing((const TSK_TCHAR *) fname,                (TSK_IMG_TYPE_ENUM) 0)) == NULL) {        fprintf(stderr, "Error opening %s image\n", tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if ((fs = tsk_fs_open_img(img, 32256, (TSK_FS_TYPE_ENUM) 0)) == NULL) {        fprintf(stderr, "Error opening %s image\n", tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if (testfile(fs, 31)) {        fprintf(stderr, "%s error (non-resident)\n", tname);        return 1;    }    if (testfile(fs, 32)) {        fprintf(stderr, "%s error (resident)\n", tname);        return 1;    }    tsk_fs_close(fs);    tsk_img_close(img);    return 0;}inttest_ntfs_comp(){    TSK_FS_INFO *fs;    TSK_IMG_INFO *img;    char *tname = "ntfs-comp-1";    char fname[512];    snprintf(fname, 512, "%s/ntfs-comp-1.img", s_root);    if ((img =            tsk_img_open_sing((const TSK_TCHAR *) fname,                (TSK_IMG_TYPE_ENUM) 0)) == NULL) {        fprintf(stderr, "Error opening %s image\n", tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if ((fs = tsk_fs_open_img(img, 0, (TSK_FS_TYPE_ENUM) 0)) == NULL) {        fprintf(stderr, "Error opening %s image\n", tname);        tsk_error_print(stderr);        tsk_error_reset();        return 1;    }    if (testfile(fs, 34)) {        fprintf(stderr, "%s error (both)\n", tname);        return 1;    }    if (testfile(fs, 32)) {        fprintf(stderr, "%s error (sparse)\n", tname);        return 1;    }    tsk_fs_close(fs);    tsk_img_close(img);    return 0;}intmain(int argc, char **argv){    if (argc != 2) {        fprintf(stderr, "missing test image root directory\n");        return 1;    }    s_root = argv[1];    if (test_fat12())        return 1;    if (test_fat_slack())        return 1;    if (test_fat_recover())        return 1;    if (test_ntfs_fe())        return 1;    if (test_ntfs_comp())        return 1;    if (test_ntfs_slack_ads())        return 1;    printf("Tests Passed\n");    return 0;}

⌨️ 快捷键说明

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