我正在拆解固件(西门子 C165 处理器 - https://www.infineon.com/dgdl/Infineon-C165-DS-v02_00-en%5B8%5D.pdf?fileId=db3a304412b407950112b43a49a66fd.7)
我有固件,所以我也可以通过 Python 读取它。
我需要找到一个被排列的字符串
0, 1, 2, 3, 4, 5, 6, 7 (0-7)
写了这个简单的程序:
from itertools import permutations
l = list(permutations(range(0,8)))
print(len(l))
with open("firm.ori", 'rb') as f:
s = f.read()
for i in l:
hexstr = '\\x'.join('{:02x}'.format(x) for x in i)
hexstrfinal = "\\0x" + hexstr
#print hexstrfinal
if(s.find(b'hexstrfinal')>0):
print "found"
但是,它没有找到任何东西
我以为序列会彼此相邻,但也许不是。
只想确保程序正确。
实际上,0-7 应该是半字节,所以这是否意味着我需要搜索,例如作为一个组合:
0x01, 0x23, 0x45, 0x67
以上是字节。
有人可以确认这一点并建议如何搜索吗?
更新 1:
尝试了第二个变体
from itertools import permutations
l = list(permutations(range(0,8)))
print(len(l))
with open("firm.ori", 'rb') as f:
s = f.read()
for item in l:
str1 = ''.join(str(e) for e in item)
n = 2
out = [str1[i:i+n] for i in range(0, len(str1), n)]
hexstr = '\\x'.join(e for e in out)
hexstrfinal = "\\x" + hexstr
#print hexstrfinal
if(s.find(b'hexstrfinal')>0):
print "found"
但也没有命中...
任何想法我做错了什么?
蓝山帝景
萧十郎
相关分类