Python正则表达式搜索十六进制字节

2023-12-02

我正在尝试在二进制文件中搜索一系列十六进制值,但是,我遇到了一些无法完全解决的问题。 (1) 我不知道如何搜索整个文件并返回所有匹配项。目前,我的 f.seek 只达到了我认为可能的值,这不好。 (2) 我想以十进制或十六进制形式返回可能匹配的偏移量,尽管每次都得到 0,所以我不确定我做错了什么。

示例.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

code:

# 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()

也许有更好的方法来完成这一切?


  1. 我不确定如何搜索整个文件并返回所有匹配项。
  2. 我想以十进制或十六进制返回偏移量
import re

f = open('data.txt', 'wb')
f.write('\xAA\xBB\xEB\xEC')
f.write('\xAA\xBB\xEB\xEC')
f.write('\xAA\xBB\xEB\xEC')
f.write('\xAA\xBB\xEB\xEC')
f.write('\xAA\xBB\xEB\xEC')
f.write('\xAA\xBB\xEB\xEC')
f.write('\xAA\xBB\xEB\xEC')
f.close()

f = open('data.txt', 'rb')
data = f.read()
f.close()

pattern = "\xEB\xEC"
regex = re.compile(pattern)

for match_obj in regex.finditer(data):
    offset = match_obj.start()
    print "decimal: {}".format(offset)
    print "hex(): " + hex(offset)
    print 'formatted hex: {:02X} \n'.format(offset)

--output:--
decimal: 2
hex(): 0x2
formatted hex: 02 

decimal: 6
hex(): 0x6
formatted hex: 06 

decimal: 10
hex(): 0xa
formatted hex: 0A 

decimal: 14
hex(): 0xe
formatted hex: 0E 

decimal: 18
hex(): 0x12
formatted hex: 12 

decimal: 22
hex(): 0x16
formatted hex: 16 

decimal: 26
hex(): 0x1a
formatted hex: 1A 

文件中的位置像列表一样使用基于 0 的索引。

e.finditer(模式、字符串、标志=0)
返回一个迭代器,生成所有 MatchObject 实例 字符串中 RE 模式的非重叠匹配。该字符串是 从左到右扫描,并按找到的顺序返回匹配项。

匹配对象支持以下方法和属性:
开始([组])
结束([组])
返回开始和结束的索引 组匹配的子字符串;组默认为零(意味着 整个匹配的子字符串)。

https://docs.python.org/2/library/re.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python正则表达式搜索十六进制字节 的相关文章

