递归发现的十六进制字节的二进制文件
问题描述:
我使用的bash shell中的grep找到文件中的一系列十六进制字节:递归发现的十六进制字节的二进制文件
$ find . -type f -exec grep -ri "\x5B\x27\x21\x3D\xE9" {} \;
搜索工作得很好,虽然我知道有一个为当不匹配的限制使用-a
选项,其中只有结果返回:
Binary file ./file_with_bytes matches
我想获得的匹配结果的偏差,这可能吗?我愿意用另一个类似的工具,我只是不知道会是什么感觉。
答
实际上有在grep的一个选项,可用使用此选项以使用
-b --byte-offset Print the 0-based byte offset within the input file
一个简单的例子:
$ grep -obarUP "\x01\x02\x03" /bin
打印出两者的文件名和字节匹配的模式的偏移量内目录
/bin/bash:772067:
/bin/bash:772099:
/bin/bash:772133:
/bin/bash:772608:
/bin/date:56160:
通知find
是行为ually没有必要的,因为该选项-r
已经采取的递归搜索文件
答
完全没有一台电脑,但使用方法:
od -x yourFile
或
xxd yourFile
得到它在十六进制倾倒与左侧偏移。
有时候你的搜索字符串可能不被发现,因为字符不会连续出现,但两行被分割。您可以通过传递文件,虽然两次,砍掉第二次前4个字节,以确保您的字符串中找到完整的一个通行证或其他。然后添加offest重新开启,排序和uniq的偏移。