【问题标题】:search for a binary string in binary file with python使用python在二进制文件中搜索二进制字符串
【发布时间】:2020-07-16 07:00:25
【问题描述】:

大家好,我正在使用 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 00 0 0 0 0 0 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 21 00 37 28 23 00 3C 2D 00 00 F3 91 E2 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 38 DD DA 96 0A 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 A6 AA 5F 79 E 64 C5 04 FD 2 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")
           

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

【问题讨论】:

    标签: python binaryfiles binarystream binary-string


    【解决方案1】:

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

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

    所以你最终会在b'BEEF':[66, 69, 69, 70] 中搜索 4 个字节。您正在寻找fromhex method

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-02
      • 2021-11-19
      • 2021-04-15
      • 1970-01-01
      • 2013-11-22
      • 2011-09-23
      • 1970-01-01
      • 2021-11-09
      相关资源
      最近更新 更多