Λεξικό

Τι είναι η ακατέργαστη κεφαλίδα αρχείου;

Η ακατέργαστη κεφαλίδα εμφανίζει τα πρώτα byte ενός αρχείου ως δεκαεξαδικούς αριθμούς. Αυτά τα byte αποκαλύπτουν τον πραγματικό τύπο αρχείου και μπορείτε να διαβάσετε πολλά από αυτά ως κείμενο.

raw-header

Το ακατέργαστο header είναι το πρώτο μέρος ενός αρχείου, εμφανισμένο byte προς byte αντί ως πεδία μεταδεδομένων με όνομα. Πολλές μορφές αρχείων ξεκινούν με ένα σταθερό μοτίβο bytes, που συχνά ονομάζεται υπογραφή ή magic number. Τα προγράμματα διαβάζουν αυτό το μοτίβο για να μάθουν τι είδους αρχείο είναι.

Σε μια αναφορά μεταδεδομένων, το πεδίο Raw Header εμφανίζει αυτά τα bytes ως δεκαεξαδικούς αριθμούς. Κάθε ζεύγος χαρακτήρων, όπως 89 ή FF, αντιστοιχεί σε 1 byte.

Ένα email έχει επίσης ένα τμήμα header στην αρχή, με πεδία όπως From, To και Subject. Αυτό το άρθρο καλύπτει το header ενός αρχείου.

Πώς φαίνεται η τιμή

Το δεκαεξαδικό σύστημα, ή βάση 16, γράφει κάθε byte ως 2 χαρακτήρες από τα ψηφία 0 έως 9 και τα γράμματα A έως F. Ένα byte μπορεί επομένως να έχει οποιαδήποτε τιμή από 00 έως FF.

Στον κώδικα χαρακτήρων ASCII, οι τιμές 21 έως 7E αντιστοιχούν σε γράμματα, ψηφία και σημεία στίξης και η τιμή 20 είναι ένα κενό. Τιμές κάτω από 20 είναι κωδικοί ελέγχου και η τιμή 00 είναι ο χαρακτήρας με όλα τα μηδενικά που ονομάζεται NUL.

Πώς να διαβάσετε μια ακατέργαστη κεφαλίδα ως κείμενο

Για να μετατρέψετε ένα ακατέργαστο header σε κείμενο, αναζητήστε κάθε byte σε έναν πίνακα ASCII. Μόνο bytes από 20 έως 7E αντιστοιχούν σε ορατό χαρακτήρα ASCII ή σε κενό. Τα άλλα bytes δεν αντιστοιχούν, επομένως συχνά μπορείτε να διαβάσετε μόνο μέρος ενός header.

  • Το 25 50 44 46 2D διαβάζεται ως το σύμβολο του ποσοστού, τα γράμματα PDF και μία παύλα.
  • Το 89 50 4E 47 περιέχει τα γράμματα PNG στα bytes 2 έως 4.

Τυπικές τιμές

Οι συνηθισμένες μορφές ξεκινούν με αυτές τις υπογραφές:

  • Εικόνα PNG: 89 50 4E 47 0D 0A 1A 0A
  • Εικόνα JPEG: FF D8 FF, όπου το FF D8 σηματοδοτεί την αρχή της εικόνας
  • Εικόνα GIF: 47 49 46 38, μετά 39 61 ή 37 61 (GIF89a ή GIF87a)
  • Έγγραφο PDF: 25 50 44 46 2D, μετά η έκδοση, όπως 1.7
  • Εικόνα TIFF, little-endian: 49 49 2A 00 (II, μετά ο αριθμός 42)
  • Εικόνα TIFF, big-endian: 4D 4D 00 2A (MM, μετά ο αριθμός 42)
  • Αρχείο ZIP και αρχεία Office που βασίζονται σε ZIP, όπως DOCX: 50 4B 03 04 (PK)
  • Ήχος MP3 με ετικέτα ID3v2: 49 44 33 (ID3)
  • Ήχος WAV: 52 49 46 46 (RIFF), 4 bytes που διαφέρουν, μετά 57 41 56 45 (WAVE)
  • Βίντεο MP4: ένα μέγεθος 4 bytes, μετά 66 74 79 70 (ftyp)

Σε ένα αρχείο TIFF, τα πρώτα 2 bytes ορίζουν επίσης τη σειρά bytes (byte order) για τους αριθμούς στο αρχείο. Σε ένα αρχείο PDF, οι χαρακτήρες μετά την υπογραφή δίνουν την έκδοση PDF, αλλά μια εγγραφή αργότερα στο αρχείο μπορεί να την παρακάμψει.

Ποια αρχεία το φέρουν

Κάθε αρχείο έχει ένα ακατέργαστο header, αλλά δεν έχει κάθε μορφή μια υπογραφή. Τα απλά αρχεία κειμένου ξεκινούν απευθείας με το κείμενό τους. Τα προγράμματα τα αναγνωρίζουν επειδή τα πρώτα τους bytes περιέχουν μόνο χαρακτήρες κειμένου.

Γιατί έχει σημασία

Η κατάληξη του ονόματος αρχείου είναι μόνο μέρος του ονόματος και οποιοσδήποτε μπορεί να την αλλάξει. Το header μπορεί να αποκαλύψει τον πραγματικό τύπο αρχείου και τον τύπο MIME ακόμη και όταν η κατάληξη είναι λάθος.

Ένας διακομιστής web μπορεί να μην στείλει τύπο MIME ή ένας browser μπορεί να θεωρήσει ότι ο τύπος που έλαβε είναι λάθος. Τότε ο browser μπορεί να συγκρίνει τα πρώτα bytes με έναν πίνακα γνωστών μοτίβων. Η εντολή Unix file αναζητά ένα magic number κοντά στην αρχή του αρχείου.

Ένα header σάς βοηθά επίσης να εντοπίζετε προβλήματα. Αν ένα αρχείο με όνομα photo.png δεν ξεκινά με 89 50 4E 47, δεν ακολουθεί τη μορφή PNG. Η αρχή του αρχείου μπορεί να είναι κατεστραμμένη ή το αρχείο μπορεί να είναι άλλου τύπου με λάθος κατάληξη.

Ένα header που αποτελείται μόνο από bytes 00 δεν ταιριάζει με καμία συνηθισμένη υπογραφή. Αλλά ένα αρχείο MP4 μπορεί να ξεκινά με 00, επειδή ένα μικρό μέγεθος στα πρώτα 4 bytes αρχίζει με μηδέν. Όταν δεν υπάρχει κανένα ταίριασμα και τα bytes δεν είναι κείμενο, οι browsers αντιμετωπίζουν το αρχείο ως application/octet-stream.

Meta Keys