Ανιχνευτής τύπου αρχείου

Η επέκταση ενός αρχείου είναι απλώς ετικέτα — η μετονομασία του virus.exe σε photo.jpg δεν αλλάζει τίποτα μέσα του. Αυτή η σελίδα διαβάζει τα πρώτα byte κάθε μεταφορτωμένου αρχείου και τα συγκρίνει με περισσότερες από 60 πραγματικές υπογραφές μαγικών αριθμών: εικόνες, έγγραφα, αρχεία συμπίεσης, ήχος/βίντεο, γραμματοσειρές, εκτελέσιμα, βάσεις δεδομένων και κλειδιά. Λαμβάνεται ο ανιχνευμένος τύπος, ο τύπος MIME, οι επεκτάσεις που συνήθως χρησιμοποιεί ο τύπος, μια προειδοποίηση όταν η επέκταση έρχεται σε αντίφαση με το περιεχόμενο, και όπου η μορφή το μεταφέρει (διαστάσεις εικόνας, έκδοση PDF, brand MP4). Ο έλεγχος γίνεται τοπικά στο πρόγραμμα περιήγησης.
Απόθεση εδώ αρχείωνή κλικ για επιλογή τους
Ένα αρχείο ή πολλά. Διαβάζονται μόνο τα πρώτα 512 byte του καθενός· τα αρχεία δεν φεύγουν ποτέ από αυτόν τον υπολογιστή.
Δεν έχουν επιλεγεί αρχεία.
Ο πίνακας ανίχνευσης εμφανίζεται εδώ μετά την επιλογή αρχείων και το πάτημα της Ανίχνευσης.
Τι σημαίνει “ταίριασμα”: συμβατό — η επέκταση συμφωνεί με τη μορφή που ανιχνεύτηκε· ασυμφωνία — το περιεχόμενο είναι διαφορετική μορφή από αυτή που δηλώνει η επέκταση (μετονομασμένο αρχείο, ή χειρότερα)· “καμία υπογραφή” — τα πρώτα byte δεν ταιριάζουν με καμία γνωστή υπογραφή, κάτι φυσιολογικό για απλό κείμενο, CSV και τα περισσότερα μορφότυπα δεδομένων που απλώς δεν έχουν κεφαλίδα. Απόρρητο: τα αρχεία διαβάζονται με το δικό του FileReader του προγράμματος περιήγησης· τίποτα δεν μεταφορτώνεται.

Τι είναι η υπογραφή αρχείου;

Σχεδόν κάθε δυαδική μορφή ξεκινά με μια σταθερή ακολουθία byte — τον μαγικό αριθμό — που τοποθετείται εκεί ώστε ένα πρόγραμμα να αναγνωρίζει τα δικά του αρχεία χωρίς να εμπιστεύεται το όνομα. Ένα PNG ξεκινά πάντα με τα οκτώ byte 89 50 4E 47 0D 0A 1A 0A (“\x89PNG\r\n\x1a\n”), ένα PDF με το ASCII κείμενο %PDF, ένα ZIP με PK\x03\x04 (τα αρχικά του Phil Katz, που σχεδίασε τη μορφή). Τα λειτουργικά συστήματα συνήθως αγνοούν αυτά τα byte και κοιτούν την επέκταση — γι' αυτό ένα μετονομασμένο αρχείο “ανοίγει κανονικά” πουθενά, και γι' αυτό τα εργαλεία ασφαλείας ελέγχουν το περιεχόμενο.

Γνωστά πρώτα byte

ByteΜορφήΣημείωση
89 50 4E 47 0D 0A 1A 0AΕικόνα PNGτο \r\n προστατεύει από καταστροφή τέλους γραμμής
FF D8 FFΕικόνα JPEGκάθε καρέ JPEG ξεκινά με δείκτη SOI
25 50 44 46 2DΈγγραφο PDF“%PDF-1.7” — ακολουθεί η έκδοση
50 4B 03 04Αρχείο ZIPdocx/xlsx/odt/epub είναι ZIP με επέκταση
D0 CF 11 E0Παλαιό Officedoc/xls/ppt/msi — το σύνθετο αρχείο OLE2
4D 5AWindows EXE“MZ”, από τον Mark Zbikowski της Microsoft
7F 45 4C 46Linux ELF\x7fELF — προγράμματα και κοινόχρηστες βιβλιοθήκες
1A 45 DF A3Matroska/WebMαρχή δοχείου EBML
75 73 74 61 72 στη θέση 257Αρχείο TARη υπογραφή κρύβεται βαθιά στην κεφαλίδα

