Четене на FAT32
Не толкова отдавна реших да разбера същността на файловата система FAT. За целта си поставих задачата да намеря и прочета файл на USB флаш устройство, използвайки само HxD и без Ctrl + F, разбира се.
Тази публикация ще покрие само повърхностно спецификацията FAT32. Интересно? Влез. И да, не забравяйте за големите ендийски ендианси и други малки неща, които правят живота ни забавен.

Първите 11 байта се отнасят за сектора за зареждане, три байта означават началото на сектора за зареждане на операционната система (ако той е там, разбира се), останалите осем са името на операционната система или производителя, в този случай това е MSDOS5. 0. Давам значението на останалите байтове по-долу:
Байтове - Цел
2 - Броят байтове в сектора, валидни стойности - 512, 1024, 2048 или 4096.
1 - Сектори на клъстер, тук има 8 от тях Може би 1,2,4,8,16,32,64 или 128.
2 - Брой запазени сектори. Обикновено 32, но това е различно. Не е страшно.
1 - Брой FAT таблици, обикновено две, в противен случай много програми ще полудеят. Но в името на икономията понякога остава само една таблица, когато не се изисква резервиране на FS (данните не се дублират).
4 - Използва се във FAT12/16, но за FAT32 ще има нули.
1 - Стандартната стойност за твърдите дискове е 0xF8, за сменяемите устройства - 0xF0. Също така, може да има стойности 0xF9, 0xFA ... 0xFF, основното е, че първият байт от таблицата FAT има същата стойност, в противен случай това е причина за безпокойство. Но това е само старо правило от MSDOS дни, което се използва за определяне на типа на диска.
2 - Не се използва във FAT32, 0x00.
2 - Брой сектори на песен.
2 - Брой глави.
4 - Брой скрити сектори, ако дискът е разделен на дялове, тук не трябва да има нула.
4 - Общ брой сектори на диска.
4 - Брой сектори на една FAT таблица.
2 - Поле за флаг, което не е покрито тук.
2 - Номер на версията на FAT32, в случая 00.
4 - Номерът на първия клъстер на главната директория, най-често два, но ако вторият клъстер е повреден, тогава дисковата програма може да промени номера.
2 - Секторен номер със странна структура на FSINFO, който няма да засегнем сега.
2 - Номерът на сектора в резервната зона на диска, или 6 или 0, други стойности водят до безпокойство и ненужна работа.
12 - Най-дълго и безполезно поле Запазено, нули по подразбиране.
1 - 0x00 за флопи и 0x80 за твърди дискове. Използва се за BIOS функция int 13h.