python - 从物理驱动器中提取字符串

标签 python computer-forensics

我希望用 Python 2.x 编写一个脚本,该脚本将扫描物理驱动器(物理驱动器和非逻辑驱动器)以查找大小不等的特定文本字符串(聊天工件)。我有字符串的页眉和页脚,所以我只是想知道如何最好地扫描驱动器?我担心的是,如果我将其分割成 250MB 的 block ,并在解析页眉和页脚之前将这些数据读入 RAM,则可能页眉在那里,但页脚位于下一个 250MB 的 block 中。

所以本质上,我想扫描PhysicalDevice0以查找以“ABC”开头并以“XYZ”结尾的字符串,并从其中复制所有内容。我不确定是否也将数据扫描为 ascii 或 Hex。

随着驱动器变得越来越大,我希望以尽可能最快的方式做到这一点。

有什么建议吗?

最佳答案

您的问题可以表述为“如何在没有行结构的非常长的文件中进行搜索”。这与一次一行读取面向行的文本时所做的事情没有什么不同:想象一下,您正在逐 block 读取一个文本文件,但有一个面向行的正则表达式可供搜索;您将搜索到已阅读的 block 中的最后一个完整行,然后保留最后一个不完整的行并读取另一个 block 以扩展它。因此,您不必在读取每个新 block 时重新开始。将其视为滑动窗口;您只需将其推进即可丢弃您能够完全搜索到的部分。

在这里执行相同的操作:编写代码,以便您匹配的字符串永远不会到达缓冲区的边缘。例如,如果您要搜索的 header 长度为 100 字节:读取文本 block ;检查 block 中是否出现完整模式;将阅读窗口提前到当前 block 末尾之前的 100 个字节,并在其后添加一个新 block 的文本。现在您可以搜索 header ,而不必担心丢失 header 。找到它后,您将提取文本,直到看到停止模式(页脚)。它是在同一个 block 中还是在五个 block 之后并不重要:您的代码应该知道它处于提取模式,直到看到停止模式。

关于python - 从物理驱动器中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212673/

相关文章:

firefox - 我可以修改浏览器的缓存文件吗?为什么很难找到任何有关缓存修改的资源?

php - 主机检测到恶意 PHP 文件

python - 根据值的范围在 matplotlib 热图中创建刻度

python - 我下载音频文件,但采用 m3u8 格式。如何转换成mp3?

Python - 如何将计算函数与 pandas groupby 一起使用?

linux - 访问/dev/mem 卡住 Ubuntu

hex - 从磁盘转储中提取 jpeg

opencv - 计算机视觉 : nudity detection solutions comparision (opencv based or custom code) & hash-lists & client side

python - 为什么我的 GPU 在矩阵运算中比 CPU 慢?

python - 如何在 python 3.4 中安装 - .whl 文件