grep 바이너리 파일에 해당하는 명령

grep 바이너리 파일에 해당하는 명령

나는 많은 바이너리 파일을 가지고 있고 그 파일에 내가 찾고 싶은 문자열이 포함되어 있다는 것을 알고 있습니다.

나는 다음을 만들고 싶다 :

grep -lir "the string I am looking for"

grep -lir해당 문자열을 포함하지만 분명히 해당 파일에서는 작동하지 않는 특정 디렉터리 내의 모든 바이너리 파일 목록을 가져옵니다.

이런 검색을 터미널에서 할 수 있는 명령어가 있나요?

답변1

이 명령은 strings파일에서 모든 ASCII 데이터를 추출한 다음 grep출력을 인쇄하면 데이터를 검색할 수 있습니다.

strings <filename> | grep "search text"

답변2

그리고GNU grep, 당신은 그것을 사용할 수 있습니다-ㅏ바이너리 파일을 텍스트 파일로 처리하는 옵션:

grep -ali -- string file

귀하의 grep 버전이 이를 지원하지 않는 경우 -a다음을 사용할 수 있습니다.확인하다대신에. ack 1.x의 경우 옵션을 포함해야 하지만 -a, ack 2.x의 경우에는 기본적으로 텍스트가 아닌 파일이 검색에 포함되므로 포함하지 않습니다(텍스트가 아닌 파일은 파일이 지정되지 않은 경우에만 무시됩니다).

답변3

귀하의 질문은 패턴이 포함된 바이너리를 찾는 것입니다(우리는 이미 훌륭한 답변을 가지고 있습니다!). 보충적으로 우리는 사건의 발생을 얻고자 할 수도 있습니다.

나는 자주 사용한다

grep -aPo '.{0,20}pattern.{0,20}'  binfile

주변 상황에 대한 20자를 가져옵니다.

답변4

bgrep행이 반드시 메모리에 맞지 않는 경우

때때로 나는 이 임의의 저장소로 돌아옵니다.https://github.com/tmbinc/bgrep설치하다:

curl -L 'https://github.com/tmbinc/bgrep/raw/master/bgrep.c' | gcc -O2 -x c -o $HOME/.local/bin/bgrep -

사용:

bgrep `printf %s saf | od -t x1 -An -v | tr -d '\n '` myfile.bin

예제 출력:

myfile.bin: c80000003
\x02abc
myfile.bin: c80000007
dabc

메모리에 맞지 않는 파일에 대해 이것을 테스트했는데 훌륭하게 작동합니다.

아래에 자세한 내용을 제공했습니다.대용량 바이너리 파일을 수집하는 가장 좋은 방법은 무엇입니까?

관련 정보