随机推荐

  • 从 url 中删除 # 后无法通过更改 url 在 flutter web 中导航

    I was able to navigate to other pages by changing the url of my flutter web hosted on netlify manually deployed by typin
  • 通过 ref 传递 List [重复]

    这个问题在这里已经有答案了 可能的重复 通过 ref 传入对象 使用下面的代码 输出将是 Without With 1 Code static void Main string args var listWithoutRef new Lis
  • 多个文件的 Bash 输入

    我有数千个两组文件 一组以 name ext 结尾 另一个文件名以 name ext in 结尾 因此对于每个 name ext 都有一个 name ext in 现在我必须将其作为参数传递给脚本 例如customise pl name e
  • 如何确定Android设备的最小宽度

    我对与不同屏幕尺寸相关的 Android 布局概念很陌生 我希望为 8 英寸的选项卡制作不同的布局 并将其放置在 layout swxxxx 文件夹中 并在 layout 文件夹中为大于 8 英寸的选项卡提供另一个通用布局 这是我的 8 英
  • 进入电话会议时如何识别?

    无论如何 有没有办法识别何时通话从一对一转为多方 电话会议 是否有任何类型的广播或事件被调用 Thanks 不幸的是 目前还没有 这是由系统管理的 开发人员无法访问 你最接近的是电话管理器 但您只能真正访问有关手机的基本信息 我相信这主要是
  • Actor 方法启动/停止日志 |添加附加信息

    对于 azure actor 服务 Actor Method Start Stop 会记录在 诊断 窗口中 如下所示 如何在每次调用方法时添加一些额外的详细信息 例如 Correlation Id Timestamp 2016 09 14T
  • 用于检索 PDF 的 SAP BI Open Doc URL

    在我们使用的报告应用程序中 我们使用 BI 3 x API 来生成 Web 报告 在进行到 4 x 版本的迁移活动时 我们认为使用开放文档 URL 比通过 API 生成报告更好 我见过的许多示例都使用sIDType and iDocID参数
  • Pig 脚本:加入多个文件

    我正在读取一个大文件 超过十亿条记录 并将其与其他三个文件连接 我想知道是否可以使该过程更有效 以避免在大表上进行多次读取 小表可能不适合记忆 A join smalltable1 by f1 f2 RIGHT OUTER massive
  • 了解是否使用了 const 限定符

    C 中是否有任何方法可以查找变量是否具有 const 限定符 或者如果它存储在 rodata 部分中 例如 如果我有这个功能 void foo char myString 在这两个不同的函数调用中应采取不同的操作 char str abc
  • C++ CRTP 初始化

    我在运行以下程序时遇到了段错误 include
  • 在 C++ 中解析字符串中的键/值对

    我正在使用 C 11 没有 Boost 我有一个函数 它接受一个 std string 作为输入 其中包含一系列键值对 用分号分隔 并返回从输入构造的对象 所有密钥都是必需的 但可以按任意顺序排列 下面是一个输入字符串示例 顶部 0 底部
  • 关于 perl 到 python 互操作的建议?

    我们有相当大的 Perl 代码库 在可预见的未来 我们的代码库将保留在 Perl 中 不过 我们正在考虑添加基于 GUI 的仪表板实用程序 我们正在考虑用 Python 编写仪表板 使用 tkinter 或 wx 然而 问题是我们希望在 P
  • pip 在哪里使用虚拟环境安装包?

    情况 我创建了一个虚拟环境并使用显式路径来运行pip 无货源activate 是否在全局安装包dist packages或者将它们安装在虚拟环境中site packages Details As pip 在哪里安装它的软件包 解释说 pip
  • 在模型中使用助手:如何包含助手依赖项?

    我正在编写一个处理来自文本区域的用户输入的模型 遵循以下建议http blog caboo se articles 2008 8 25 sanitize your users html input 我在保存到数据库之前使用 before v
  • 如何获取Android Q中特定文件夹的路径

    我正在尝试显示保存在图库中特定文件夹中的所有图像安卓Q getExternalStoragePublicDirectory方法已弃用且不起作用 如何获取文件夹的路径安卓Q Override protected ArrayList
  • 如何使用 Jupyter + SparkR 和自定义 R 安装

    我正在使用 Dockerized 映像和 Jupyter Notebook 以及 SparkR 内核 当我创建 SparkR 笔记本时 它使用 Microsoft R 3 3 2 安装 而不是普通的 CRAN R 安装 3 2 3 我使用的
  • 沿着旋转路径附加影片剪辑(通过 AS3)

    我该怎么办 沿着路径 其他影片剪辑 附加影片剪辑 例如 脚步声 这将在一次附加一个影片剪辑的时间间隔内 我需要旋转 即脚步应该根据路径方向旋转 Thanks 1 创建坐标数组 这是你的路 您可以通过多种方法来实际创建数组 但结果应该与此类似
  • java do while循环在满足条件后继续循环

    我是一名新的java程序员 我正在编写一个程序 为3台打印机设置3个型号 如果用户输入错误的值 我希望它继续询问用户型号 我让它工作 但前提是用户输入的第一个值是 3 台打印机之一的编号 如果第一个值不是可能的值之一并且第二个输入是 则它仍
  • 如何在Android中使用dimens.xml?

    当我设计布局时 由于可维护性主题 我将所有维度集中在 dimens xml 中 我的问题是这是否正确 最好的做法是什么 关于这方面的信息很少 什么都没有 我知道将布局的所有字符串集中在 strings xml 上 将颜色集中在 color
  • Python正则表达式搜索十六进制字节

    我正在尝试在二进制文件中搜索一系列十六进制值 但是 我遇到了一些无法完全解决的问题 1 我不知道如何搜索整个文件并返回所有匹配项 目前 我的 f seek 只达到了我认为可能的值 这不好 2 我想以十进制或十六进制形式返回可能匹配的偏移量