bash – 使用grep在文件中搜索十六进制字符串
我一直在努力让这个工作。
有没有人知道如何获取grep或类似的东西来获取文件中十六进制字符串的偏移量? 我有一堆hexdumps,我需要检查字符串,然后再次运行并检查值是否已更改。 我已经尝试过hexdump和dd,但问题是因为它是一个流,我失去了文件的偏移量。 有人有这个问题和解决方法。我能做什么? 要澄清,我有一系列从GDB的倾销记忆区。 我试图通过搜索数字存储的所有地方来缩小一个数字,然后再次执行,并检查新值是否存储在同一个内存位置。 我不能得到grep做任何事情,因为我正在寻找十六进制值,所以我一直尝试(像一个bazillion,大致),它不会给我正确的输出。 十六进制转储只是完整的二进制文件,paterns在float值之内,最大值为8?字节? 这些图案并没有包装我所知道的线条。我知道它改变了什么,我可以做同样的过程,并比较列表以查看哪个匹配。 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............ --------------------------------------------^^ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |