使用 grep 搜索文件中的十六进制字符串

2023-12-29

有谁知道如何使用 grep 或类似工具来检索文件中十六进制字符串的偏移量?

我有一堆十六进制转储(来自 GDB),我需要检查字符串,然后再次运行并检查值是否已更改。

我努力了hexdump and dd,但问题是因为它是一个流,我丢失了文件的偏移量。

一定有人遇到过这个问题并有解决方法。我能做些什么?

澄清:

  • 我有一系列从 GDB 转储的内存区域(通常为几百 MB)
  • 我试图通过搜索存储数字的所有位置来缩小数字范围,然后再次执行此操作并检查新值是否存储在同一内存位置。
  • 我不明白grep做任何事情,因为我正在寻找十六进制值,所以我一直尝试(大概有无数次)它不会给我正确的输出。
  • 十六进制转储只是完整的二进制文件,模式在浮点值范围内,所以 8?字节?
  • 据我所知,这些模式不是换行的。我知道它改变了什么,我可以执行相同的过程并比较列表以查看哪个匹配。

Perl 可能是一个选择,但在这一点上,我认为我对 bash 及其工具缺乏了解是罪魁祸首。

所需的输出格式

解释我得到的输出有点困难,因为我确实没有得到任何输出。

我期待(并期待)以下内容:

<offset>:<searched value>

这是我通常会得到的非常好的标准输出grep -URbFo <searchterm> . > <output>

我尝试过的:

答:问题是,当我尝试搜索十六进制值时,我会遇到如果不搜索十六进制值的问题,所以如果我搜索 00,我应该会得到一百万次点击,因为那总是空格,但相反它搜索 00 作为文本,因此十六进制为 3030。 有任何想法吗?

B.我可以通过十六进制转储或链接的某些内容强制它,但因为它是一个流,所以它不会给我它找到匹配项的偏移量和文件名。

C、使用grep -b选项似乎也不起作用,我确实尝试了所有对我的情况有用的标志,但没有任何效果。

D、使用xxd -u /usr/bin/xxd作为一个例子,我得到了一个有用的输出,但我不能用它来搜索。

