여러 바이너리 파일의 모든 문자열을 하나의 txt 파일로 grep

여러 바이너리 파일의 모든 문자열을 하나의 txt 파일로 grep

나는 공격자가 이론적으로 응용 프로그램 메모리에서 얼마나 많은 민감한 정보를 얻을 수 있는지 알아보기 위해 여러 유틸리티에 대한 모든 프로세스 메모리를 덤프하기로 결정했습니다.

덤핑 목적으로 다음 줄을 찾았습니다.

grep rw-p /proc/$1/maps | sed -n 's/^\([0-9a-f]*\)-\([0-9a-f]*\) .*$/\1 \2/p' | while read start stop; do gdb --batch --pid $1 -ex "dump memory $1-$start-$stop.dump 0x$start 0x$stop"; done

불행히도 저는 Bash를 능숙하게 사용할 수 없으며 이 스크립트로 생성된 대용량 덤프 파일(모두 대략 킬로바이트 크기)에 직면했습니다.

strings제 질문은: 명령줄 도구를 사용하여 null로 끝나는 모든 문자열을 파일로 어떻게 grep합니까 ?

그래서 저는 다음과 같이 작성했습니다(결과가 없는 무한 루프에 들어감).

for f in *.dump; do strings $1 > foo.txt; done

나는 이것이 내 목표에 가까운 노선이라는 것을 알았지만 결국에는 성공하지 못했습니다.

답변1

이건 어때. 매번 파일을 덮어쓰는 대신 ">>"를 사용하여 파일에 추가하세요.

rm foo.txt
for f in *.dump; do strings $f >> foo.txt; done

검토를 돕기 위해 "sort -u"를 통해 파이프를 통해 중복 항목을 제거할 수도 있습니다.

큰 .dump 파일이 많으면 실행하는 데 시간이 걸릴 수 있습니다.

관련 정보