bash – 使用grep在文件中搜索十六进制字符串

前端之家收集整理的这篇文章主要介绍了bash – 使用grep在文件中搜索十六进制字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在努力让这个工作。
有没有人知道如何获取grep或类似的东西来获取文件中十六进制字符串的偏移量?

我有一堆hexdumps,我需要检查字符串,然后再次运行并检查值是否已更改。

我已经尝试过hexdump和dd,但问题是因为它是一个流,我失去了文件的偏移量。

有人有这个问题和解决方法。我能做什么?

要澄清,我有一系列从GDB的倾销记忆区。

我试图通过搜索数字存储的所有地方来缩小一个数字,然后再次执行,并检查新值是否存储在同一个内存位置。

我不能得到grep做任何事情,因为我正在寻找十六进制值,所以我一直尝试(像一个bazillion,大致),它不会给我正确的输出

十六进制转储只是完整的二进制文件,paterns在float值之内,最大值为8?字节?

这些图案并没有包装我所知道的线条。我知道它改变了什么,我可以做同样的过程,并比较列表以查看哪个匹配。
十六进制转储通常最终(总共)100兆克。

Perl可能是一个选择,但在这一点上,我会假设我缺乏bash的知识,其工具是主要的罪魁祸首。

它有点难以解释我得到的输出,因为我真的没有得到任何输出..

我期待(并期待)一些东西:

<offset>:<searched value>

我通常会使用grep -URbFo< searchterm>得到很好的标准输出。 。 > <输出>

问题是,当我尝试搜索十六进制值时,我得到的问题是,如果只是不搜索十六进制值,所以如果我搜索00我应该得到一百万次点击,因为它总是空格,而是搜索以00为文字,所以在十六进制,3030。
有任何想法吗?

我可以强制它通过hexdump或某些链接,但因为它的一个流,它不会给我的偏移和文件名,它找到一个匹配。

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

使用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  ................

好的输出,就是我看到的,但是在这种情况下,它对我来说并不奏效

这是发布后我尝试过的一些事情:

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.....
在达成可接受的解决方案之前,我们尝试了几件事情:
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.....

然后发现我们可以得到可用的结果

xxd -u /usr/bin/xxd > /tmp/xxd.hex ; grep -H 'DF' /tmp/xxd

请注意,使用简单的搜索目标(如“DF”)会错误地匹配跨字节边界的字符,即

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

所以我们使用ORed正则表达式来搜索’DF’或’DF'(searchTarget之前或之后是空格字符)。

最后的结果似乎是

xxd -u -ps -c 10000000000 DumpFile > DumpFile.hex
egrep ' DF|DF ' Dumpfile.hex

0001020: 0089 0424 8D95 D8F5 FFFF 89F0 E8DF F6FF  ...$............
-----------------------------------------^^
0001220: 0C24 E871 0B00 0083 F8FF 89C3 0F84 DF03  .$.q............
--------------------------------------------^^
原文链接:https://www.f2er.com/bash/387954.html

猜你在找的Bash相关文章