FAt32 ile ilgili küçük bir sorun..

Başlatan tyilgin, 17 Ocak 2009, 21:02:39

tyilgin

Merhaba arkadaşlar,

Bu aralar Fat32 ile başım dertte :)

Forumda Fat32 de Partition bloktan yola çıkılarak, Boot,Root vs. sektörlere konumlanma gayet iyi anlatılmış. hatta "FAT32_Dosya_Sistemi.doc" adlı dökümandan faydalanarak ta bayağı yol aldım.

Gerekli hesaplamalar ile rootta gördüğüm bir dosyanın yeri hariç herşeye de ilgili hesaplamalar ile konumlanabiliyorum.

Elimde 2GB ve 512KByte olarak iki MMC kart var.

2Gb olan kartta ilgili hesaplarla rootsector adresini 4,023,808 olarak buldum ve bu adreste de root sectore ulaştım. buradanda içinde bulunan tek dosyanın 3.clusterda olduğunu okudum.
Boota baktığımda Her Clusterda 8 Sektör olduğunu görerek
dosyanınadresi=3(clusterno)*8(clusterdakisektör)*512(sektördekibyte)=12,288 yani root'tan 12,288 byte ileride olacağını düşünüyorum.
buda 4,023,808+12,288=4,036,096. baytta dosyayı bulacağımı düşünüyorum. zira ilgili word dosyasında böyle anlatılmış ve verdiği örnekte bu teori ile doğru orantılı.
Ancak ben dosyanın içeriğini 4,027,904 nolu baytta alıyorum. buda benim hesapladığım adrese 8192bayt ,/512=16 sektör yani 2 cluster uzaklıkta. oysa rootta 3. clusterd demişti. ben winhexde bu dosyayı fiziksel olarak root'a 1 cluster uzaklık görüyorum.

512KBlık mmc karttada aynı duruma düşüyürum. dosyanın doğru yerine bir türlü konumlanamadım.

Konu ile ilgili bilgisi olan veya elinde döküman bulunan arkadaşlar bilgilerini paylaşırlar ise sevinirim.

tyilgin

Bulduğum bir sitede de sorun olarak gördüğüm bu olayı düzgün gibi kullanmış, benmi anlayamıyorum yoksa ifadeyimi yanlış kullanmışlar ?
mutlaka ki ben anlayamıyorumdur ama nrde hata yaptığımı bulamıyorum.

örnek bulduğum sitede (http://www.easeus.com/data-recovery-ebook/root-directory-management-in-FAT32.htm) şöye demişler ;

Alıntı YapReferring to the above table, from this FDT we may know: length of test.txt is 1270K; the start cluster number is 3rd cluster; from DBR, reserved sector number =38; FAT number = 2, each FAT length =3993 sectors, so the DATA start sector is 38+2*3993=8024;
each cluster has 8 sectors. The corresponding sector of the 3rd cluster is 8032rd sector; this sector content is as following chart

şimdi burada DataStartSector(ROOT) olarak 8024'ü göstermiş. buraya kadar tamam. sonrada dosyanın 3. clusterdan başladığını söylemiş. o Halde 8024+ 3(clusterno)*8(clusterdakisektörsayısı)=8048 olması gerekmiyormu ? neden 8032 diyor ??

tyilgin

http://www.salvagedata.com/recovery-ebook/File-management.html

bu sitedede
Alıntı Yap
From this FDT entry, we may know that the length of file1.txt file is 11422 bytes, the start cluster is 02H. So, on one hand we may search file1.txt in the 2nd cluster of DATA; on the other hand we may search its successor cluster in FAT table. Take a look at the first step: make sure of logical sector of the 8th cluster. From the BPB parameter block chart we may know, there remains 1 sector, 2 FAT tables. The length of each FAT table is 235 sectors, FDT takes 32 sectors. So the start sector of DATA is: 1+235*2+32=503, each cluster has 4 sectors, then the start sector of the 2nd cluster is: 503+ (2-2) *4=503. The text files contents are:

her clusterda 4 sektör demiş ama dosyanın bulunduğu cluster sayısından 2 çıkarttıktan sonra clusterdaki sektör sayısı ile çarpmış. Neden 2 çıkartmış ? bu 2'yi nerden bulmuş. saatlerdir takıldım...
konu hakkında bilgisi olan arkadaşlar tecrüelerini paylaşır ise çok sevinirim.

controller

oradaki 2 değeri "root directory first cluster" olarak geçer. senin dosya konumu için yapacağın hesaplamalarında ofset noktan "root directory" dir.
bu yüzden dosyanın "cluster number" ından "root directory first cluster" ı çıkarman gerekir.
Hesabım OG tarafından haksız bir şekilde pasif yapılmıştır.

tyilgin

Alıntı yapılan: "controller"oradaki 2 değeri "root directory first cluster" olarak geçer. senin dosya konumu için yapacağın hesaplamalarında ofset noktan "root directory" dir.
bu yüzden dosyanın "cluster number" ından "root directory first cluster" ı çıkarman gerekir.

teşekkür ederim..  :D