GitHub - Christ10-8/reflota

GitHub

9 min read Original article ↗

Recuperá archivos de discos, pendrives y tarjetas (NTFS, FAT32, FAT16, FAT12 y exFAT), incluso los que borraste. Gratis, de código abierto y en modo solo lectura.

Cuando Windows dice "el disco no está formateado", una carpeta no abre o el explorador se cuelga, muchas veces los archivos siguen ahí. Reflota los reconstruye leyendo el disco directamente: en NTFS lee toda la tabla maestra (MFT) y arma el árbol de carpetas con la información que cada archivo guarda de su propia carpeta; en FAT y exFAT lee las carpetas y sigue las cadenas de clusters.

También encuentra archivos borrados y te dice cuántos de ellos siguen recuperables. Y si el disco se formateó o ya no tiene nombres, puede buscar archivos por su contenido, encontrar particiones perdidas y hacer una copia segura de un disco que está fallando.

Estado: beta. Funciona, pero cada disco dañado es distinto. Probalo primero con una copia de lo importante si podés.

Novedades todavía sin probar en discos reales (se verificaron con imágenes de prueba, no con hardware): FAT16/FAT12, búsqueda de RAW de cámara/PSD/RAR, reconstrucción de JPEG fragmentados, buscador por nombre y copia por fases. Si probás alguna con un disco real, contá cómo te fue en Issues.

Descarga

Bajá Reflota.exe desde la sección Releases. No necesita instalación ni Python.

Como el programa no está firmado digitalmente, Windows puede mostrar "Windows protegió su PC": tocá Más información → Ejecutar de todas formas. Algunos antivirus desconfían de los programas que leen discos de forma directa; el código es abierto y podés compilar el .exe vos mismo (ver más abajo). Junto a cada Release se publica el hash SHA256 para comprobar que la descarga no se corrompió.

Cómo se usa

  1. Abrí Reflota. Aparece la lista de tus discos y unidades.
  2. Tildá lo que querés recuperar, todo en el mismo árbol:
    • Tildar un disco o una partición → se copia todo.
    • Entrá en la partición y tildá solo carpetas o archivos → se copia solo eso.
    • El tamaño total se calcula solo mientras tildás.
    • Activá Incluir archivos borrados para ver también lo que se borró: aparece en rojo, en su carpeta original, con su estado.
    • Buscar por nombre (arriba del árbol): escribí parte del nombre (factura), un patrón (*.pdf, foto_??.jpg) y apretá Enter. Busca sin importar mayúsculas ni acentos, en la partición elegida (o en todas las que ya abriste), incluye lo borrado y muestra los resultados como un grupo nuevo del árbol que se tilda igual que lo demás. Primero abrí la partición (clic en su flecha).
  3. Abajo, elegí la carpeta donde copiar (en otro disco) y apretá RECUPERAR.

Podés parar cuando quieras y volver a empezar: lo que ya se copió no se repite.

Sobre los permisos de administrador

Windows no deja leer un disco "en crudo" sin permisos de administrador (le pasa a cualquier programa de recuperación). Reflota abre sin pedirlos y los pide recién cuando tocás un disco para leerlo; ahí se reabre con el aviso de Windows. El programa nunca escribe en el disco de origen.

Herramientas (menú «Herramientas»)

Elegí primero un disco o una partición en la lista.

Buscar archivos por contenido. Reconoce los archivos por su forma interna, sin necesitar nombres ni carpetas. Sirve cuando el disco se formateó, la tabla de archivos está destruida o el archivo borrado ya perdió su nombre. Podés buscar solo en el espacio libre (rápido, ideal para lo borrado) o en todo el disco o la partición. Los resultados aparecen en el mismo árbol, agrupados por tipo, y se recuperan igual que lo demás (tildar y RECUPERAR). Detecta: fotos (JPG, PNG, GIF, BMP, WebP, HEIC, TIFF), fotos RAW de cámara (CR2, CR3, NEF, ARW, DNG, ORF, RW2, PEF, RAF), PSD/PSB de Photoshop, videos (MP4/MOV/3GP, AVI, MKV/WebM), audio (MP3, M4A, WAV), documentos (PDF, DOCX, XLSX, PPTX, ODT/ODS/ODP, DOC/XLS/PPT, EPUB), comprimidos (ZIP, RAR, 7Z, JAR, APK) y bases de datos SQLite. El largo exacto de cada archivo se calcula leyendo su estructura (no se corta "a ojo"), y los archivos que contienen otros archivos adentro (como una miniatura en una foto) salen enteros. Los nombres originales no se pueden recuperar: salen numerados (recuperado_00012.jpg). Los archivos que estaban fragmentados (partidos en pedazos no contiguos) normalmente no se pueden rearmar y pueden salir incompletos o mezclados, salvo las fotos JPEG si tildás Reconstruir fotos JPEG fragmentadas: Reflota decodifica la foto hasta donde deja de ser válida y busca el pedazo que la continúa; solo la entrega si el resultado cierra exacto (todos los bloques de imagen y el final del archivo). Es mucho más lento, funciona con JPEG «baseline» (los de cámaras y celulares; no los progresivos) y puede no lograrlo cuando hay muchos fragmentos o el hueco está lleno de otras fotos parecidas: en ese caso la foto simplemente no aparece (no entrega una foto equivocada a propósito, pero conviene mirar el resultado).

Buscar particiones perdidas. Recorre el disco entero buscando los inicios de particiones NTFS, FAT32, FAT16/12 y exFAT, aunque la tabla de particiones esté borrada y hasta con los sectores de arranque destruidos (usa sus copias de respaldo). Las que encuentra se agregan a la lista. Puede tardar bastante en discos grandes y se puede parar.

