Thêm game tại WuGames.ioTài trợKhám phá kho game trình duyệt miễn phí — chơi ngay, không tải, không đăng ký.Chơi ngay

Nhận dạng Loại File

Nhận dạng loại file thật bằng magic number, không dựa vào phần mở rộng. Phát hiện extension giả, MIME không khớp và file thực thi giả dạng hình ảnh.

Upload
Kéo thả file vào đây
hoặc nhấp để duyệt
Chọn file để nhận dạng loại

Về công cụ nhận dạng Loại File

Công cụ này phát hiện loại file thực tế bằng cách phân tích magic bytes (chữ ký file) thay vì dựa vào phần mở rộng file. Tải lên bất kỳ file nào để khám phá MIME type thực sự và phần mở rộng được khuyến nghị. Hữu ích để xác minh tính xác thực file, phát hiện file đã đổi tên, hoặc nhận dạng file không rõ. Tất cả quá trình xử lý diễn ra trên trình duyệt của bạn để đảm bảo riêng tư hoàn toàn.

Trình phát hiện loại tệp hoạt động thế nào mà không cần phần mở rộng?

Các trình phát hiện loại tệp thực sự đọc vài byte đầu tiên của tệp — gọi là số magic hoặc chữ ký tệp — thay vì tin vào phần mở rộng. Hầu hết định dạng nhị phân bắt đầu bằng mẫu byte duy nhất: PNG bắt đầu với 89 50 4E 47 0D 0A 1A 0A, JPEG với FF D8 FF, PDF với 25 50 44 46 (là ASCII của %PDF), và ZIP với 50 4B 03 04 (PK cộng byte phiên bản). Trình phát hiện so sánh các byte này với cơ sở dữ liệu chữ ký đã biết và trả về kết quả khớp nhất. Cách tiếp cận này đáng tin cậy hơn nhiều so với phát hiện dựa trên phần mở rộng vì người dùng có thể đổi tên tệp.exe thành tệp.txt, nhưng không thể dễ dàng thay đổi byte magic nhúng bên trong mà không làm hỏng tệp. Kỹ thuật này được ghi trong các tiêu chuẩn như RFC 2046 (MIME) và là nền tảng cho công cụ như lệnh file(1) của Unix.

Tại sao tệp của tôi có phần mở rộng sai nhưng vẫn mở đúng?

Ứng dụng hiện đại thường bỏ qua phần mở rộng và xem xét nội dung thực tế. Khi bạn nhấp đúp vào tệp, hệ điều hành dùng phần mở rộng làm phỏng đoán đầu tiên để chọn ứng dụng, nhưng bản thân ứng dụng đọc byte magic để quyết định cách phân tích nội dung. Vì vậy một JPEG được đổi tên thành ảnh.png vẫn mở được trong mọi trình xem ảnh vì trình xem phát hiện tiêu đề JPEG FF D8 FF và chuyển trình phân tích tương ứng. Phần mở rộng chủ yếu quan trọng cho lớp liên kết tệp của hệ điều hành và cho người dùng duyệt thư mục. Đây cũng là lý do tệp đính kèm .pdf độc hại có thể thực sự là .exe — hệ điều hành có thể khởi chạy trình đọc PDF mong đợi nội dung PDF hợp lệ, nhưng nếu Windows được cấu hình ẩn phần mở rộng và tệp thực sự là hóa_đơn.pdf.exe, nó có thể thực thi như mã.

Loại MIME là gì và liên quan thế nào đến loại tệp?

Loại MIME (Multipurpose Internet Mail Extensions, định nghĩa trong RFC 2045–2049 và đăng ký qua RFC 6838) là các chuỗi chuẩn hóa như image/png, application/pdf, hoặc text/html mô tả định dạng tệp để dùng trong tiêu đề HTTP, tệp đính kèm email và API web. Mỗi loại MIME có một danh mục cấp cao nhất (text, image, audio, video, application, multipart, message, model, font) và một loại con. Các trình phát hiện loại tệp thường trả về cả tên định dạng dễ đọc lẫn loại MIME để kết quả có thể được dùng trực tiếp trong mã: đặt tiêu đề Content-Type trên phản hồi web, chọn biểu tượng tệp, hoặc định tuyến tệp đến bộ xử lý đúng. IANA duy trì sổ đăng ký chính thức các loại MIME — hơn 2000 loại được đăng ký nhưng chỉ vài trăm thông dụng trong thực tế.

Khi nào tôi nên phát hiện loại tệp thay vì tin vào phần mở rộng?

