【问题标题】:Data Carving loop improvements数据雕刻循环改进
【发布时间】:2023-03-25 09:10:02
【问题描述】:

我目前正在开发一个 Python 应用程序,它将为 jpeg 文件数据雕刻块设备。让我们说它有时有效,有时无效。我创建了它,以便读取块设备直到找到 ffd8,然后保持流打开并通过循环搜索 ffd9 闭包。尽管即使在第一次关闭之后,我也总是需要考虑所有 ffd9 关闭。所以它往往是一个非常密集的操作。假设一个设备有 25 个 jpeg 以及许多其他数据,循环非常戏剧化,并且运行了很多。

该程序并不是世界上最慢的东西,但我认为它可以更快、更高效。我正在寻找一种更好的方法来搜索块设备并以更有效的方式提取数据。我也不想杀死 HDD 或保存块设备映像的驱动器。

那么有人知道更好的方法来系统地处理数据的搜索和提取吗?

【问题讨论】:

    标签: python io


    【解决方案1】:

    直接读取块设备的问题在于不能保证任何给定文件的块是连续的。这意味着,即使您在块 13 中找到魔术标记字节 0xFFD8,也不能保证块 14 属于同一个文件,无论它是否包含 0xFFD9 结束标记。 (大多数文件将从块边界开始;文件的结尾可能在任何地方,甚至可能跨越块边界。)

    有什么更好的方法来处理它?好吧,这取决于您所追求的 - 但如果您只查看当前分配的块,则使用 POSIX C 函数 ftw (nftw) 的 Python 模拟扫描文件系统,然后依次读取每个文件。这不会在免费列表中找到已删除 JPEG 文件的证据 - 如果这是您所追求的,那么您将需要或多或少地按照您的方式进行操作,但将该信息与您在文件系统中找到的内容相关联恰当的。映射这些块(充其量)会很困难。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 2012-11-07
      • 2012-11-17
      • 1970-01-01
      • 2020-11-20
      • 2020-10-09
      • 2016-01-13
      相关资源
      最近更新 更多