확장자가 안 열릴 때 어떻게 해야 할지 모르겠어요.(마술 번호)

입문


여러분들은 평소에 업무 중에 이런 일을 겪은 적이 있나요?
?? "이 파일을 손 옆에서 열어 주시겠습니까?"
"여기 Youknowme 이 파일 괜찮아요?"

나: "내가 열어줄게."

나 "!?"
(다운로드) 받은 파일을 열 수 없는 경험이 많죠.
대부분의 경우 파일 이름에 확장자가 없기 때문에 적당한 방식으로 열 수 없을 때 표시됩니다.
확장자 파일을 열 수 없는 경우
나는 적당히 표시된 소프트웨어를 넣어서 대응할 수 있다고 생각한다
이번 같은 확장자가 부여되지 않았을 때 조사를 위해서도 별다른 어려움이 없을 것 같다.
이럴 때 어떻게 하면 열 수 있는지 기록하고 싶어요.

TL;DR


마술 번호 확인 (형식 식별자)
적절한 확장자를 확인하고 파일에 적절한 확장자를 추가합니다.
파일을 열 적절한 방법 선택
(appendix) 마술 번호를 확인하지 않고 확장자를 단숨에 알고 싶으면 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) 파일 명령 확인 방법


파일을 확인할 때 상기 2진법에서 판단해야 합니까?
이렇게 말하는 것은 사실 그렇지 않다.
내부에서 상술한 작업을 하라는 매우 부드러운 명령이 있다.
이것이 바로 파일 명령입니다.
파일 명령은 파일을 매개 변수로 한다
파일의 내용을 보고 이 파일의 파일 형식을 표시하는 명령
파일 명령으로 파일 내용을 볼 때
위에서 설명한 마술 번호를 보고 그 파일이 무엇인지 판단했습니다.
$ file youknowme
youknowme: gzip compressed data, last modified: Tue Jan 12 08:29:43 2021, from Unix, original size modulo 2^32 3072
이렇게 간단하고 알기 쉬우면 파일 명령만 알려주세요.
동적 입력 프롬프트에서 클릭
때때로 마술 번호는 다르다.
이런 상황에서 파일의 마술 번호를 고쳐야 하기 때문에
xxd 같은 확인 방법도 알고 있는 게 좋을 것 같습니다.

끝내다


열 수 없는 파일에 대한 대응 방법을 제목으로 기술하였으나, 실제로는 일부 파일 형식
표식자로 제목 정의 (마술 번호)
나는 초점 내용으로 그곳에서 파일을 확인할 수 있는 형식을 기술했다.
의외로 알려지지 않은 마술 번호라고 생각해요.
만약 알고 있다면 평소의 진정한 사소한 고장 제거로 무기가 조금 늘어나 쉽게 해결될 수 있을 것이다.

좋은 웹페이지 즐겨찾기