【发布时间】:2014-12-29 22:54:56
【问题描述】:
我正在尝试在二进制文件中搜索一系列十六进制值,但是,我遇到了一些我无法完全解决的问题。 (1) 我不确定如何搜索整个文件并返回所有匹配项。目前我 f.seek 只在我认为的价值范围内进行,这是不好的。 (2) 我想以十进制或十六进制返回可能匹配的偏移量,尽管我每次都得到 0,所以我不确定我做错了什么。
example.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()
也许有更好的方法来完成这一切?
【问题讨论】:
-
文件有多大?
-
文件大小范围为 100 KB 到 10 MB。