我正在尝试搜索一个二进制文件中一系列十六进制值,但是遇到了一些问题,无法解决。(1)我不确定如何搜索整个文件并返回所有匹配项。目前,我只有f.seek,只能找到可能存在值的地方,这样做没有用。(2)我想返回匹配项所在的偏移量,无论是十进制还是十六进制,但是每次都得到0,所以我不确定我做错了什么。
例子.bin
也许有更好的方法来完成所有这些吗?
AA BB CC DD EE FF AB AC AD AE AF BA BB BC BD BE
BF CA CB CC CD CE CF DA DB DC DD DE DF EA EB EC
代码:
# coding: utf-8
import struct
import re
with open("example.bin", "rb") as f:
f.seek(30)
num, = struct.unpack(">H", f.read(2))
hexaPattern = re.compile(r'(0xebec)?')
m = re.search(hexaPattern, hex(num))
if m:
print "found a match:", m.group(1)
print " match offset:", m.start()
也许有更好的方法来完成所有这些吗?