【问题标题】:How to find a specific byte sequence between two file offsets in a binary file using Python?如何使用 Python 在二进制文件中的两个文件偏移之间找到特定的字节序列?
【发布时间】:2017-04-30 08:57:33
【问题描述】:

如何使用 Python 查找二进制文件中两个文件偏移之间的特定字节序列?

我想打开一个二进制文件来搜索两个文件偏移量startend 之间的特定字节序列0x66,0x66,...,0x66

我的想法是使用rb 打开文件,然后使用fseek() 将文件位置设置为start。然后对于文件中的每个位置,我读取 16 个字节并将它们与上面的序列(长度为 16 个字节)进行比较。

但是,必须有更简单的方法来做到这一点?

【问题讨论】:

标签: python binary python-3.4


【解决方案1】:

你没有说它是一个大文件,所以我们假设它很容易放入内存。 fseek 到起始位置,然后读取结束起始字节。你会有一个字节串,然后你可以使用 .index 来找到你的序列:

with open("the_file.bin", "rb") as f:
    f.fseek(start)
    data = f.read(end-start)
where = data.index(b"\x66"*16)

【讨论】:

  • 这会给我所有的指标吗?
  • @Shuzheng 不,它只是给你第一个。您需要循环查找其他索引。您可能希望使用.find 而不是.index,否则您需要一个try:... except 块来捕获.index 在找不到您的模式时引发的ValueError
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 2017-07-26
  • 2020-07-02
  • 2013-01-10
  • 1970-01-01
  • 2010-09-12
相关资源
最近更新 更多