我知道硬盘是系统的文件(/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?
如何存储数据(二进制或十六进制…)“以便打印”
拜托,我需要一些线索,如果有人需要更多的细节,只要他问。
谢谢。
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/