확장자를 열 수 없을 때 조사하는 방법을 몰라요.

개시하다


여러분은 평소에 업무 중에 이런 경험이 있으신가요?
?? "이 파일을 손 옆에서 열어 주시겠습니까?"
나: "이 youknowme라는 파일 괜찮아요?"
スクリーンショット 2021-01-29 9.26.52.png
나: "열어봐~"
スクリーンショット 2021-01-29 9.27.06.png
나: 그저께
받은 (다운받은) 파일이 열리지 않는 일은 경험이 많죠.
대부분의 경우 파일 이름에 확장자가 없기 때문에 적당한 방식으로 열 수 없을 때 표시됩니다.
확장자가 있는 파일을 열 수 없을 경우
적절한 디스플레이에 사용할 수 있는 소프트웨어를 추가해서 대응할 수 있을 것 같아요.
이번과 같은 확장자가 없다면 조사를 위해서도 두서가 없어 곤란하다.
이럴 때 어떻게 열어야 하는지 기재하고 싶어요.

TL;DR


매직 번호 확인(형식 식별자)
적절한 확장자를 확인하고 확장자를 파일에 적절히 추가
파일을 열 적절한 방법을 선택합니다.
(appeendix) 마술 번호를 확인하지 않고 확장자를 단숨에 알고 싶으면 file 명령을 사용하십시오

해결책


확장자가 없는 파일을 전송하여 열 수 없는 경우
어떤 방법으로 원본이 어떤 격식으로 만들어졌는지
이번 설명의 확인 방법은 마술 번호(포맷 식별자)에 따라 판별하는 방법을 기재했다.

마술 번호?


파일의 데이터 중 일부는 마술 번호라고 불리며 자신이 어떤 파일인지 나타낸다.
파일 형식을 식별하는 데 사용되는 파일 본문의 특정 위치의 특정 수치
대부분의 경우, 마술 번호는 파일의 시작 몇 바이트에 기록되어 있다.
우리는 평소에 파일의 종류를 식별하는 방법으로 파일의 확장자와 속성을 확인하는 등의 조작을 생각했다
이를 사용할 수 없는 경우에도 확인할 수 있다.

매직 번호를 확인하는 방법


마술 번호를 알면 파일의 확장자를 확인할 수 있습니다
다음은 마술 번호를 확인하는 방법입니다.
파일의 본문에 있다고 하지만, 실제로 열어서 처음에 쓴 것은 아니다
파일의 바이너리 정보를 확인해야 합니다.
따라서 유닉스 명령의 xxd 명령을 이용하여 파일을 16진수로 표시하는 것이 좋습니다.
xxd 명령 자체는 파일이나 표준 입력에서 받은 내용을 16진수나 2진수로 저장하는 명령입니다.
$ xxd youknowme
00000000: 1f8b 0800 f75d fd5f 0003 edd3 3d4e c330  .....]._....=N.0
00000010: 1407 f04c 0c19 3981 4f50 de87 f39c 0c1d  ...L..9.OP......
00000020: 4cdd 8809 3180 c4c0 62a9 11ca 9020 25a9  L...1...b.... %.
00000030: 9a0d 5646 8ec1 7538 0147 c17c 4642 7429  ..VF..u8.G.|FBt)
00000040: ad2a 447e cbb3 5e3c fcad e87f e6fb 93c2  .*D~..^<........
00000050: 2f8a e6c8 d7ed aa68 265d df45 5b06 00a2  /......h&].E[...
00000060: b58a cc9b 61c2 0704 50c8 6145 4942 220a  ....a...P.aEIB".
00000070: 08d0 40a4 fa6d 07f9 c9b2 ed7c 13a2 ac7c  [email protected].....|...|
00000080: e76b df94 ebee 9dce 2fcf afdc 4de5 cb5a  .k....../...M..Z
00000090: 5db4 45d3 7efb fefe 14f5 35ff 0834 eaba  ].E.~.....5..4..
000000a0: 5c4c 19c5 0009 6471 582c c302 114d 46e1  \L....dqX,...MF.
000000b0: 9fc4 0caa eaca aa98 a220 68ce 3881 09b1  ......... h.8...
000000c0: 664c 8378 dff9 47bf b3bb d60f 3efb 7f17  fL.x..G.....>...
000000d0: ce07 8f4f f7af f3f0 f9f6 616d ffd1 3098  ...O......am..0.
000000e0: 48c1 ee22 0dfe 79ff 5367 0967 908a 7500  H.."..y.Sg.g..u.
000000f0: 2ecf 520b c4e4 00d1 ced1 e93c 9199 b0c9  ..R........<....
00000100: 0d38 c92c 9163 7b2c da60 4aa0 c525 96f7  .8.,.c{,.`J..%..
00000110: 9d7f 341a 8d46 9b79 01a1 c206 7e00 0c00  ..4..F.y....~...
00000120: 00
이럴 때 첫 번째1f8bマジックナンバー 1f8b 같은 방법으로 조사해 주면 무슨 문제가 생길까 해서요.
참고로 1f8b는 gzip이 압축한 데이터입니다.

다양한 확장자의 마술 번호


매직 번호 목록이 UNIX 시스템 OS인 경우 다음 디렉토리에 정의 파일이 있습니다.
/usr/share/file/magic
예를 들어 jpeg 파일을 열면0xffd8 확인할 수 있을 것 같아요.
이것은 jpeg의 마술 번호입니다.
다른 대표적인 것들도 다 모아서 적으신 분들이 있어요.
단숨에 확인하고 싶은 사람은 확인해 보세요.
마술 번호 요약
또한 배포/usr/share/file/magic마다 다른 파일 존재
릴리즈에 따라 모든 확장자가 지원되지 않을 수 있습니다.

(Appendix) file 명령을 통한 확인 방법


서류를 확인할 때 반드시 상술한 것처럼 이진법으로 판단해야 합니까?
사실은 그렇지 않다.
내부에서 상술한 일을 진행할 수 있는 매우 부드러운 지령이 있다.
그게 파일 명령이야.
file 명령은 파일을 매개 변수로
파일 내용을 보고 파일 형식을 표시하는 명령
file 명령으로 파일 내용을 볼 때
위에서 설명한 마술 번호로 그 서류가 무엇인지 판단하다.
$ file youknowme
youknowme: gzip compressed data, last modified: Tue Jan 12 08:29:43 2021, from Unix, original size modulo 2^32 3072
이렇게 간단하고 이해하기 쉬우면 file 명령만 가르쳐 주세요.
간혹 확장자가 있는 파일도
때때로 마술 번호는 다른 문제(CTF 등 문제 중 비교적 많다).
이 경우 파일의 마술 번호를 바꿉니다
나는 그래도 xxd 같은 확인 방법을 미리 아는 것이 좋다고 생각한다.

끝말


열 수 없는 파일의 대응 방법을 주제로 기술하는 동시에 실제 일부 파일 형식은
어떤 사람은 눈썹 (마술 번호) 을 표식자로 정의한다
나는 그곳에서 서류 양식을 확인할 수 있는 내용에 초점을 맞췄다.
의외로 알려지지 않은 마술 번호인 것 같아요.
알면 평소에 정말 미세한 고장 제거가 이루어져 무기가 늘어나 쉽게 해결될 수 있다.

좋은 웹페이지 즐겨찾기