Существуют программы, которые восстанавливают удаленные файлы с жесткого диска, а также те, которые перезаписывают свободное пространство, чтобы предотвратить восстановление удаленных файлов.Жесткий диск читает и записывает без создания файла
Акт перезаписи свободного пространства кажется понятным. Программа создает файлы и записывает в них произвольные байты.
Однако, когда дело доходит до чтения удаленных файлов, я в тупике. Я понимаю, что удаление файла только избавляет от ссылки в файловой системе и что программы восстановления ищут обычные заголовки файлов, чтобы определить, какая часть «свободного пространства» может быть восстановимым файлом.
Но Как программа может считывать данные с жесткого диска, который не является частью файловой системы? Любой язык, на котором я использовал или читал некоторую документацию, позволяет читать с жесткого диска только путем открытия файла, который не является свободным местом.
Я также был бы благодарен за небольшой пример чтения с жесткого диска, возможно, на C++, Java или Python.
Кроме того, я пользователь Windows.
EDIT: Это то, что Java ребята придумали: How to access specific raw data on disk from java
Этот вопрос читается как не по теме; здесь не существует реальной проблемы формального кодирования, которая должна быть решена. Извините, мы не можем ссылаться на ресурсы вне темы. – Makoto
Я все о том, чтобы поставить вопросы как слишком широкие, но я не согласен - он немного широк, но я все еще думаю, что это законный вопрос на чуть более высоком уровне. Обычно вопросы, которые требуют примера на любом языке, были бы полностью вне темы, но это более концептуальный вопрос, требующий очень конкретного ответа, поэтому я думаю, что это достаточно разумно. – neminem
То, о чем я прошу, может быть сделано или не может. Если это так, то должна быть какая-то последовательность программных заявлений, которые могут ее достичь. Я думаю, что найти эту последовательность утверждений является формальной проблемой кодирования. – Dziugas