Luôn phát hiện theo nội dung khi xử lý tải lên của người dùng, xử lý tệp đính kèm email, quét malware, hoặc xây dựng bất kỳ hệ thống nào mà bảo mật quan trọng. Phần mở rộng là siêu dữ liệu do người dùng kiểm soát và có thể sai do tai nạn (Windows ẩn phần mở rộng theo mặc định, nên người dùng đổi tên tùy ý) hoặc do ý đồ xấu (kẻ tấn công ngụy trang tệp thực thi thành ảnh hoặc tài liệu). Chỉ phát hiện theo phần mở rộng cho gợi ý UI ít rủi ro — chọn biểu tượng trong trình duyệt tệp, sắp xếp thư mục, hoặc đoán ứng dụng khởi đầu. Ứng dụng web tải lên nội dung người dùng nên từ chối tệp có MIME phát hiện không khớp với phần mở rộng được khai báo, hoặc lưu loại đã phát hiện và phục vụ tệp với tiêu đề Content-Type và Content-Disposition đúng.

Loại tệp nào khó phát hiện chính xác nhất?

Các định dạng văn bản thuần có chữ ký yếu nhất vì chúng chủ yếu gồm ký tự ASCII không có tiêu đề cố định. Phân biệt giữa CSV, TSV, JSON, YAML, XML, Markdown và mã nguồn thường đòi hỏi phân tích thống kê hoặc dò lược đồ — kiểm tra dấu phân cách phổ biến, dấu ngoặc cân bằng, hoặc quy tắc thụt đầu dòng của YAML. Tệp UTF-8 có thể bắt đầu bằng Byte Order Mark (EF BB BF) nhưng tùy chọn. Các định dạng vùng chứa như ZIP, OOXML (.docx, .xlsx), JAR và EPUB đều chia sẻ cùng chữ ký PK vì OOXML và tương tự về kỹ thuật là kho lưu trữ ZIP có bố cục bên trong cụ thể. Trình phát hiện phải đọc thư mục trung tâm của ZIP để tìm tệp như [Content_Types].xml hoặc META-INF/MANIFEST.MF để tinh chỉnh phân loại. Tệp được mã hóa, theo thiết kế, trông như nhiễu ngẫu nhiên.

Nhận dạng Loại File — Nhận dạng loại file thật bằng magic number, không dựa vào phần mở rộng. Phát hiện extension giả, MIME không khớp và file
Nhận dạng Loại File

Một tệp có thể có nhiều loại tệp hợp lệ hoặc là một tệp lai không?

Có — tệp polyglot được chế tác có chủ ý để hợp lệ trong hai hoặc nhiều định dạng cùng lúc. Ví dụ cổ điển là GIFAR (GIF+JAR), một tệp tải dưới dạng ảnh trong trình duyệt nhưng thực thi dưới dạng kho lưu trữ Java trong JVM, được dùng trong các cuộc tấn công web đầu tiên. Polyglot PDF/JPEG và PDF/ZIP cũng tồn tại vì PDF dung nạp dữ liệu thừa ở cuối trong khi ZIP quét ngược từ cuối tệp. Đây không phải lỗi trong bất kỳ định dạng riêng lẻ nào mà là khai thác sự dung nạp trùng lặp của trình phân tích. Ngoài polyglot, các định dạng vùng chứa như Matroska (MKV) và ISO BMFF (MP4) có thể chứa nhiều codec, nên loại tệp chỉ thu hẹp lớp bọc — luồng âm thanh và video thực tế đòi hỏi kiểm tra sâu hơn.

MIME sniffing trong trình duyệt chính xác đến đâu, và rủi ro bảo mật là gì?

Trình duyệt trong lịch sử thực hiện MIME sniffing tích cực — ghi đè tiêu đề Content-Type của máy chủ bằng cách kiểm tra vài trăm byte đầu của phản hồi. Điều này hữu ích khi máy chủ cấu hình tiêu đề sai nhưng trở thành thảm họa bảo mật: tệp HTML phục vụ với image/png vẫn có thể được hiểu là HTML và thực thi script, cho phép tấn công chèn nội dung. Giải pháp là tiêu đề phản hồi X-Content-Type-Options: nosniff (định nghĩa trong tiêu chuẩn WHATWG fetch), buộc trình duyệt tôn trọng Content-Type được khai báo. Trình duyệt hiện đại cũng hạn chế sniffing trong nhiều ngữ cảnh. Trình phát hiện loại tệp phía máy chủ bổ sung điều này bằng cách đảm bảo nội dung tải lên thực sự khớp với loại được khai báo trước khi lưu trữ, ngăn người dùng tải HTML ngụy trang thành PNG và lừa người dùng khác chạy nó.

