如何使用正则表达式从二进制文件中查找独特的十六进制模式

问题描述 投票:0回答:1

这里我得到了一个4GB的二进制文件。我想在该文件中搜索十六进制模式并获取所需模式的偏移量。

图案看起来像

?? ?? ?? E5 00 60 8F E0 ?? ?? ?? E5 04 00 80 E0
?(问号)是未知点。

获取16字节十六进制代码的Python代码是

with open("file.bin", 'rb') as in_file:
    while True:
        hexdata = in_file.read(16).hex().upper()
        if len(hexdata) == 0:
            break

返回示例代码,如


17000000ECBDD40617000000F0BDD406
17000000F4BDD40617000000F8BDD406
17000000FCBDD4061700000000BED406
1700000004BED4061700000008BED406
170000000CBED4061700000010BED406
FAEEF0E500608FE0A0EAFFE5040080E0

我正在尝试这个正则表达式模式来寻找欲望模式。 模式=“[a-f0-9]{6}[E500608FE0][a-f0-9]{6}[E5040080E0]”

但它返回 None 。 如果我做错了什么,请告诉我。

回答

import re
pattern = "[A-F0-9]{6}(E500608FE0)[A-F0-9]{6}(E5040080E0)"

with open("file.bin", 'rb') as in_file:
        while True:
            hexdata = in_file.read(16).hex().upper()
            if len(hexdata) == 0:
                break
            if re.search(pattern, hexdata):
                print("found") 
python-3.x regex binary hex
1个回答
1
投票

试试这个:

[A-F0-9]{6}(E500608FE0)[A-F0-9]{6}(E5040080E0)

https://regex101.com/r/cBrlcW/1

© www.soinside.com 2019 - 2024. All rights reserved.