Crear imagen del disco (copia segura). Cuando un disco falla, lo mejor es copiarlo una sola vez a un archivo y trabajar sobre esa copia, sin seguir forzando el original. La copia va por fases, como hacen las herramientas de rescate profesionales: primero lee rápido todo lo que se lee bien (saltando las zonas que fallan para no insistir), después recorta los bordes de las zonas dañadas, luego las lee sector por sector y al final reintenta los sectores ilegibles. Así se rescata lo máximo con el mínimo castigo al disco. Los sectores que nunca se pudieron leer quedan en ceros y se anotan en *.malos.txt. El avance se guarda en *.mapa: si se interrumpe (o se corta la luz) se continúa exactamente desde ahí. Después agregás la imagen a la lista y recuperás desde ahí.

Consejos importantes

  • Dejá de usar el disco dañado. Cada escritura nueva puede pisar lo que querés recuperar.
  • Copiá siempre a otro disco. Reflota se niega a copiar al mismo disco que está leyendo.
  • Si el disco hace ruidos raros o desaparece a cada rato, apagalo: ese es un problema físico y conviene un servicio profesional.

Qué hace y qué no hace

Hace

  • Lee discos físicos, unidades USB, tarjetas e imágenes de disco (.img).
  • Sigue adelante aunque haya sectores ilegibles: los rellena con ceros, marca el archivo como parcial y lo anota en recuperacion_log.csv.
  • Si el sector de arranque está dañado, prueba la copia de respaldo (FAT32, exFAT) y otras ubicaciones típicas de la MFT (NTFS). FAT16/FAT12 no guardan copia del arranque.
  • Muestra los archivos que no encuentran su carpeta en _huerfanos.

Sobre los archivos borrados

  • Al borrar un archivo, el sistema suele conservar su nombre y dónde estaba el contenido, pero libera ese espacio. Si después se guardaron otros archivos encima, el contenido se pierde. Reflota lo detecta y lo muestra como recuperable, N% intacto o sobrescrito (los sobrescritos no se copian; los parciales sí, avisando).
  • NTFS: usa los registros libres de la MFT y el mapa de espacio libre ($Bitmap). Es lo más confiable.
  • FAT32, FAT16/12 y exFAT: usa las entradas de carpeta borradas. Estos formatos borran la cadena de clusters, así que Reflota asume que el archivo estaba en un solo bloque seguido; si estaba fragmentado, el resultado puede salir mezclado aunque diga "recuperable". En FAT32, un archivo con nombre corto (formato 8.3) pierde la primera letra del nombre al borrarse (queda _orrame.pdf).
  • Si el disco se formateó o la carpeta que lo contenía ya no existe, los borrados pueden aparecer en _borrados (carpeta de origen desconocida).
  • Siempre conviene recuperar a otro disco y dejar de usar el original apenas se nota el problema.

No hace (todavía)

  • No recupera otros sistemas de archivos como ext4, APFS o ReFS, ni discos con BitLocker sin descifrar.
  • La búsqueda por contenido no reconstruye nombres, carpetas ni fechas, y solo sabe unir pedazos de fotos JPEG baseline (no otros formatos fragmentados).
  • No detecta formatos muy poco comunes en la búsqueda por contenido, ni los PSD con compresión ZIP ni los JPEG progresivos fragmentados.
  • Los archivos cifrados (EFS) o comprimidos por NTFS se omiten y quedan en el log.
  • No repara el disco ni arregla fallas físicas.

Línea de comandos

reflota.exe --source \\.\PhysicalDrive5 --particiones
reflota.exe --source \\.\PhysicalDrive5 --offset 608174080 --ls /Programacion --borrados
reflota.exe --source \\.\PhysicalDrive5 --offset 608174080 --copiar /Programacion --dest D:\Recuperado

Compilarlo vos mismo

Con Python 3.8+ (Windows):

python reflota.py              # correr directo, sin instalar nada
.\build_exe.ps1                # genera dist\Reflota.exe

Firmar el .exe (opcional, quita el aviso de Windows)

El .exe se publica sin firma. Para firmarlo hace falta un certificado de firma de código (se compra, o se pide gratis para proyectos de código abierto a servicios como SignPath Foundation). Con el certificado en un .pfx se firma así (requiere signtool del Windows SDK):

.\firmar_exe.ps1 -Pfx C:\ruta\certificado.pfx

El script incluido está sin probar (no se pudo verificar sin un certificado real). Aun firmado, SmartScreen puede avisar un tiempo hasta que el programa gane reputación.

Licencia

MIT: usalo, copialo y modificalo libremente. Ver LICENSE.


English summary

Reflota is a free, open-source, read-only file recovery tool for NTFS, FAT32, FAT16/FAT12 and exFAT. On NTFS it reads the whole $MFT and rebuilds the folder tree from each file's parent reference; on FAT32/exFAT it walks the directories and cluster chains. It also lists deleted files in their original folders and tells you how much of each is still intact. One tree shows disks → partitions → folders: tick a disk to copy everything, or tick only what you want; the size is computed automatically. It has a name search (wildcards, accent-insensitive, includes deleted files). It can also carve files by content (30+ formats including camera RAW, PSD and RAR, with exact lengths read from their structure, plus an optional, slower reassembly of fragmented baseline JPEGs), find lost partitions even with destroyed boot sectors, and make a safe, phased, resumable image (ddrescue-style: easy areas first, then trim, scrape, retry) of a failing disk. Recent additions were verified on synthetic test images, not yet on real hardware. Never writes to the source disk. Windows requires administrator rights for raw disk access; Reflota starts without them and asks only when you open a disk. MIT licensed.