【问题标题】:Hard drive reads and writes without file creation无需创建文件即可进行硬盘读写
【发布时间】:2015-04-20 05:45:41
【问题描述】:

有一些程序可以从硬盘驱动器中恢复已删除的文件,也有一些程序会覆盖可用空间以防止已删除的文件被恢复。

覆盖可用空间的行为似乎是可以理解的。程序创建文件并向它们写入任意字节。

但是,当谈到读取已删除的文件时,我很难过。我了解删除文件只会删除文件系统中的引用,并且恢复程序会搜索公共文件头以确定“可用空间”的哪一部分可能是可恢复文件。

但是程序如何从不属于文件系统的硬盘读取数据? 我使用过或阅读过一些文档的任何语言都只允许从硬盘读取数据通过打开一个文件 - 这不是可用空间。

如果有一个从硬盘读取可能是 C++、Java 或 Python 的小例子,我也将不胜感激。

另外,我是 Windows 用户。

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

【问题讨论】:

  • 这个问题读作离题;这里没有实际的正式编码问题需要解决。抱歉,我们也无法为您链接到离题资源。
  • 我只想将问题标记为过于宽泛,但我不同意 - 它有点宽泛,但我仍然认为这是一个更高级别的合法问题。通常,询问任何语言示例的问题都完全偏离主题,但这是一个更具概念性的问题,要求提供非常具体的答案,所以我认为这很合理。
  • 我要问的可以做也可以做不到。如果可以,那么应该有一些可以实现它的程序语句序列。我认为找到这个语句序列是一个正式的编码问题。
  • 请不要关闭这个问题。
  • @mpez0 - 也许不是,或者你需要快速掌握 Ctrl-C

标签: hard-drive data-recovery


【解决方案1】:

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

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

【讨论】:

  • 我应该用任何东西替换问号吗?
  • @Dziugas - 不,你不是!前缀 `\\?` 使操作系统内核不在文件系统上搜索名称,而是在内核对象中搜索。
  • Windows 似乎将此解释为试图在网络上查找另一台计算机
  • 取决于你使用的C库(我的例子来自cygwin),试试\\.\Device\...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 2016-09-17
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
相关资源
最近更新 更多