使用 python 在二进制文件中搜索二进制字符串

search for a binary string in binary file with python

大家好,我正在使用 python

在二进制文件中搜索二进制字符串

我的二进制文件如下所示。

我想找到下面的粗体字。

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 0 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 00 37 28 23 00 3C 2D [=24=9=]152 E3[F3 25=] 00 00 01 00 97 00 01 00 FF 01 48 00 C1 3B 51 8C DA A8 B0 EE 05 F8 F5 41 17 BA B1 DD 22 88 06 5E BE D4 D3 F3 EF 96 19 3A 26 D1 B3 25 50 7B 3 DD DA 96 0A 9F D0 9B A4 30 68 F5 2E 63 58 13 78 C7 F3 8A 59 FD 35 08 F9 13 5B 63 63 14 C8 12 6D 2E F1 B9 DA 7E 97 8F 1B 5E 19 67 DF A69 AA 64F 7 04 FD 2E F8 7F 35 7D

这是我的代码,我的代码能够找到“58”、“F3”、“92”等单个字节,但无法找到/搜索整个字符串。

        with open(binary_file, 'r+b') as f:
        s = f.read()
        d = bytes(hex_string, 'utf-8')
        n = s.find(d)
        if n > -1:
            print(n)
        else:
            print("string not found")
           

你们能帮我找到整个字符串吗? 提前致谢。

bytes(hex_string, 'utf-8') 会将您的十六进制字符串逐个字符地转换为字节。例如:

bytes('BEEF', 'utf-8') == b'BEEF'

因此您最终将在 b'BEEF' 中搜索 四个 字节:[66, 69, 69, 70]。您正在寻找 fromhex method:

>>> bytes.fromhex('BEEF')
b'\xbe\xef'