【问题标题】:Hex pattern parsing in Python code (using Bitstring)Python代码中的十六进制模式解析(使用Bitstring)
【发布时间】:2012-07-03 09:28:45
【问题描述】:

我正在对特定文件编辑器进行原型设计,但无法解析我的 hex 文件并找到特定模式。这是我的代码(使用Bitstring 库):

from bitstring import BitArray, BitStream, Bit
f = open('d:\BB.bin', "rb")
s = BitArray(f)
f1 = s.find('0x000015354444444343434344444444434343434444444400F700F0')

>>> print(f1)
(15232,)

这部分没问题——但我想知道输出15232 指的是什么? (在我的文件中,实际模式位于770h)。

我的主要问题是寻找这种模式,但只有前 3 个字节 (0x000015) 和最后一个字节 (0xf700f0):我只对中间部分感兴趣。

我尝试了不同的解决方案,但没有运气,有什么想法吗?

f1 = s.find('0x000001''(.*)''F700F0')  
f1 = s.find('0x000001''0x.''0xF700F0') 

【问题讨论】:

  • 谢谢伙计们,你们太快了;)
  • 您还应该在对find 的调用中使用bytealigned=True,否则它会在每个位偏移处查找您的模式,这似乎不是您想要的,而且也相当多慢一点。

标签: python parsing hex bitstring


【解决方案1】:

我假设您不需要位分辨率,bytes 就足够了。

import re
with open('d:\BB.bin', "rb") as f:
    f1 = re.findall( b'\x00\x00\x01(.*?)\xF7\x00\xF0', f.read() )

print f1

【讨论】:

  • 你说得对,我不需要位分辨率,我用re模块试试
猜你喜欢
  • 1970-01-01
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-16
相关资源
最近更新 更多