0004760: 73CC 6446 161E 266A 3140 5E79 4D37 FDC6  s.dF..&j1@^yM7..
0004770: BF04 0E34 A44E 5BE7 229F 9EEF 5F4F DFFA  ...4.N[."..._O..
0004780: FADE 0C01 0000 000C 0000 0000 0000 0000  ................

不错的输出,正是我想看到的,但在这种情况下它对我不起作用..

E. 以下是自发布本文以来我尝试过的一些操作:

xxd -u /usr/bin/xxd | grep 'DF'
00017b0: 4010 8D05 0DFF FF0A 0300 53E3 0610 A003  @.........S.....

root# grep -ibH "df" /usr/bin/xxd
Binary file /usr/bin/xxd matches
xxd -u /usr/bin/xxd | grep -H 'DF'
(standard input):00017b0: 4010 8D05 0DFF FF0A 0300 53E3 0610 A003  @.........S.....

这似乎对我有用:

LANG=C grep --only-matching --byte-offset --binary --text --perl-regexp "<\x-hex pattern>" <file>

简写:

LANG=C grep -obUaP "<\x-hex pattern>" <file>

Example:

LANG=C grep -obUaP "\x01\x02" /bin/grep

输出(cygwin 二进制):

153: <\x01\x02>
33210: <\x01\x02>
53453: <\x01\x02>

所以你可以再次 grep 来提取偏移量。但不要忘记再次使用二进制模式。

Note: LANG=C需要避免 utf8 编码问题。

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

使用 grep 搜索文件中的十六进制字符串 的相关文章

随机推荐

  • 为什么 Mongoose 不验证更新?

    我有这个代码 var ClientSchema new Schema name type String required true trim true var Client mongoose model Client ClientSchem
  • 导航控制器栏被切断

    如果通过选择隐藏状态栏status bar style hide during application launch我正在自定义导航栏 如下所示 UINavigationBar appearance setBackgroundImage U
  • 以日历日为单位分割间隔的持续时间

    我有以下数据集 显示一集的开始和结束 日期和时间 ep lt data frame start c 2009 07 13 23 45 00 2009 08 14 08 30 00 2009 09 16 15 30 00 end c 2009
  • “POSIX”是什么意思?

    什么是 POSIX 我已阅读维基百科文章 http en wikipedia org wiki POSIX每次遇到这个词我都会读它 事实是我从来没有真正理解它是什么 任何人都可以通过解释 POSIX 的需要 来向我解释一下吗 POSIX h
  • 尝试混合属于不同事务的对象

    pony orm core TransactionError An attempt to mix objects belonging to different transactions 我知道这个错误是描述性的 我只是不明白为什么会发生 我
  • HikariCP 连接过多

    我有一个Java Servlet 我想将连接池与jdbc 数据库 mysql 一起使用 所以这就是我正在做的 这个类是公共最终类DBConnector private static final HikariDataSource dataSo
  • 如何仅为一个 Razor 页面设置 `ValidationVisitor.MaxValidationDepth` = 1?

    我该如何改变ValidationVisitor MaxValidationDepth在本地为一个 Razor 页面阻止验证子对象 我不想在全球范围内改变它MvcOptions MaxValidationDepth就像文档中描述的那样 最大递
  • 如何在默认 Spring Data JPA 方法上添加 QueryHints?

    我可以将查询缓存与 Spring Data JPA 一起用于我的自定义查询方法 如下所示 public interface CountryRepository extends JpaRepository
  • Spring Singleton 范围与应用程序范围

    单例和应用程序弹簧范围有什么区别 我知道单例作用域为每个应用程序创建一个实例 并且应用程序作用域以相同的方式工作 那么主要区别是什么 我需要一个例子来展示其中的区别 要了解应用程序范围和单例范围之间的区别 您需要了解 ServletCont
  • Spring - 在浏览器中显示 PDF 文件而不是下载

    我正在尝试使用 spring 在浏览器中显示 pdf 我的问题是浏览器下载文件而不是显示它 这是我的代码 RequestMapping value getpdf1 method RequestMethod GET public Respon
  • 将自定义声明添加到 azure b2c 客户端凭据流

    我已将 b2c 配置为客户端凭据流的授权服务器 我想向令牌添加声明 以便我可以使用策略将其发送到 APIM 中的后端服务 但我找不到一种方法来将这个额外的声明添加到令牌中 以便我可以在 APIM 上使用它 注意 可以使用授权代码流 但使用客
  • JavaScript 函数声明和求值顺序

    为什么这些示例中的第一个不起作用 但所有其他示例都起作用 1 does not work function setTimeout someFunction1 10 var someFunction1 function alert here1
  • Linq - 一个列表与另一个列表中的项目除外

    我认为我的问题很简单 但我是 linq 的新手 所以我在这里遇到了困难 我的系统调用一个名为 serviceTOP 的服务 它返回一个列表itemTOP Id Name 这些 ItemsTOP 不在我的系统中 但用户可以选择将哪个 item
  • 如何设置 Bluez 5 在配对期间询问 PIN 码

    我使用 QDbus 实现了 org bluez Agent1 接口 我想设置一个固定引脚 我将提供给用户 以便验证所有配对请求 并在引脚错误时拒绝它们 代理功能应为 NoInputNoOutput 因为该项目将部署在没有键盘或显示器的 Ra
  • 使用 ruby​​ rough gem 访问 git 日志数据?

    对于 git 存储库中的给定文件 我想查找修改该文件的最后一次提交的 SHA 以及时间戳 在命令行中 该数据对于特定文件路径的 git log 是可见的 例如 git log n 1 path to file 使用 ruby 的 git g
  • 使用 URL 打开 JQuery 选项卡,并在选项卡单击时向 URL 添加哈希值

    我正在开发一个 Web 应用程序 并且使用 JQuery UI Tabs 插件来分离数据 如果我将鼠标悬停在每个选项卡上 我可以在屏幕左下角看到该选项卡的 URL 例如 testPage com tab1 或 testPage com ta
  • WooCommerce 3.0+ 更改管理订单日期列格式

    在 WooCommerce 中 我使用下面的代码来更改订单日期列的管理订单视图格式 Woocommerce show time on order add filter post date column time custom post da
  • ++Var 和 Var++ 之间的区别[重复]

    这个问题在这里已经有答案了 在编程中 特别是在 Java 中 以下之间有什么区别 int var 0 var and int var 0 var 这会对 for 循环产生什么影响 e g for int i 0 i lt 10 i for
  • 输入字段添加点击时焦点可见

    仅当用户通过键盘导航到元素时 我才尝试有选择地在输入字段上应用大纲 根据我的理解 执行此操作的方法是删除焦点上的轮廓 但应用焦点可见 如下所示 input focus outline 2px solid transparent input
  • 使用 grep 搜索文件中的十六进制字符串

    有谁知道如何使用 grep 或类似工具来检索文件中十六进制字符串的偏移量 我有一堆十六进制转储 来自 GDB 我需要检查字符串 然后再次运行并检查值是否已更改 我努力了hexdump and dd 但问题是因为它是一个流 我丢失了文件的偏移