RESTAURATION DE FICHIERS SUPPRIMÉS SUR UN DISQUE DUR NTFS

ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 - 15 janv. 2009 à 01:37
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 - 7 août 2009 à 18:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48978-restauration-de-fichiers-supprimes-sur-un-disque-dur-ntfs

ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
7 août 2009 à 18:13
Mise à jour du code : Version 3.0

Il est désormais possible de récupérer le nom du dernier répertoire ayant contenu le fichier supprimé (si celui-ci est encore disponible au sein de la MFT lors de l'analyse). On peut dorénavant trier la liste et y rechercher des fichiers selon ce nouveau critère.

J'ai rédigé un dossier complet sur le processus de restauration de fichiers effacés sur un disque NTFS, qui tient lieu de documentation de ce programme. Vous pouvez le trouver sur mon site web :
http://www.ni69.info
Rubrique "Ingénierie Informatique"
Dossier "Restauration logicielle de fichiers effacés sur un disque dur NTFS"
scoach Messages postés 4 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 14 février 2009
14 févr. 2009 à 22:37
alors finalement je me suis tourné vers une solution payante (Data Life Saver) qui m'a permis de tout récupérer sans trop de bobos.
certaines archives ont été altérées, mais ce logiciel m'a permis d'avoir les 9/10e des données utilisables.
merci encore pour vos conseils.
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 févr. 2009 à 15:28
@Mauricio :
EASEUS Deleted File Recovery 2.1.1 :

la version d'évaluation est gratuite..
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
27 janv. 2009 à 18:04
@Scoach: j' utilise EASEUS Deleted File Recovery 2.1.1 (excellent programme gratuit) mais qui a le défaut de devoir s' installer avant utilisation alors que ton appli pourrait se mettre sur une Pen ou CD.

A+
scoach Messages postés 4 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 14 février 2009
27 janv. 2009 à 16:45
c'est bien là tout mon problème: $MFT et $MFTMirr sont altérés.
J'ai trouvé une solution, mais elle est payante.
La version demo m'a bien retrouvé tout le contenu du disque mais ne permet pas de les récupérer:(
N'ayant rien trouvé au niveau freeware qui m'apporte un résultat probant, je vais donc opter pour cet achat.
Merci à tous pour l'attention que vous m'avez accordée.
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
26 janv. 2009 à 16:41
A savoir également que $MFTMirr te permet uniquement de restaurer les 4 premiers enregistrements (donc $MFT, $MftMirr, $LogFile et $Volume)
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
26 janv. 2009 à 16:32
@Scoach:
Tourne toi vers $MFTMirr si $MFT est altéré.
(Mais normalement l'OS le fait automatiquement si il détecte un problème grave avec $MFT, donc ça risque pas forcément de t'aider... C'est juste une piste)
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
23 janv. 2009 à 10:10
@scoach:
Un certain modèle de l' année derniere de marque Seagate (Barracuda je crois) de 500Go et de 1000Go a été reconnu par son fabricant comme défectueux, un firmware fut disponible mais celui-ci fut rétiré cette semaine car il ne fonctionnait pas non plus.
La bonne nouvelle quand même c' est que les données ne sont pas abîmées ... super :(

A+
scoach Messages postés 4 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 14 février 2009
23 janv. 2009 à 07:42
bonjour,
désolé pour le retard dans mes posts, mais je travaille de nuit...et là je rentre du boulot.
En fait mon problème vient (je suppose) d'une corruption de la MFT.
Mon disque de 500Go est bien détecté par le bios, mais sous mon OS (win XP Pro) il est vu avec 0 octets de capacité et 0 octets de libres.
Après avoir tenté de récupérer les données inscrites sur le disque à l'aide de plusieurs logiciels de récup, d'une part aucun ne me retrouve la totalité des fichiers qui étaient dessus, d'autre part à peine 1/3 de ce qui a été récupéré est utilisable.
Je précise enfin qu'il n'y a rien eu de réécrit dessus depuis la découverte de la panne.
Ce que je recherche, c'est une astuce afin de pouvoir "reconstruire" (si c'est faisable) la MFT afin de récupérer l'intégralité de mes fichiers.
J'espère avoir bien décrit les symptômes afin d'être compris dans ma démarche.
Sur ce, je vais me coucher..."j'émerge" vers 15H...avant de repartir au taf à 19H.
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
22 janv. 2009 à 20:18
@Scoach:
"quand c'est la MFT qui est naze" -> ça veut pas dire grand chose !
Il peut arriver des milliers de problèmes différents sur un disque...
scoach Messages postés 4 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 14 février 2009
22 janv. 2009 à 19:01
bijour,
euh, ça m'a l'air bien tout ceci...mais quand c'est la MFT qui est naze, est-ce qu'on procède de la même façon?
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
20 janv. 2009 à 13:13
@Nicolas__
En gros : Sur MSDN, dans un bon bouquin sur les API Windows, et sur le site ntfs.com :)
Tout cela m'a donné le principe général de la restauration, ensuite j'ai pas mal observé mon propre disque (il n'y a rien de mieux comme exemple concret ^^)

@Pascal99 : Merci, je sais parfaitement à quoi cette date peut servir ne t'inquiète pas. Le problème n'est pas là!
Si la date peut nous être utile à nous, elle est en revanche TOTALEMENT INUTILE à l'OS ! Ce dernier n'est pas conçu pour pouvoir récupérer des fichiers comme le font les programmes de restauration...
Donc pour un OS, mettre une date sur quelque-chose, puis supprimer ce quelque-chose immédiatement après, ça me semble stupide, donc j'en déduis que ce n'est pas ce qui se passe dans la pratique.
"ListView avec MultiSelect" -> comme je l'ai déjà dit plus haut, ça attendra.
cs_pascal99 Messages postés 24 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 20 janvier 2009
20 janv. 2009 à 07:39
Bonjour,
la date et meme l'heure de suppression peuvent etre tres utile si tu sais que tu as supprime des fichiers il y a moins d'une demi-heure pour pouvoir les selectionner facilement et les ainsi les recuperer.
C'est un plus comme le repertoire d'origine et la multi-selection.
Comme ton code est bien organise, tu devrais pouvoir utiliser un ListView avec MultiSelect a true pour la muti-selection.

Bonne continuation.
Pascal99
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
19 janv. 2009 à 18:22
D'ailleurs Ni69, ou est ce que tu as trouvé tts les infos nécessaires pour réaliser ce projet ?

Developpez , Msdn , wikipedia ... ou des bouquins ?

Merci
cs_nino31 Messages postés 17 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 29 avril 2013
19 janv. 2009 à 18:14
@NI69 : Merci beaucoup... Et moi qui voulais simplement un petit utilitaire pour récupérer les fichiers supprimés... Me voilà dans l'apprentissage d'un nouveau language ! En tout cas, ça à l'air très interressant. Encore merci
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
19 janv. 2009 à 16:33
@Francky23012301 : ça viendra, peut-être, plus tard... Chaque chose en son temps. Ces améliorations (comme aussi la possibilité de sélectionner plusieurs fichiers et de retrouver les répertoires d’origine) ne sont que des fioritures par rapport au reste... A mon avis, je ne les implémenterai pas avant les prochains mois (quand j’aurai du temps et que j’aurai fini mes concours d’entrée en école d’ingénieur), donc ne soyez pas trop pressés. La documentation est elle beaucoup plus importante, et j’y travaille actuellement.

@Michel34 : L'anglais étant comme une seconde langue maternelle pour moi et étant également la langue "naturelle" de presque tous les langages de programmation, j'ai pris l'habitude de l’utiliser quand je code (ça fait plus homogène en quelque sorte). De plus, le code peut ainsi être compris par un plus grand panel de gens en étant commenté en anglais... La doc que je vous prépare sera par contre en français (une version en anglais suivra certainement !). Pour répondre à ton autre question la date de dernière modification (dernière colonne) n’est pas la date de suppression du fichier, mais bien la date de dernière modification de celui-ci. Je n’ai pas trouvé (il faut dire que je n’ai pas vraiment, voire pas du tout cherché) de champ relatif à la date de la suppression (en même temps, je me demande s’il y en a un, étant donné que cela serait tout à fait inutile ! A quoi ça servirait de connaitre la date de quelque-chose qui n’existe pas pour un OS ???)

@Nino31 : Vas voir là : http://fbeaulieu.developpez.com/guide/
cs_nino31 Messages postés 17 Date d'inscription jeudi 6 mars 2008 Statut Membre Dernière intervention 29 avril 2013
19 janv. 2009 à 15:18
Bonjour,

Etant totalement profane en delphi, j'aimerais savoir comment on lance le programme (quel fichier doit on ouvrir et avec quel programme pour lancer l'application ?)

