PDA

Ver la Versión Completa : recuperar archivos eliminados


Saindoft
04-11-2008, 02:00:41
hola amigos del foro quisiera saber si es posible poder restaurar un
archivo eliminado utilizando algun codigo desarrollado en Delphi7....
pienso yo que las aplicaciones que detectan estos archivos eliminados
utilicen funciones del API, o lean datos almacenados en la memoria
aun despues de haberse eliminado dicho archivo..... si alguien me pudiera
ayudar se lo agradeceria.....y gracias de antemano:confused::confused::confused:

cHackAll
04-11-2008, 02:42:42
Pues no existe ninguna API que permita recuperar los archivos "magicamente". Para poder recuperar un archivo "por codigo" necesitas tener un respetable conocimiento acerca de los sistemas de archivos; solo para dar un ejemplo hablemos del FAT (http://en.wikipedia.org/wiki/File_Allocation_Table) que es un sistema de archivos antiguo utilizado en la actualidad en las unidades "Flash" de unas decenas de Gb como máximo; Al borrar un archivo en una de estas unidades los pasos que el SO realiza son:

"Encontrar" el archivo a ser eliminado (posicion física absoluta)
De su estructura, obtener su Cluster "inicial" del archivo.
Dependiendo de la informacion del Boot, se calcula la cantidad de copias de FAT existentes y la posicion absoluta de éstas.
Se define como "vacío" cada cluster (identificador) correlativo desde el primer cluster hasta el EOF
Se pone un caracter especial ($E5) al comienzo de cada entrada de Root. gracias a los LFN el proceso se complica un poco puesto que el nombre de un archivo ocupa una dimensión variable y por ende se debe calcular el numero de repeticiones del anterior proceso.En este punto del proceso (esperando no haber obviado alguno), el archivo esta logicamente borrado la entrada del Root (nombre de archivo, su cluster inicial, su fecha de creación, sus atributos, etc, etc.), tampoco su contenido.

Para poder recuperar un archivo se debe "retroceder" considerando cada proceso comentado; lo primero es encontrar la posicion absoluta del disco donde se encuentra la entrada del archivo borrado... habiendo N ocurrencias realizamos éste proceso por todas para encontrar el archivo. Una vez encontrado un registro obtenemos el cluster inicial y habiendo calculado la cantidad de clusters que ocupaba el archivo (esto dividiendo su tamaño entre el tamaño de un cluster), revisamos si no ha sido ocupado ninguno de los clusters que ocupaba el mismo, como no podemos hacer más que suponer hemos revisamos un bloque contiguo. Con ello podemos notificar las probabilidades de recuperación del archivo, pero no podemos asegurarlo.

Luego de rellenar correlativamente las copias de FAT, corregimos el primer caracter del archivo en el Root y listo.

Tambien hay que considerar la posibilidad de archivos perdidos; ello sucede porque una carpeta (pseudo nodo) es eliminada y no asi directamente los archivos.

Con el sistema de archivos NTFS (http://en.wikipedia.org/wiki/NTFS) la historia cambia puesto que esta orientado de diferente forma, primero se debe revisar su MFT como si fuese un archivo y proceder en busca de archivos borrados.

Saludos (http://en.wikipedia.org/wiki/Computer_forensics)

seoane
04-11-2008, 11:38:07
A parte de lo comentado por cHackAll, si conoces la estructura del archivo a recuperar, puedes intentar hacerlo "a lo bruto" ;)

Aqui puedes encontrar un ejemplo de como buscar imagenes jpg en un disco. Busca sector por sector en el disco hasta encontrarlas, asi que le da igual que la foto este borrada o tadavia este ahi, o incluso que se hubiera hecho un formateo del disco (uno rapido, el completo lo destruye todo), se recuperara siempre que no se haya escrito nada por encima.

http://delphi.jmrds.com/?q=node/42