2017-10-18 57 views
0

我使用的bash shell中的grep找到文件中的一系列十六進制字節:遞歸發現的十六進制字節的二進制文件

$ find . -type f -exec grep -ri "\x5B\x27\x21\x3D\xE9" {} \; 

搜索工作得很好,雖然我知道有一個爲當不匹配的限制使用-a選項,其中只有結果返回:

Binary file ./file_with_bytes matches 

我想獲得的匹配結果的偏差,這可能嗎?我願意用另一個類似的工具,我只是不知道會是什麼感覺。

回答

0

實際上有在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已經採取的遞歸搜索文件

護理
0

完全沒有一臺電腦,但使用方法:

od -x yourFile 

xxd yourFile 

得到它在十六進制傾倒與左側偏移。

有時候你的搜索字符串可能不被發現,因爲字符不會連續出現,但兩行被分割。您可以通過傳遞文件,雖然兩次,砍掉第二次前4個字節,以確保您的字符串中找到完整的一個通行證或其他。然後添加offest重新開啓,排序和uniq的偏移。

相關問題