전체 장치에서 16진수 매직 넘버 검색

전체 장치에서 16진수 매직 넘버 검색

현재 법의학 문서 검색 교육 문제를 해결하려고 노력 중입니다.

LUKS 컨테이너가 있고 다음 교육 문제를 진행하려면 LUKS 헤더를 찾아야 한다는 메시지가 표시됩니다.

질문과 함께 제공된 정보에 따르면 헤더는 매직 넘버(16진수) 4c554b53babe를 사용하여 식별할 수 있으며, 현재 내 전체 장치에서 이 숫자를 검색하고 있습니다.

이런 이유로 나는 다음부터 시작한다.

xxd -g0 -c 32 /mnt/luksTraining/training001.dd | grep -C 1 4c554b53babe

그러나 이것은 제목이 두 줄로 나누어지지 않은 경우에만 작동한다는 것을 깨달았습니다. 예를 들어, 제목의 첫 번째 절반은 줄 맨 끝에 있고 나머지 절반은 다음 줄에 있습니다.

특정 파일 헤더를 검색하는 "스마트한" 방법이 있습니까?

답변1

특정 파일 헤더를 검색하는 "스마트한" 방법이 있습니까?

xxd기본적으로 특정 바이트 문자열을 검색하므로 출력 보다는 이진 데이터를 직접 검색하는 것이 좋습니다 . 이는 거짓 긍정(및 잠재적으로 거짓 부정)을 생성할 수 있습니다. 예:

grep -oba "$(printf '\x4c\x55\x4b\x53\xba\xbe')" /mnt/luksTraining/training001.dd

위의 내용은 주어진 바이트 문자열이 있는 training001.dd에 바이트 오프셋을 출력합니다.

바이트 문자열을 그레이핑하는 더 많은 방법은 다음을 참조하세요.이 스택 오버플로 질문.

답변2

일부 기발한 아이디어는 곧 나오지 않을 것입니다.

  • 장치를 바이너리 파일로 열고 정규식을 사용합니다(예: Python 사용).
  • xxd쉘 루프를 사용하여 출력을 반복하고 -len-seek옵션을 사용하여 검색 시작 지점을 각 바이트로 변경합니다.

관련 정보