나는 많은 바이너리 파일을 가지고 있고 그 파일에 내가 찾고 싶은 문자열이 포함되어 있다는 것을 알고 있습니다.
나는 다음을 만들고 싶다 :
grep -lir "the string I am looking for"
grep -lir
해당 문자열을 포함하지만 분명히 해당 파일에서는 작동하지 않는 특정 디렉터리 내의 모든 바이너리 파일 목록을 가져옵니다.
이런 검색을 터미널에서 할 수 있는 명령어가 있나요?
답변1
이 명령은 strings
파일에서 모든 ASCII 데이터를 추출한 다음 grep
출력을 인쇄하면 데이터를 검색할 수 있습니다.
strings <filename> | grep "search text"
답변2
답변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
메모리에 맞지 않는 파일에 대해 이것을 테스트했는데 훌륭하게 작동합니다.
아래에 자세한 내용을 제공했습니다.대용량 바이너리 파일을 수집하는 가장 좋은 방법은 무엇입니까?