D'avance merci
cs_Michel34 Messages postés 79 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 27 juin 2011
19 janv. 2009 à 11:56
Salut a tous , Tres beau programme , j'ai teste sous windows Xp SP2 ,le seul petit Hic , c'est que je suis un peu faché avec la langue de Shakespiiiiire ca n'empeche pas la programmation mais purquoi n'as tu pas francisé ton programme ?
mais mis a part ce details , j'ais trouvé le scan du disque tres rapides et j'ais ete meme surpris de trouver des fichiers effacés depuis 07/2007 encore recuperables.( enfin si j'ai bien saisi le sens de la colonne de la date de suppression du fichier).
Bravo pour ce bel exemple de programmation.
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
18 janv. 2009 à 13:34
Ben dis donc sacré boulot : pas tout compris moi non plus. Par contre il serait peut etre sympa de permettre de trier les résultats par nom, type de fichier, taille, date de suppression : ca serait plus facile pour naviguer ;). L'ajout d'un popupmenu serait cool aussi. Désolé pour le supplément de boulot ;).
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
17 janv. 2009 à 12:50
Effectivement il pouvait fonctionner, à condition que l'on ait élevé MANUELLEMENT les privilèges avant le démarrage. Dans le cas contraire, CreateFile() renvoyait une erreur.

