읽을 수없는 바이너리 콘텐츠가 포함되어 있다는 것을 알아 내기 위해 편집기에서 파일을 열려고 한 적이 있습니까?
Linux "strings"명령을 사용하면 모든 파일 내에서 사람이 읽을 수있는 문자를 볼 수 있습니다.
"strings"명령을 사용하는 주된 목적은보고있는 파일 유형을 파악하는 것이지만 텍스트를 추출하는 데 사용할 수도 있습니다. 예를 들어, 이상한 바이너리 형식으로 파일을 저장하는 독점 프로그램의 파일이있는 경우 "문자열"을 사용하여 파일에 넣은 텍스트를 추출 할 수 있습니다.
문자열 명령의 사용 예
strings 명령의 강력한 기능을 보여주는 가장 좋은 방법은 LibreOffice Writer를 사용하여 문서를 만드는 것입니다.
LibreOffice Writer를 열고 텍스트를 입력 한 다음 표준 ODT 형식으로 저장하기 만하면됩니다.
이제 터미널 창을 엽니 다 ( CTRL, ALT 및 T 동시에) 그런 다음 cat 명령을 사용하여 다음과 같이 파일을 표시합니다.
고양이 yourfi
(yourfilename.odt를 생성 한 파일의 이름으로 바꿉니다.)
당신이 보게 될 것은 읽을 수없는 텍스트의 벽 전체입니다.
스페이스 바를 눌러 파일을 스크롤합니다. 파일 전체에서 산발적으로 입력 한 텍스트 중 일부를 볼 수 있습니다.
strings 명령을 사용하여 사람이 읽을 수있는 부분 만 표시 할 수 있습니다.
가장 간단한 형식으로 다음 명령을 실행할 수 있습니다.
문자열 yourfi
이전과 마찬가지로 텍스트 벽이 표시되지만 사람이 읽을 수있는 텍스트 만 표시됩니다. 운이 좋으면 텍스트를 볼 수 있습니다.
그러나 이것이 핵심임을 알 수있는 것은 첫 번째 줄에 있습니다.
mimetypeapplication / vnd.oasis.
다음 두 가지 이유로 파일 형식이 LibreOffice Writer ODT 파일이라는 것을 알고 있습니다.
- 우리는 파일을 만들었습니다.
- 확장자는 .ODT입니다.
파일을 만들지 않았거나 복구 된 디스크에서 파일을 찾았는데 파일에 확장자가 없다고 가정 해보십시오.
Windows 복구는 종종 0001, 0002, 0003 등과 같은 이름을 가진 파일을 복구합니다. 파일이 복구되었다는 사실은 훌륭하지만 이러한 파일 유형이 무엇인지 알아 내려는 시도는 악몽이었습니다.
문자열을 사용하면 파일 유형을 알아낼 기회가 생깁니다. 파일이 opendocument.text 파일이라는 것을 알면 ODT 확장자로 저장하고 LibreOffice writer에서 열 수 있습니다.
ODT 파일이 기본적으로 압축 파일이라는 것을 알지 못하는 경우. yourfilename.odt의 이름을 yourfilename.zip으로 바꾸면 보관 도구에서 열고 파일의 압축을 풀 수도 있습니다.
대체 행동
기본적으로 strings 명령은 파일 내의 모든 문자열을 반환하지만 파일의 초기화되고로드 된 데이터 섹션에서 문자열을 반환하도록 동작을 전환 할 수 있습니다.
이것이 정확히 무엇을 의미합니까? 아무도 모르는 것 같습니다.
파일 유형을 찾거나 파일에서 특정 텍스트를 찾기 위해 문자열을 사용하고 있다고 가정하는 것이 좋습니다.
기본 동작을 사용하여 strings 명령을 실행할 때 원하는 출력을 얻지 못한 경우 다음 명령 중 하나를 실행하여 차이가 있는지 확인하십시오.
현
or
strings --data yourfilename
매뉴얼 페이지는 위의 명령이 문자열에서 반환되는 가비지 양을 줄이는 데 도움이 될 수 있다고 설명합니다.
"strings"명령은 마이너스 d 스위치가 기본 동작이되도록 반대로 작동하도록 설정할 수 있습니다. 이 경우 시스템에서 다음 명령을 사용하여 모든 데이터를 반환 할 수 있습니다.
현
출력 포맷
출력 내에서 텍스트를 가져와 각 텍스트 줄과 함께 파일 이름을 표시 할 수 있습니다.
이렇게하려면 다음 명령 중 하나를 실행하십시오.
현
or
문자열 --print-file-name yourfilename
이제 출력은 다음과 같습니다.
yourfilename : 텍스트 조각
or
yourfilename : 다른 텍스트
출력의 일부로 파일에서 해당 텍스트가 나타나는 위치의 오프셋을 표시 할 수도 있습니다. 이렇게하려면 다음 명령을 실행하십시오.
현
출력은 다음과 같습니다.
오프셋은 실제로 XNUMX 진 오프셋이지만 시스템에 대해 문자열이 컴파일 된 방법에 따라 쉽게 XNUMX 진수 또는 XNUMX 진수 오프셋이 될 수도 있습니다.
원하는 오프셋을 얻는보다 정확한 방법은 다음 명령을 사용하는 것입니다.
문자열 -td yourfilename
문자열 -to yourfilename
문자열 -th yourfilename
마이너스 t는 오프셋 반환을 의미하고 뒤에 오는 문자는 오프셋 유형을 결정합니다. (즉, d = 십진수, o = XNUMX 진수, h = XNUMX 진수).
기본적으로 strings 명령은 새 줄에 각각의 새 문자열을 인쇄하지만 원하는 구분 기호를 설정할 수 있습니다. 예를 들어 파이프 기호 ( "|")를 구분 기호로 사용하려면 다음 명령을 실행합니다.
문자열 -s "| &
문자열 제한 조정
strings 명령은 기본적으로 행에서 인쇄 가능한 4 개의 문자열을 찾습니다. 8 개의 인쇄 가능한 문자 또는 12 개의 인쇄 가능한 문자가있는 문자열 만 반환하도록 기본값을 조정할 수 있습니다.
이 제한을 조정하면 최상의 결과를 얻을 수 있도록 출력을 조정할 수 있습니다. 너무 긴 문자열을 찾으면 유용한 텍스트가 누락 될 위험이 있지만 너무 짧게 만들면 훨씬 더 많은 정크가 반환 될 수 있습니다.
문자열 제한을 조정하려면 다음 명령을 실행하십시오.
문자열
위의 예에서는 제한을 8로 변경했습니다. 8을 원하는 수로 바꿀 수 있습니다.
다음 명령을 사용하여 동일한 작업을 수행 할 수도 있습니다.
문자열-바이트 & #
공백 포함
기본적으로 strings 명령은 탭과 같은 공백이나 인쇄 가능한 문자로 공백을 포함합니다. 따라서 "the cat sat on the mat"로 읽는 문자열이있는 경우 strings 명령은 전체 텍스트를 반환합니다.
줄 바꾸기 문자와 캐리지 리턴은 기본적으로 인쇄 가능한 문자로 간주되지 않습니다.
줄 바꾸기 문자와 캐리지 리턴을 인쇄 가능한 문자로 인식하는 문자열을 얻으려면 다음과 같은 방법으로 문자열을 실행합니다.
현
인코딩 변경
문자열에 사용할 수있는 5 가지 인코딩 옵션이 있습니다.
- s = 7 비트 바이트 (ASCII, ISO 8859에 사용됨)
- S = 8 비트 바이트
- b = 16 비트 비겐 디안
- l = 16 비트 리틀 엔디안
기본값은 7 비트 바이트입니다.
인코딩을 변경하려면 다음 명령을 실행하십시오.
문자열 -es yourfilename
문자열 --encoding = s yourfilename
위의 명령에서 7 비트 바이트를 의미하는 기본 "s"를 지정했습니다. "s"를 원하는 인코딩 문자로 바꾸십시오.
이진 파일 설명 이름 변경
시스템에 제공된 것과 다른 이진 파일 설명자 라이브러리를 사용하도록 문자열의 동작을 변경할 수 있습니다.
이 스위치는 전문가를위한 것입니다. 사용할 다른 라이브러리가있는 경우 다음 strings 명령을 실행하여 수행 할 수 있습니다.
st
파일에서 옵션 읽기
매번 동일한 옵션을 사용하려는 경우 시간이 걸리기 때문에 명령을 실행할 때마다 모든 스위치를 지정하지 않아도됩니다.
할 수있는 일은 nano를 사용하여 텍스트 파일을 만들고 해당 파일 내에서 옵션을 지정하는 것입니다.
터미널 내에서이를 시도하려면 다음 명령을 실행하십시오.
파일에 다음 텍스트를 입력하십시오.
-f -o -n
CTRL과 O를 눌러 파일을 저장하고 CTRL과 X를 눌러 종료합니다.
이러한 옵션으로 문자열 명령을 실행하려면 다음 명령을 실행하십시오.
문자열 @strings
옵션은 파일 stringsopts에서 읽 히며 각 문자열 앞에 파일 이름, 오프셋 및 "|"가 표시되어야합니다. 구분자로.
도움말 얻기
문자열에 대해 자세히 알아 보려면 다음 명령을 실행하여 도움을받을 수 있습니다.
또는 매뉴얼 페이지를 읽을 수도 있습니다.
실행중인 문자열 버전 확인
실행중인 문자열의 버전을 찾으려면 다음 명령 중 하나를 실행하십시오.
문자열 -v
문자열 -V
문자열 --version