gpt4 book ai didi

C 程序从 Fat MBR 读取十六进制值

转载 作者:行者123 更新时间:2023-11-30 14:49:30 25 4
gpt4 key购买 nike

我是 C 语言新手,正在尝试创建一个取证工具。到目前为止我有这个。它读取一个 dd 文件,该文件是 fat16 MBR 的转储。我能够正确读取某些字节,但不能正确读取某些字节。

我需要帮助的是 SizeOfFat 变量需要获取以小端读取的字节 0x16 和 0x17 的值。我如何让它读取 FB00,然后将其转换为 00FB,然后打印该值?

char buf[64];
int startFat16 = part_entry[0].start_sect,sectorSize = 512,dirEntrySize=32;
fseek(fp, startFat16*512, SEEK_SET);
fread(buf, 1, 64, fp);

int rootDir = *(int*)(buf+0x11);
int sectorPerCluster = *(int*)(buf+0x0D);
int sizeOfFat = *(int*)(buf+0x16);
int fatCopies = *(int*)(buf+0x10);
printf("\n Phase 2 \n no of sectors per cluster : %d \n",(unsigned char)sectorPerCluster);
printf("size of fat : %d \n",(unsigned char)sizeOfFat);
printf("no of Fat copies : %d \n",(unsigned char)fatCopies);
printf("maximum number of root directories : %d \n",(unsigned char)rootDir);

我在这里使用的十六进制值是 -

EB 3C 90 4D 53 44 4F 53 35 2E 30 00 02 08 02 00 
02 00 02 00 00 F8 FB 00 3F 00 FF 00 3F 00 00 00
E1 D7 07 00 80 00 29 CD 31 52 F4 4E 4F 20 4E 41

最佳答案

使用 int,您只能保证它可以保存 32 位有符号整数。在您的代码中,您可以读取每个变量的 sizeof(int) 字节,即使它们的大小不同。大多数系统上都有 uint16_tuint8_tuint32_t 类型。将它们用于固定宽度数据。另请注意,它们没有签名。您不希望每个簇都有负扇区,是吗?

关于C 程序从 Fat MBR 读取十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49564880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com