"매직 테스트"는 파일 명령의 의미는 무엇입니까?


20

나는 file명령 에 대해 읽고 있었고 이해하지 못하는 것을 발견했습니다.

파일은 쿼리되는 파일의 종류를 결정하도록 설계되었습니다 .... 파일은 해당 파일에 대해 세 가지 테스트 세트를 수행하여이를 수행 합니다.

  • 파일 시스템 테스트
  • 마법 테스트,
  • 언어 테스트

마술 테스트 란 무엇입니까 ?

답변:


15

이것은 파일의 시작 부분에 많은 파일 형식이 어떤 종류의 파일인지를 나타내는 "매직 바이트"를 나타냅니다.

예를 들어 파일이 시작 #!하면 스크립트로 간주됩니다.


28

여기서 "매직"은 " 매직 넘버 "를 나타냅니다 . 파일에서 파일의 알려진 유형에 해당하는 특별한 값입니다. file명령은이 숫자의 데이터베이스를 가지고 있으며, 그들이에 해당하는 입력 한 내용. 해당 데이터베이스와 함께 제공되는 라이브러리는 libmagic 이며, 자신의 프로그램에서 액세스 할 수 있습니다.

우리가 생각할 수 있듯이 반드시 "숫자"인 것은 아닙니다. 예를 들어 PNG 이미지 파일은 항상 "\ x89PNG \ r \ n \ x1a \ n"으로 시작하고 Java 클래스는 4 바이트 (16 진) CA FE BA BE로 시작하며 HTML 파일의 어딘가에는 "< 시작 근처. 그것은 일반적으로 시작에 매우 가까운 해당 유형의 파일에있는 것으로 알려진 작은 일련의 데이터입니다.

사람들이 파일 형식을 정의 할 때 형식 중 하나를 의도적으로 또는 형식을 맞추기위한 일부로 포함하는 경우가 종종 있습니다. file나중에 사용할 수 있습니다. 또한 실제로 파일 내용을보고 파일 내용을 추측하는 다른 방법 ( "언어 테스트")이 있습니다.


6
원래 "마법 번호"는 구체적으로 커널이 파일을 적절한 방식으로로드하기 위해 사용하는 실행 파일의 처음 2 바이트입니다. #!커널 자체는 해당 바이트를보고 다음 명령을 호출해야하기 때문에 실제로 이것의 예입니다.
IMSoP 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.