如何用 0x00 覆盖所有可用磁盘空间? [关闭]

Posted

技术标签:

【中文标题】如何用 0x00 覆盖所有可用磁盘空间? [关闭]【英文标题】:How to overwrite all the free disk space with 0x00? [closed] 【发布时间】:2021-02-27 12:47:05 【问题描述】:

如何用零覆盖所有可用磁盘空间,如 Windows 中的 cipher 命令;例如:

cipher /wc:\ 

这将在三遍中覆盖可用磁盘空间。如何在 C 或 C++ 中执行此操作? (我希望尽快完成。)

【问题讨论】:

只需创建一个文件并将0写入其中直到它失败 @AlanBirtles:这不适用于优化动态压缩文件内容的文件系统。 【参考方案1】:

您可以创建一组文件并向它们写入随机字节,直到可用磁盘空间被填满。退出程序前应删除这些文件。

文件必须在您要清理的设备上创建。

由于文件大小限制,某些文件系统可能需要多个文件。

在这些文件中使用不同的非重复随机序列非常重要,以避免文件系统压缩和重复数据删除策略可能会减少实际写入的磁盘空间量。

另请注意,操作系统可能具有配额系统,这会阻止您填充可用磁盘空间,并且当其他进程的磁盘空间用完时,还可能显示不稳定的行为。

删除文件可能会导致操作系统跳过缓存刷新机制,导致某些块无法写入磁盘。可能需要sync() 系统调用或等效项。硬件级别的进一步同步可能会延迟,因此可能需要等待一段时间才能删除文件。

使用不同的随机种子重复此过程,可通过使用高级取证工具进行表面分析来提高硬件恢复的几率。这些工具并不完美,尤其是当恢复对于丢失的比特币钱包所有者来说可以挽救生命时,但在其他更成问题的情况下可能会有效。

使用随机字节有双重目的:

阻止某些文件系统优化块并压缩或共享它们而不是写入媒体,从而覆盖现有数据。 使用高级硬件恢复工具增加恢复先前写入数据的难度,就像这些安全信封内部印有随机图案,以防止通过强光扫描信封来暴露信件内容。李>

【讨论】:

非常感谢您的好回答,是否需要使用随机字节?如果我只是用零覆盖数据仍然可以恢复或者它们几乎消失了? @sofia:对于这一点,我在答案中添加了一些解释。 @Sofia "数据仍可恢复" 如果这是真正的目的,那么您应该在问题中说明这一点。简单地覆盖可用空间不会使 all 以前的数据不可恢复。例如,在 NTFS 卷上,小文件直接存储在 MFT 中。删除此类文件只是将条目标记为已删除,但不会清除以前的内容,并且由于该文件仍归 MFT 所有,因此也不计入“可用空间”。 @dxiv 非常感谢您提供详细信息并对此感到抱歉,但大多数文件都无法恢复,这对我来说已经足够了

以上是关于如何用 0x00 覆盖所有可用磁盘空间? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何用C ++制作迷宫中的可移动角色[关闭]

如何用 div 填充边距空间并赋予其样式?

如何为 Apache Hadoop NameNodes 启用 GC 日志记录,同时防止日志文件覆盖和限制磁盘空间使用

如何用 jasmine-karma 覆盖函数的所有行

CMD里如何用DiskPart命令删除分区

如何查找 Android 上剩余的可用存储空间(磁盘空间)? [复制]