c - 在 C 中取证删除硬盘上的文件

标签 c winapi

例如,我知道如何进行取证删除整个磁盘。我可以使用 createfile 然后 writefile 来写入整个磁盘。例如 D:\带有随机垃圾数据位,这样当我启动像 easus 恢复管理器这样的实用程序时,我将无法找到任何文件的任何痕迹或恢复它们。现在我尝试对磁盘中的特定文件或目录完成相同的操作。假设有一个名为 Test.txt 的文件,我想删除它,并用垃圾值填充它占用的空间,这样该空间就不会像 Windows 通常那样被遗漏被覆盖。可以用C实现吗?如果是这样,我该怎么办?代码片段将非常有帮助!

最佳答案

任何类型的软件技术都无法可靠地将文件系统清零,更不用说单个文件或目录了。你需要放弃这种方法。

现在你的另一个选择是物理销毁。是的,它有效,但是来吧。您不能每次想要销毁文件时都销毁磁盘。

另一个更可行的选择是在存储在文件中时始终对数据进行加密。这将问题简化为仅删除 key 。但由于它小得多,你可以把它放在一张纸上。现在您只需撕掉那张纸并对文件进行正常删除即可。即使“他们”恢复了加密内容,他们也无法对其做任何事情。

尽管有一些因素需要考虑。读取文件时,必须小心数据仅保留在“内存中”。你可能会说,我永远不会将未加密的内容写入磁盘。但操作系统可能会做到这一点。假设它交换了你的进程。

所以你需要仔细设计你的查看器。它应该仅将文件解密到固定的内存页面中。您可能需要为其编写一些内核模块。您还必须小心如何将数据发送到显示驱动程序以及它如何处理这些数据。是的,只要有足够的内核模块就可以实现。但从解密到在屏幕上绘制像素的每一步都需要仔细审核。

关于c - 在 C 中取证删除硬盘上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50844024/

相关文章:

delphi - 如何确定程序是否需要提升权限?

c - 无操作系统执行

Windows 资源管理器外壳扩展:通过 ITransferSource::RemoveItem 递归删除?

c++ - GetVersionEx 弃用 - 如何从较新的 API 获取产品类型 (VER_NT_DOMAIN_CONTROLLER)

c - 是否可以在没有源代码的情况下将 no-pie 可执行文件转换为 pie 可执行文件?

c++ - DeviceIoControl 调用崩溃

c++ - 上下控件不显示其在伙伴窗口中的位置

c - 读取c中制表符分隔的文件

c++ - 这在 C++ 中合法吗?

c - 使用 libavcodec 保存 H.264 编码图像