Удаленная программа восстановления файлов с использованием C C ++

Я хочу написать программу, которая может восстановить удаленные файлы с жесткого диска (FAT32 / NTFS раздел Windows). Я не знаю с чего начать. Что должно быть отправной точкой этого? Что я должен прочитать, чтобы продолжить это? Требуется помощь Какие структуры системного уровня мне следует изучать?

Ответы на вопрос(4)

Все зависит от структуры файловой системы, от того, как на самом деле выглядит «файл» на диске, и от того, что остается при удалении файла. Таким образом, почти все, что вам нужно понять, это спецификация файловой системы (для каждой файловой системы, которую вы хотите поддерживать) и как получить прямой доступ на уровне HD к данным на уровне блоков. Может быть возможно повторно использовать некоторый код из существующих драйверов файловой системы, но его нужно будет изменить, чтобы обработать структуры, которые, с точки зрения файловой системы, исчезли.

NTFS технический справочникNTFS.comFAT32 spec

Сначала вы должны знать, как выполняется удаление файлов в FAT32 / NTFS и как работают другие программы восстановления.

Восстановленное программное обеспечение понимает внутреннюю часть системы, используемой для хранения файлов на диске (файловая система), и использует эти знания для определения места на диске, которое было занято удаленным файлом. Поскольку другой файл мог использовать часть или все это дисковое пространство, нет гарантии, что удаленный файл может быть восстановлен или, если это так, он не будет поврежден. Но поскольку пространство не используется повторно сразу, есть очень хороший шанс, что вы восстановите удаленный файл на 100% без изменений. Люди, которые используют удаленное программное обеспечение для восстановления файлов, часто удивляются, обнаружив, что оно находит файлы, которые были удалены несколько месяцев или даже лет назад. Лучшие программы восстановления позволяют определить вероятность восстановления файла без изменений и даже предоставляют средства просмотра файлов, чтобы вы могли проверить содержимое перед восстановлением.

Вот хорошее чтение (но не настолько техническое):http://www.tech-pro.net/how-to-recover-deleted-files.html

Это не так сложно, как вы думаете. Вы должны понимать, как файлы хранятся в FAT32 и NTFS. Я рекомендую вам использовать winhex - приложение для цифровой криминалистики, чтобы проверить правильность вычислений адресов.

Т.е. NTFS использует записи основного файла для хранения данных файла в кластерах. Unlink удаляет файл в c, но если вы посмотрите на исходный код, все, что он делает, это удаляет запись из таблицы и обновляет записи. Используйте приложение, такое как winhex, чтобы прочитать информацию об основной записи файла. Вот некоторая полезная информация.

Основная загрузочная запись - сектор 0 Hex 0x55AA является концом MBR. Далее будет mft. Имя файла - mft header. Существует флаг для обозначения папки или файла (не уверен, где). Флаг расположения файла указывает, помечен ли файл как удаленный. Вам нужно будет изменить этот флаг, если вы хотите восстановить удаленный файл. Вам нужен размер кластера и количество кластеров, а также номер кластера, с которого ваши данные начинают вычислять начальный адрес, если вы хотите получить доступ к данным из таблицы основных файлов.

Не уверен в FAT32, но просто используйте тот же подход. 21 полезное видео на YouTube объясняет, как использовать winhex для доступа к данным удаленных файлов в NTFS. Не уверен, что видео, а просто введите в Winhex Digital Forensics восстановить удаленный файл. Как только вы посмотрите это видео, оно станет намного понятнее. удачи

Только что посмотрел 21-минутное видео на YouTube о том, как восстановить файлы, удаленные в NTFS, с помощью winhex. Не забудьте флаг резидента, который указывает, является ли файл резидентным или нет. Это дает некоторое представление о том, как файл хранится либо в кластерах, либо в разделе данных mft, если он маленький. Это может потребоваться, если вы хотите получить доступ к удаленным данным. Это видео идеально подходит для начала, поскольку оно содержит все байтовые позиции смещения для доступа к большей части необходимой информации относительно начала записи файла. Он даже показывает, как выполнить расчет адреса для начала кластера. Вам нужно будет получить доступ к таблице в двоичном формате, используя указатель и добавляя смещения к указателю, чтобы получить доступ к необходимой информации. Единственный способ сделать это - просмотреть всю таблицу и выполнить двоичное сравнение байта имени файла для байта. В некоторых полях мало написано, поэтому убедитесь, что у вас есть winhex для проверки вычислений адресов.

 flaviu218 июн. 2019 г., 13:59
А что насчет exFAT? Потому что там я не нашел документацию, поскольку понимаю, что eFAT - это проприетарная файловая система Microsoft ... Я не знаю, публикуются ли они сведения о том, как файлы распределяются на диске ...

Есть тысячи таких программ, зачем тратить время на другую? Может быть, было бы лучше учиться, раскошелиться или внести свой вклад всуществующий с открытым исходным кодом.

Ваш ответ на вопрос