我知道硬盘是系统的文件(/dev/sdXX)-然后被当作文件处理-我对此有疑问:
我试了下面几行代码,但没有什么积极的
-------第一次尝试----------

int numSecteur=2;
char secteur [512];
FILE* disqueF=fopen("/dev/sda","r"); //tried "rb" and sda1 ...every thing
fseek(disqueF, numSecteur*512,SEEK_SET);
fread(secteur, 512, 1, disqueF);
fclose(disqueF);

-------第二次尝试----------
    int i=open("/dev/sda1",O_RDONLY);
    lseek(i, 0, SEEK_SET);
    read(i,secteur,512);
    close(i);

------打印结果----------
printf("hex : %04x\n",secteur);
printf("string : %s\n",secteur);

为什么文件/dev/sda1的大小只有8kbytes?
c - 在Linux(GNU/Linux)上使用C从硬盘读取特定的扇区-LMLPHP
如何存储数据(二进制或十六进制…)“以便打印”
拜托,我需要一些线索,如果有人需要更多的细节,只要他问。
谢谢。
Ps:在VMware上运行kali 2 64bits“debian”,我就是RooT。

最佳答案

不能像那样打印聊天的f()数组,需要正确的打印结果。例如十六进制转储:

for (int i = 0; i < sizeof(secteur); i++) {
    printf ("%02x ", secteur[i]);
    if ((i + 1) % 16 == 0)
        printf ("\n");
}

关于c - 在Linux(GNU/Linux)上使用C从硬盘读取特定的扇区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43079516/

10-11 19:41