【发布时间】:2017-03-28 20:39:56
【问题描述】:
我知道硬盘是系统的文件 (/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 的大小只有 8 KB?
- 如何存储数据(二进制或十六进制……)“用于打印”
拜托,我需要一些线索,如果有人需要更多细节,他可以问。
非常感谢。
Ps:在 VMware 上运行 kali 2 64 位“debian”,我是 RooT。
【问题讨论】:
-
没有任何作用?
printf("hex : %04x\n",secteur);是传递指向unsigned int的指针的未定义行为。然后printf("string : %s\n",secteur);只会从一个以 nul 结尾的可打印字符数组产生有意义的输出。最后,您的代码没有任何通常在 I/O 函数上执行的基本错误检查。 -
“数据的存储方式(二进制或十六进制……)” -- 磁性粒子只有两种状态或方向。