2013-09-05 4 views
0

Je vous écris un utilitaire pour analyser MFT en NTFS. Jusqu'à présent, j'ai écrit le code pour obtenir un enregistrement MFT 1024 octets et parcourir ses attributs. Autant que je sache que MFT commence à allouer des enregistrements aux fichiers utilisateur à partir du numéro d'enregistrement 0x23, donc je suis en boucle de 0x23 à N nombre d'enregistrements. Je veux savoir comment obtenir le dernier enregistrement de MFT? Y a-t-il une sorte de marqueur de fin? Comment puis-je savoir si un certain enregistrement est le dernier enregistrement afin que je puisse arrêter de boucler dans les enregistrements MFT.Comment accéder au dernier enregistrement NTFS MFT?

Toute aide serait appréciée.

Répondre

2

L'emplacement MFT est pas toujours fixé sur le volume. Vous devriez obtenir le décalage MFT de départ du secteur de démarrage (secteur 0 du volume, vous pouvez trouver la structure en ligne).

Le premier fichier du MFT est le fichier « $ MFT » qui est l'enregistrement de fichiers pour l'ensemble MFT lui-même. Vous pouvez analyser les attributs de ce fichier comme n'importe quel autre fichier et obtenir sa liste de données. Lorsque vous connaissez la taille de chaque fragment dans les clusters, analysez le dernier cluster pour chaque enregistrement de 1024 octets du dernier fragment (bien que je pense qu'une MFT fragmentée est rare). Le dernier enregistrement de la MFT est le dernier enregistrement de ce groupe particulier marqué "FILE0", si vous rencontrez un nombre magique nul qui serait de 1024 octets trop loin.

Ou vous pouvez simplement obtenir la taille du fichier à partir des attributs de calcul et il le décalage à la fin de la MFT en fonction du nombre de fragments qu'il a. Puis soustrayez 1024 du décalage et vous devriez regarder le dernier fichier.

0

Vous pouvez obtenir le début et la fin des limites de taille et MFT MFT de table à l'aide de cet outil Sysinternals gratuit de Windows appelé NTFSInfo v1.0

Questions connexes