Удаленная программа восстановления файлов с использованием C C ++ - PullRequest
2 голосов
/ 28 сентября 2010

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

Ответы [ 4 ]

2 голосов
/ 28 сентября 2010

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

1 голос
/ 28 сентября 2010

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

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

Вот хорошее прочтение (но не настолько техническое): http://www.tech -pro.net / как восстановить-удален-файлы.html

0 голосов
/ 01 февраля 2017

Это не так сложно, как вы думаете.Вы должны понимать, как файлы хранятся в 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 для проверки вычислений адресов.

0 голосов
/ 28 сентября 2010

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

...