Các bài kiểm tra ma thuật của Viking có ý nghĩa gì đối với lệnh tập tin?


20

Tôi đang đọc về filelệnh và tôi đã bắt gặp một điều mà tôi không hiểu lắm:

tệp được thiết kế để xác định loại tệp được truy vấn .... tệp thực hiện điều này bằng cách thực hiện ba bộ thử nghiệm trên tệp đang đề cập:

  • kiểm tra hệ thống tập tin,
  • kiểm tra ma thuật ,
  • kiểm tra ngôn ngữ

Bài kiểm tra ma thuật là gì?

Câu trả lời:


15

Điều đó đề cập đến "byte ma thuật" mà nhiều định dạng tệp có ở phần đầu của tệp cho biết đây là loại tệp nào.

Ví dụ, nếu một tập tin bắt đầu với #!nó thì nó được coi là một tập lệnh.


28

"ma thuật" ở đây đề cập đến " số ma thuật ": một giá trị đặc biệt ở một nơi đã biết trong một tệp xác định loại của nó. Các filelệnh có một cơ sở dữ liệu của những con số và những gì gõ chúng tương ứng với. Thư viện đi cùng với cơ sở dữ liệu đó được gọi là libmagic và bạn có thể truy cập nó từ các chương trình của riêng bạn.

Chúng không nhất thiết phải là "số" như chúng ta có thể nghĩ về chúng. Ví dụ: tệp hình ảnh PNG luôn bắt đầu bằng "\ x89PNG \ r \ n \ x1a \ n", một lớp Java bắt đầu bằng bốn byte (theo hệ thập lục phân) CA FE BA BE và một tệp HTML có "<html" ở đâu đó gần bắt đầu Đó chỉ là một chuỗi dữ liệu nhỏ được biết là nằm trong một tệp thuộc loại đó, thường rất gần với điểm bắt đầu.

Khi mọi người đang xác định định dạng tệp, họ thường bao gồm một trong những định dạng này trong đó một cách có chủ ý hoặc chỉ là một phần của việc làm cho định dạng khớp với nhau. filecó thể sử dụng chúng sau đó Nó cũng có những cách khác để thực sự nhìn vào nội dung của tệp để đoán nó là gì ("kiểm tra ngôn ngữ").


6
Lưu ý rằng ban đầu, "số ma thuật", cụ thể là hai byte đầu tiên của tệp thực thi, được sử dụng bởi kernel để tải nó theo cách thích hợp. #!thực sự là một ví dụ về điều này, bởi vì chính kernel, khi nhìn thấy các byte đó, được cho là sẽ gọi lệnh theo sau.
IMSoP
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.