C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 使用Sleuth Kit函数tsk_fs_open_img()返回FS不是FAT FS的错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Sleuth Kit Library编写一个程序,该库旨在打印出FAT32文件系统的文件分配表.在我调用tsk_fs_open_img()函数之前,我程序中的所有内容都能正常工作.此时,程序返回并显示“无效的魔术值(不是FATFS文件系统(魔术))”. FS确实是FAT32 FS,我使用十六进制编辑器验证了神奇值(AA55 @ offset 1FE).另外使用mmls和fls(它们是Sleuth Kit Library中包含的命令行工具),可以处理我正在使用的驱动器映像,并显示它确实是FAT32 FS,并且还为FS提供了63的偏移量.

如果有人能帮我弄清楚为什么这个功能不起作用,我将不胜感激.提前致谢.

以下是该函数API的链接TSK_FS_OPEN_IMG()

这是我的代码

using namespace std;

#include <tsk3/libtsk.h>
#include <iostream>
#include <String.h>

int main (int argc,const char * argv[])
{

TSK_IMG_TYPE_ENUM imgtype = TSK_IMG_TYPE_DETECT;
TSK_IMG_INFO *img;

TSK_FS_TYPE_ENUM fstype = TSK_FS_TYPE_FAT32;
TSK_FS_INFO *fs;

TSK_DADDR_T imgOffset = 0x00000000;
TSK_OFF_T fsStartBlock = 0x00000063;

TSK_VS_INFO *vs;
TSK_VS_TYPE_ENUM vstype = TSK_VS_TYPE_DETECT;

const TSK_VS_PART_INFO *part;
TSK_PNUM_T partLOCATIOn = part -> addr;

TSK_TCHAR *drivename;
TSK_DADDR_T startAddress = 0x00000000;
TSK_DADDR_T numblocksToRead = 0x00000001;
TSK_FS_BLKCAT_FLAG_ENUM flags = TSK_FS_BLKCAT_ASCII;

int numOfDrives = 1;
uint sectorSize = 0;
uint8_t blockBytes = 0;

if (argc < 1) {
    printf("You must enter a drive name.\n");
    exit(EXIT_FAILURE);
}

drivename = (TSK_TCHAR*) argv[1];

cout << "\nopening Drive\n\n";

if((img = tsk_img_open(numOfDrives,&drivename,imgtype,sectorSizE)) == NULL) {
    tsk_error_print(stderr);
    exit(EXIT_FAILURE);
}

cout << "Drive opened successfuly.\n\n";

cout << "opening File System\n\n";

if((fs = tsk_fs_open_img(img,fsStartBlock,fstypE)) == NULL) {
    tsk_error_print(stderr);
    if (tsk_errno == TSK_ERR_FS_UNSUPTYPE)
        tsk_fs_type_print(stderr);
    img -> close(img);
    exit(EXIT_FAILURE);
}

cout << "File system opened successfuly.\n\n";

blockBytes = tsk_fs_blkcat(fs,flags,startAddress,numblocksToRead);

fs -> close(fs);
img -> close(img);
return 0;
}

解决方法

tsk_fs_open_img的偏移量参数以字节为单位,而不是扇区.因此,您需要将fsStartBlock乘以img-> sector_size.

大佬总结

以上是大佬教程为你收集整理的c – 使用Sleuth Kit函数tsk_fs_open_img()返回FS不是FAT FS的错误全部内容,希望文章能够帮你解决c – 使用Sleuth Kit函数tsk_fs_open_img()返回FS不是FAT FS的错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。