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

Soyez le premier à donner votre avis sur cette source.

Vue 17 047 fois - Téléchargée 1 778 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
Messages postés
3
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
27 janvier 2010

le lien de http://inform.pucp.edu.pe est incorect
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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];

}

++
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
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
Messages postés
9
Date d'inscription
dimanche 10 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008

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.
Messages postés
9
Date d'inscription
dimanche 10 juillet 2005
Statut
Membre
Dernière intervention
26 juin 2008

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.