Nhận diện loại tệp

Phần mở rộng của tệp chỉ là một nhãn — đổi tên virus.exe thành photo.jpg không làm thay đổi gì bên trong. Trang này đọc các byte đầu của từng tệp đã tải lên và đối chiếu với hơn 60 chữ ký nhận dạng thực: ảnh, tài liệu, kho nén, âm thanh/video, phông chữ, tệp thực thi, cơ sở dữ liệu và khóa. Bạn sẽ nhận được loại đã nhận diện, kiểu MIME, các phần mở rộng thường dùng cho loại đó, cảnh báo khi phần mở rộng mâu thuẫn với nội dung, và các thông tin mà định dạng có lưu (kích thước ảnh, phiên bản PDF, nhãn brand MP4). Mọi thứ được kiểm tra cục bộ trong trình duyệt của bạn.
Thả tệp vào đây, hoặc nhấn để chọn
Một tệp hoặc nhiều tệp. Chỉ đọc 512 byte đầu của mỗi tệp; các tệp không bao giờ rời khỏi máy này.
Chưa chọn tệp nào.
Bảng nhận dạng sẽ hiển thị ở đây sau khi bạn chọn tệp và nhấn Nhận dạng.
“Khớp” nghĩa là gì: khớp — phần mở rộng trùng với định dạng nhận diện được; không khớp — nội dung là một định dạng khác với phần mở rộng khai báo (tệp bị đổi tên, hoặc tệ hơn); “không có chữ ký” — các byte đầu không khớp với chữ ký nào đã biết, điều này bình thường với văn bản thuần, CSV và đa số định dạng dữ liệu không có tiêu đề. Quyền riêng tư: tệp được đọc bằng FileReader của chính trình duyệt; không có gì được tải lên.

Chữ ký tệp là gì?

Hầu hết mọi định dạng nhị phân đều bắt đầu bằng một chuỗi byte cố định — số nhận dạng (magic number) — được đặt ở đó để chương trình nhận ra tệp của chính nó mà không cần tin vào tên. Một PNG luôn bắt đầu bằng tám byte 89 50 4E 47 0D 0A 1A 0A (“\x89PNG\r\n\x1a\n”), một PDF bắt đầu bằng văn bản ASCII %PDF, một ZIP bắt đầu bằng PK\x03\x04 (chữ cái đầu của Phil Katz, người thiết kế định dạng này). Hệ điều hành phần lớn bỏ qua các byte này và nhìn vào phần mở rộng thay thế — đó chính là lý do một tệp bị đổi tên không “mở được” ở đâu cả, và vì sao các công cụ bảo mật phải dò nội dung.

Những byte đầu nổi tiếng

ByteĐịnh dạngGhi chú
89 50 4E 47 0D 0A 1A 0AẢnh PNG\r\n bảo vệ khỏi lỗi ký tự xuống dòng
FF D8 FFẢnh JPEGmỗi khung JPEG bắt đầu bằng một dấu SOI
25 50 44 46 2DTài liệu PDF“%PDF-1.7” — số phiên bản theo sau
50 4B 03 04Kho nén ZIPdocx/xlsx/odt/epub thực chất là ZIP khoác một phần mở rộng khác
D0 CF 11 E0Office đời cũdoc/xls/ppt/msi — tệp tổng hợp OLE2
4D 5AEXE Windows“MZ”, theo tên Mark Zbikowski của Microsoft
7F 45 4C 46ELF Linux\x7fELF — chương trình và thư viện dùng chung
1A 45 DF A3Matroska/WebMĐầu vùng chứa EBML
75 73 74 61 72 tại vị trí 257Kho nén TARchữ ký nằm sâu trong phần tiêu đề

Bộ nhận dạng quyết định thế nào

512 byte đầu của mỗi tệp được so với bảng chữ ký theo thứ tự độ đặc trưng: các vùng chứa có nhãn (RIFF…WAVE so với RIFF…AVI so với RIFF…WEBP, các hộp nhãn ISO tại vị trí 8) được kiểm tra trước các vùng chứa chung chung, và các định dạng dựa trên ZIP (EPUB, ODF, OOXML) được kiểm tra trước ZIP thuần. Khi một định dạng có siêu dữ liệu tự mô tả, trang đào sâu thêm một cấp: kích thước PNG/GIF/BMP/JPEG/WebP được đọc từ tiêu đề của chúng, phiên bản PDF từ byte thứ 5, nhãn brand MP4 và phiên bản lớp Java từ các vị trí chuẩn của chúng. Tệp không khớp gì sẽ được qua bước heuristic văn bản (BOM, <?xml, <html, shebang, tỷ lệ ký tự in được) trước khi bị gọi là không xác định.

Những lỗi thường gặp

“Nó ghi là ZIP nhưng tệp là .docx” — điều đó đúng: một .docx là một kho ZIP mà mục đầu tiên là [Content_Types].xml; bộ nhận dạng nhận ra trường hợp này và báo đích danh Office Open XML. “Nó ghi là không có chữ ký nhưng tệp mở bình thường” — CSV, phần lớn mã nguồn và vô số định dạng khoa học không có byte nhận dạng nào; “không có chữ ký” không phải là lời buộc tội. “Nó có cho tôi biết tệp có an toàn không?” — không. Việc dò nội dung cho biết tệp là gì, không phải nó làm gì; một tệp EXE vẫn là EXE dù nó là trình cài đặt hay mã độc.

Câu hỏi thường gặp

Vì sao chỉ 512 byte? — mọi chữ ký được hỗ trợ đều nằm trong 512 byte đầu (chữ ký sâu nhất là ustar của TAR ở vị trí 257); đọc nhiều hơn sẽ làm chậm các lô lớn mà chẳng được gì.
Có nhận biết thời lượng video không? — không, chỉ nhận biết vùng chứa và nhãn brand của nó; tính thời lượng cần phân tích toàn bộ chỉ mục, là việc của trình phát.
Nhiều tệp cùng lúc? — có, kéo cả một lựa chọn vào; mỗi dòng được nhận dạng độc lập.
Trang liên quan: để đi theo chiều ngược lại — từ phần mở rộng sang kiểu MIME — dùng Tra cứu kiểu MIME; để băm các tệp đó, dùng Băm tệp hàng loạt.