Je ne serais pas te dire avec certitudes comment faire cela mais j’aurais tendance a croire qu’il "suffit" (et la le mot est tres flou :D) de lire chaque bit sur ton disque dur et ensuite de faire passer un algorythme de reconnaissance de patron permettant de reconnaitre des entetes specifiques.
Une fois que tu as reconnus les entetes et donc les emplacements memoires des fichier entiers (ou partiellement recuperable) tu peux fournir a l’utilisateur une table avec la liste des fichiers et lui demander si il veux reintegrer ses fichiers dans sa table d’allocation (une table qui permet de specifier les lieux du disque dur deja remplis)
Une fois que tu as remis les fichiers dans cette table, ton OS devrais les reconnaitres et ne plus ecrire dessus (car l’espace est officiellement occupe)
Bien entendu le plus dur doit etre dans le fait de reconnaitre les entetes, puis dans le fait de verifier la pertinence de ce que nous avons trouver (est-ce vraiment reutilisable? est-ce que ca vaut la peine de le fournir a l’utilisateur?..)