无需创建文件即可读写硬盘

Hard drive reads and writes without file creation

有些程序可以从硬盘驱动器恢复已删除的文件,也有一些程序可以免费覆盖 space 以防止已删除的文件被恢复。

覆盖免费 space 的行为似乎可以理解。该程序创建文件并向其中写入任意字节。

但是,当谈到读取已删除的文件时,我感到很困惑。我知道删除文件只会删除文件系统中的引用,并且恢复程序会搜索通用文件头以确定 'free space' 的哪一部分可能是可恢复文件。

但是程序如何从不属于文件系统的硬盘读取数据?我使用过或阅读过一些文档的任何语言都允许读取仅通过打开一个文件从硬盘获取 - 这不是免费的 space.

我也很感激从硬盘读取的一个小例子,可能是用 C++,Java 或 Python。

此外,我是 Windows 用户。

编辑:这就是 Java 人想出的:How to access specific raw data on disk from java

那里的每个 OS 都有一个 block device 的概念——硬盘就是典型的例子。现在的美妙之处在于,在大多数实现中(包括 Windows),可以通过引用特殊文件名将它们打开,就好像它们是文件系统上的文件一样,这在 内部是无效的 文件系统(假设有适当的用户权限)。

在 Windows,例如打开 \?\Device\Harddisk0\Partition1 将使您可以访问第一个硬盘驱动器的第一个分区。有了这个特殊 "file" 的读取权限,您现在可以在不通过文件系统的情况下读取驱动器的内容,让您有可能发现和挽救不再是文件系统一部分但还没有的对象被覆盖或修剪。