1
我有一個奇怪的時間試圖獲得磁盤映像的卷標。我瞭解,對於FAT12磁盤,這條信息位於偏移量0x2b或43以十進制表示,長度爲11個字節。反正這裏是我的代碼現在:獲取Fat12磁盤的卷標C
void main(int argc, char *argv[]) {
...
FILE *fp = fopen(argv[1], "rb");
printf("Volume Label: %s\n", seekData(fp, 43, 11));
...
}
unsigned char* seekData(FILE *fp, int offset, int bytes) {
unsigned char* buff = malloc(sizeof(unsigned char)*bytes);
fseek(fp, offset, SEEK_SET);
fread(buff, 1, bytes, fp);
rewind(fp);
return buff;
}
因爲我使用任何輸入文件(.IMA)我不斷收到以十六進制回20 20 20 20 20 20 20 20 20 20 20
。上面的代碼運行時,或只是Volume Label:(nothing here)
。我在這裏錯過了超級明顯的東西嗎?任何幫助,將不勝感激
這是一個像硬盤一樣的分區設備嗎?在這種情況下,引導扇區位於MBR之後。您可能必須閱讀MBR以確定FAT12分區的起始位置。另外,你確定磁盤有標籤嗎? – Schwern
我不知道它的質量,但這可能有幫助。 http://www.dailyfreecode.com/code/file-allocation-table-2866.aspx – Schwern
而不是從C代碼開始,從一個十六進制編輯器開始。找出卷標*真正*的位置,然後從那裏開始。 –