有没有人知道如何获取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............ --------------------------------------------^^