Sự khác biệt giữa định dạng tệp, vùng chứa và codec là gì?

Định dạng tệp là bố cục trên đĩa (thứ tự byte, tiêu đề, phần siêu dữ liệu, vị trí tải trọng). Vùng chứa là một loại định dạng cụ thể được thiết kế để bao bọc các luồng dữ liệu đa phương tiện mà không quy định cách mã hóa các luồng đó — ví dụ gồm MP4, MKV, OGG, WebM và AVI. Codec là thuật toán nén và giải nén các mẫu âm thanh hoặc video thực bên trong vùng chứa — ví dụ gồm H.264, H.265, VP9, AV1 cho video và AAC, MP3, Opus, FLAC cho âm thanh. Cùng một vùng chứa có thể chứa nhiều codec, và cùng một codec có thể nằm trong nhiều vùng chứa. Phát hiện loại tệp nhận dạng vùng chứa đáng tin cậy từ byte magic nhưng thường cần phân tích siêu dữ liệu bên trong (atom moov trong MP4, đầu EBML trong MKV) để liệt kê các codec và bản nhạc bên trong.

Những loại file giả dạng nào thực sự nguy hiểm, và làm sao phân biệt sai lệch vô hại với mối đe dọa thật?

Không phải sai lệch nào cũng là tấn công. Một ảnh lưu thành photo.jpeg trong khi thư viện gọi là jpg, hoặc trình duyệt báo image/jpg thay vì image/jpeg, chỉ là biến thể tên gọi vô hại - công cụ này xếp chúng là AN TOÀN vì phần mở rộng và MIME đều là bí danh hợp lệ của loại thật. KHÔNG KHỚP thực sự (màu cam) nghĩa là phần mở rộng sai, nhưng nội dung thật vẫn là định dạng dữ liệu thụ động, như một PNG lưu với tên .jpg: gây phiền nhưng hiếm khi nguy hiểm. Mẫu nguy hiểm là RỦI RO CAO (màu đỏ): magic bytes hé lộ một file thực thi hoặc nội dung hoạt động - file PE/EXE của Windows (MZ, hex 4D 5A), file ELF của Linux (hex 7F 45 4C 46), nhị phân Mach-O, script shell hoặc batch, file JAR, hoặc mô-đun WebAssembly - trong khi file lại đeo phần mở rộng thụ động như .jpg, .pdf, .png hay .docx. Đó chính là chiêu giả dạng mã độc kinh điển qua tải lên và email mà OWASP cảnh báo: nạn nhân tin vào biểu tượng ảnh hoặc tài liệu rồi chạy phải mã độc. Khi thấy RỦI RO CAO, đừng mở file; hãy cách ly và kiểm tra trong môi trường sandbox. File ZIP và HTML ẩn dưới phần mở rộng ảnh hoặc tài liệu cũng đáng nghi ngờ tương tự vì chúng có thể chứa script hoặc kích hoạt tấn công MIME sniffing.

Các giá trị chữ ký magic byte ở dạng hex có nghĩa là gì?

Trường Chữ ký Magic Byte hiển thị 16 byte đầu của file ở dạng thập lục phân (hex) - chính phần header thô mà lệnh file(1) của Unix và các phần mềm diệt virus đọc để nhận dạng nội dung. Mỗi cặp (hai chữ số hex, 00–FF) là một byte. Các định dạng đã biết bắt đầu bằng mẫu cố định mà bạn có thể đối chiếu bằng mắt với bảng tham chiếu chữ ký: JPEG là FF D8 FF, PNG là 89 50 4E 47 0D 0A 1A 0A, PDF là 25 50 44 46 (ASCII %PDF), GIF là 47 49 46 38 (GIF8), ZIP và file Office là 50 4B 03 04 (PK..), file thực thi Windows là 4D 5A (MZ), và nhị phân ELF là 7F 45 4C 46. Nếu một file tên image.jpg hiển thị 4D 5A thay vì FF D8 FF, riêng phần hex đã chứng minh nó thật ra là file thực thi. Đọc header bằng mắt là thực hành chuẩn trong ứng phó sự cố, giúp bạn xác nhận phán quyết của công cụ và phân loại các định dạng hiếm mà thư viện không nhận ra.