Ntfs recover : récupérer les fichiers effacés d'une partition ntfs

Soyez le premier à donner votre avis sur cette source.

Vue 17 222 fois - Téléchargée 1 822 fois

Description

Ce code permet de récupérer les fichiers effacés de vos partitions NTFS. Pour cela, vous devez avoir les droits administrateurs.

Le code utilise une DLL dont le code (fournit dans le zip) est une adaptation de :
->Windows NT/2000 Native API Reference par Gary Nebbett
->(http://www.amazon.com/Windows-2000-Native-API-Reference/dp/1578701996)

mais on peut trouver la structure d'une partition NTFS à l'adresse http://inform.pucp.edu.pe/~inf232/Semestre-2006-2/Laboratorio-2/ntfs_doc_v0.5/index.html

Conclusion :


Peut prendre beaucoup de mémoire puisqu'il charge entièrement la MFT de la partition NTFS choisie.

Le code n'est pas très commenté faute de temps...

N'hésitez pas à commenter et à noter !

Codes Sources

A voir également

Ajouter un commentaire Commentaires
ernest_hemingway07 Messages postés 3 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 27 janvier 2010
27 janv. 2010 à 21:45
le lien de http://inform.pucp.edu.pe est incorect
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
7 nov. 2009 à 11:28
J'apport une correction dans la méthode FixupUSA() dans NTFS.cpp de ShareVB.

Méthode originale:
void FixupUSA(LPFILE_RECORD lpFileRecord)
{
DWORD UsaCount = lpFileRecord->Ntfs.UsaCount;
USHORT* lpUsa = (USHORT*)((UCHAR*)lpFileRecord + lpFileRecord->Ntfs.UsaOffset);

for (ULONG i = 0; i < UsaCount;i++)
((USHORT*)lpFileRecord)[256 * i + 255] = lpUsa[i];

}

à remplacer par:
void FixupUSA(LPFILE_RECORD lpFileRecord)
{
DWORD UsaCount = lpFileRecord->Ntfs.UsaCount;
USHORT* lpUsa = (USHORT*)((UCHAR*)lpFileRecord + lpFileRecord->Ntfs.UsaOffset);

for (ULONG i = 1; i < UsaCount;i++)
((USHORT*)lpFileRecord)[(256 * (i-1)) + 255] = lpUsa[i];

}

++
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
19 oct. 2009 à 00:25
Salut ShareVB,
Je suis en train d'appliquer l'exemple donné dans le livre de Gary pour un tout autre usage (C#), je décortique en parallèle les sources de ta dll NTFS.
Dans mes tests (projet c++) je fais appel à ta méthode MapMFT et je rencontre un soucis à l'intérieure de celle-ci.

Ligne:
lpBuff = (LPVOID)new UCHAR[BytesPerFileRecord];

Le debuggeur de VS2008 hurle à la corruption lors de la réservation d'un espace sur le tas pour lpBuff.
Voici le message: Windows has triggered a breakpoint in test.exe. This may be due to a corruption of the heap, which indicates a bug in test.exe or any of the DLLs it has loaded.

Je comprend pas ce qui se passe !
Peux-tu m'aider stp ?

Willi
unruledboy Messages postés 9 Date d'inscription dimanche 10 juillet 2005 Statut Membre Dernière intervention 26 juin 2008
26 juin 2008 à 15:17
Hi,

two more problems found:

1.it will crash in some computers, exactly the same operating system(windows 2003), but some works, strange.

2.it uses too much memory, for a 40g drive(100,000 files) will consume 800M+ memory after running the MapMFT, any idea how use less memory? I believe that it could only be done through modifying the NTFS.dll file.
unruledboy Messages postés 9 Date d'inscription dimanche 10 juillet 2005 Statut Membre Dernière intervention 26 juin 2008
25 juin 2008 à 05:41
hi, how to tell the condiction of a deleted file, such as: good(nothing changed, could be 100% recovered), poor(file record has been overwritten, could not be recovered)?
Afficher les 17 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.