Πώς αποφασίζει ο ανιχνευτής

Τα πρώτα 512 byte κάθε αρχείου συγκρίνονται με έναν πίνακα υπογραφών με σειρά εξειδίκευσης: τα brand δοχείων (RIFF…WAVE έναντι RIFF…AVI έναντι RIFF…WEBP, πλαίσια brand ISO στη θέση 8) ελέγχονται πριν από τα γενικά δοχεία τους, και οι μορφές βασισμένες σε ZIP (EPUB, ODF, OOXML) πριν από το απλό ZIP. Όπου μια μορφή φέρει αυτοπεριγραφικά μεταδεδομένα, η σελίδα εξετάζει ένα επίπεδο βαθύτερα: οι διαστάσεις PNG/GIF/BMP/JPEG/WebP διαβάζονται από τις κεφαλίδες τους, η έκδοση PDF από το byte 5, το brand MP4 και η έκδοση κλάσης Java από τις τυπικές τους θέσεις. Τα αρχεία που δεν ταιριάζουν με τίποτα περνούν από ένα στάδιο ευρετικής ανίχνευσης κειμένου (BOM, <?xml, <html, shebang, αναλογία εκτυπώσιμων χαρακτήρων) πριν χαρακτηριστούν ως άγνωστα.

Συνηθισμένα λάθη

“Λέει ZIP αλλά το αρχείο είναι .docx” — αυτό είναι σωστό: ένα .docx είναι αρχείο ZIP του οποίου η πρώτη καταχώριση είναι το [Content_Types].xml· ο ανιχνευτής αναγνωρίζει αυτή την περίπτωση και αναφέρει συγκεκριμένα Office Open XML. “Λέει ότι δεν υπάρχει υπογραφή αλλά το αρχείο ανοίγει κανονικά” — το CSV, το περισσότερο πηγαίο κώδικας και αμέτρητες επιστημονικές μορφές δεν έχουν καθόλου μαγικά byte· το “καμία υπογραφή” δεν είναι κατηγορία. “Μπορεί να εκτιμηθεί αν το αρχείο είναι ασφαλές;” — όχι. Η ανίχνευση περιεχομένου λέει τι είναι ένα αρχείο, όχι τι κάνει· ένα EXE παραμένει EXE είτε είναι πρόγραμμα εγκατάστασης είτε κακόβουλο λογισμικό.

Συχνές ερωτήσεις

Γιατί μόνο 512 byte; — κάθε υποστηριζόμενη υπογραφή βρίσκεται μέσα στα πρώτα 512 byte (η πιο βαθιά είναι το ustar του TAR στη θέση 257)· η ανάγνωση περισσότερων θα επιβράδυνε μεγάλες παρτίδες χωρίς λόγο.
Ανιχνεύει τη διάρκεια βίντεο; — όχι, μόνο το δοχείο και το brand του· η διάρκεια απαιτεί ανάλυση ολόκληρου του ευρετηρίου, και αυτό είναι δουλειά του προγράμματος αναπαραγωγής.
Πολλά αρχεία μαζί; — ναι, σύρσιμο μιας ολόκληρης επιλογής· κάθε γραμμή ανιχνεύεται ανεξάρτητα.
Σχετική σελίδα: για την αντίστροφη κατεύθυνση — από επέκταση σε τύπο MIME — χρησιμοποιείται η Αναζήτηση τύπου MIME· για υπολογισμό hash των ίδιων αρχείων χρησιμοποιείται το Μαζικός υπολογισμός hash αρχείων.