Sachant que la plupart des gens n'ont pas forcément cette idée j'ai décidé de le présenter comme non fonctionnel sous Vista tant que la procédure n’était pas réalisée automatiquement... Tu remarqueras qu’avec le Manifest inclus, il n’est désormais plus possible de le démarrer avec des autorisations restreintes, ce qui était mon objectif :)
cs_pascal99 Messages postés 24 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 20 janvier 2009
17 janv. 2009 à 09:58
Ton prog (la version d'hier) fonctionnait tres bien en Vista SP1.
Si tu pouvais remonter le repertoire des fichiers supprimés ce serait génial.

a+
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
17 janv. 2009 à 01:00
Le code fonctionne à présent sur Windows Vista. Voir ma source (cf. commentaire précédent) pour les détails.

Faites très attention au mode Debug : il peut être utile pour comprendre comment fonctionne le programme, mais quand vous souhaitez restaurer un fichier en pratique il est fortement conseillé de le désactiver (j'ai d'ailleurs ajouté une confirmation d'activation dans ce sens), car des fichiers sont créés lors de l'exécution (parcours de la MFT et restauration d'un fichier), et ces fichiers peuvent sans que vous le sachiez recouvrir les fichiers que vous souhaitez retrouver (soit dans la MFT, soit aussi sur le disque lui-même!)

Une autre chose que je n'ai pas mentionnée dans la présentation du programme. Il est impossible de dire si un fichier restauré sera intègre ou non. En effet, son enregistrement dans la MFT a beau persister, si le fichier est gros, donc s'il ne peut pas directement être contenu dans son enregistrement (on parle alors de données non résidentes) alors la zone du disque qui contient son contenu peut avoir été recouverte par le contenu d'un autre fichier... D'où une corruption possible des données !
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
16 janv. 2009 à 18:24
"En gros il faudra que j'invoque une élévation de processus au démarrage du programme"

Envoie moi un courrier SVP lorsque tu auras trouvé comment faire, merci d' avance! (une bonne idée de source à déposer!)

A+
michelroc Messages postés 84 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 2 janvier 2010
16 janv. 2009 à 18:20
Plusieurs fichiers à restaurer ça serait cool..

Merci
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
16 janv. 2009 à 17:57
@ Nicolas__ : Merci bien ! Je pensais au départ faire quelque-chose du genre multiselect pour les fichiers, mais cela ne faisait pas partie de mes objectifs prioritaires (j'entends par là une méthode de restauration fonctionnelle d'un fichier). Mais j'y repenserai quand j'améliorerai l'interface.

@ Mauricio : Le processus de restauration de fichiers est déjà en lui-même assez complexe. Alors si en plus on doit savoir où était rangé chanque chose avant d'être supprimée... ^^ Mais c'est effectivement une piste à creuser, je me documenterai plus en profondeur là dessus ;) Pour le support de Vista, je rencontre quelques problèmes avec l'ouverture du disque en lecture (CreateFile) dus à l'UAC. En gros il faudra que j'invoque une élévation de processus au démarrage du programme. J'y travaille.

@ Bacterius : Ce qui prend du temps dans ton cas, ce n'est pas le parcours de la MFT, mais plutôt l'affichage dans le Log et sa sauvegarde sytématique. Je vais ajouter une CheckBox concernant l'affichage ou non des avertissements concernant les enregistrements invalides, et de même une autre checkbox pour le DebugMode.

@ Pascal99 : effectivement c'est une erreur de ma part, due à un copier/coller un peu hâtif ! (en fait si on regarde plus précisément, il y a quelques autres caractères qui ne correspondent pas et les deux chaînes ne sont pas de la même longueur !). Voilà le morceau de code corrigé :

const
Destination = 'AAAACEEEEIIIOOOUUUYAAAAAEEEEIIIOOOOOUUUUY';
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
16 janv. 2009 à 17:04
J'ai peut-être un PC de merde mais ça m'etonne qu'il n'arrive pas à itérer 10.000 procédures ... sûrement bien optimisées avec une mémoire de 512 Mo, un processeur de 1.5GHz et toutes les applications fermées (eh oui j'ai même fermé mon anti-virus et ma connexion internet pour l'occasion).
Bref, je n'ai pas eu la patience d'attendre la fin ...
Mais il faut dire qu'à chaque fois que le fichier n'est plus présent, il y a quelques messages en plus dans le log.
Enfin bref, on ne pourrait pas faire un truc pour arrêter dès qu'on en a marre de lister les fichiers, pour que ceux qui sont dans mon cas (personne à part moi ?) puissent voir un peu ?

:) Merci

Cordialement, Bacterius !
cs_pascal99 Messages postés 24 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 20 janvier 2009
16 janv. 2009 à 09:49
Bonjour,
beau code, pourtant dans NormalizeString le 5eme caractere de Destination ne devrait-il pas etre un C ?

N'ayant que Delphi5 sur ce PC, je n'ai pas pu tester. Je verrais ca ce soir sur mon PC perso (Delphi7).

Bonne continuation,
Pascal99
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
16 janv. 2009 à 02:04
@bacterius : deja dit , mais t'as un pc de m***** !

16/01/2009 2:00:41 | Number Of Records : 66556
16/01/2009 2:00:48 | All File Records Analyzed (66556)
...
16/01/2009 2:02:07 | Number Of Records : 101372
16/01/2009 2:02:16 | All File Records Analyzed (101372)

Moi je trouve ca bien rapide !

Nico
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
15 janv. 2009 à 22:29
Intéressant, mais pas beaucoup de temps en ce moment
pour regarder..
je rejoins Mauricio pour la suppression d'un dossier..
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
15 janv. 2009 à 18:13
Bonsoir, joli programme - je n'y comprends absolument rien en termes de code - mais j'ai 1 disque NTFS sur 3. J'ai donc essayé avec celui-là, et j'ai ... 11185 entrées dans la MFT. Ca prend un sacré temps quand même ! (de plus, seuls les 2500 premiÚres entrées à peu prÚs sont valides, les autres sont toutes "erreur") !
J'y suis pour ... 4 heures ? :'(

Cordialement, Bacterius !
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
15 janv. 2009 à 11:36
Salut Ni69,

je suis d' accord avec Nicolas__, bien que je n' ai pas étudié le code pour l' instant, le programme est très interessant!

J' utilise EASEUS Deleted File Recovery 2.1.1 (excellent programme) mais qui a le défaut de devoir s' installer avant utilisation alors que ton appli pourrait se mettre sur une Pen ou CD.

Je suggère aussi la possibilité de récupérer tous les fichiers d' un répertoire lorsque l' on a éliminé ce dernier par erreur.

Je reviendrai vers ce post lorsque tu auras implémenté la compatibilité avec Vista vu que je n' ai pas XP...

A+
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
15 janv. 2009 à 02:01
C'est une réelle aubaine d'avoir des gens aussi doué sur DelphiFR...

Je n'ai pas encore regardé le code
(bien que je n'y comprendrais certainement pas grand chose ) mais j'ai déjà testé ton programme (qui va plus vite que certain disponible sur internet) et c'est une merveille !

Par contre (juste pour chipoter) , tu devrais donner la possibilité de selectionner plusieurs fichiers à restaurer ...

Merci pour ce code source

Nico
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
15 janv. 2009 à 01:37
Il y a pour l'instant une erreur lors de l'ouverture du disque en lecture sous Windows Vista, ce qui rend le programme incompatible avec cette version de Windows.
Je tâcherai de remédier à cela.
Rejoignez-nous