Πώς να δημιουργήσετε ένα Hexdump ενός αρχείου ή μιας σειράς κειμένου

Εισαγωγή

Ένας hex burst είναι μια δεκαεξαδική προβολή των δεδομένων. Μπορεί να θέλετε να χρησιμοποιήσετε δεκαεξαδικό όταν σφαλίζετε ένα πρόγραμμα ή για να αναστρέψετε μηχανικά ένα πρόγραμμα.

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

Εάν θέλετε να δείτε πώς λειτουργεί ένα πρόγραμμα και δεν έχετε τον πηγαίο κώδικα ή το κομμάτι του λογισμικού που αναστρέφει τους μηχανικούς του κώδικα, μπορείτε να δείτε το hex burst για να προσπαθήσετε να εξηγήσετε τι συμβαίνει.

Τι είναι δεκαεξαδικό;

Υπολογιστές σκέφτονται σε δυαδικό . Κάθε χαρακτήρας, αριθμός και σύμβολο αναφέρονται από δυαδικές ή πολλαπλές δυαδικές τιμές.

Τα ανθρώπινα όντα, ωστόσο, τείνουν να σκέφτονται σε δεκαδικά ψηφία.

Χιλιάδες Εκατοντάδες Δεκάδες Μονάδες
1 0 1 1

Ως άνθρωποι, οι χαμηλότεροι αριθμοί μας ονομάζονται μονάδες και αντιπροσωπεύουν τους αριθμούς 0 έως 9. Όταν φτάσουμε στο 10 επαναφέρουμε τη στήλη των μονάδων πίσω στο 0 και προσθέτουμε 1 στη στήλη δεκάδων (10).

128 64 32 16 8 4 2 1
1 0 0 1 0 0 0 1

Στη δυαδική μορφή, ο μικρότερος αριθμός αντιπροσωπεύει μόνο το 0 και το 1. Όταν περάσουμε το 1, βάζουμε ένα 1 στη στήλη 2 και ένα στη στήλη 1. Όταν θέλετε να αναπαριστάτε 4, βάζετε 1 στη στήλη 4 και επαναφέρετε τη στήλη 2 και 1.

Ως εκ τούτου, για να αντιπροσωπεύετε 15, θα έχετε 1111 που αντιστοιχεί σε 1 οκτώ, 1 τετράμηνο, 1 σε δύο και 1 σε ένα. (8 + 4 + 2 + 1 = 15).

Εάν είδαμε ένα αρχείο δεδομένων σε δυαδική μορφή, θα ήταν απολύτως τεράστιο και πρακτικά αδύνατο να κατανοήσουμε.

Το επόμενο βήμα από το δυαδικό είναι οκταδικό, το οποίο χρησιμοποιεί ως αριθμό βάσης 8.

24 16 8 1
0 1 1 0

Σε ένα οκταδικό σύστημα η πρώτη στήλη πηγαίνει από 0 έως 7, η δεύτερη στήλη είναι 8 έως 15, η τρίτη στήλη 16 έως 23 και η τέταρτη στήλη 24 έως 31 και ούτω καθεξής. Ενώ είναι γενικά ευκολότερο να διαβαστεί από το δυαδικό, οι περισσότεροι προτιμούν να χρησιμοποιούν δεκαεξαδικό.

Το δεκαεξαδικό χρησιμοποιεί ως βασικό αριθμό 16. Τώρα αυτό γίνεται όπου προκαλεί σύγχυση, διότι ως άνθρωποι σκέφτομαι αριθμούς από το 0 έως το 9.

Έτσι τι χρησιμοποιείται για 10, 11, 12, 13, 14, 15; Η απάντηση είναι γράμματα.

Η τιμή 100 αντιπροσωπεύεται ως εκ τούτου από 64. Θα χρειαστείτε 6 από τη στήλη 16s που φέρνει 96 και στη συνέχεια 4 στη στήλη μονάδων κάνοντας 100.

Όλοι οι χαρακτήρες σε ένα αρχείο θα σημειωθούν με μια δεκαεξαδική τιμή. Τι σημαίνουν αυτές οι τιμές εξαρτάται από τη μορφή του ίδιου του αρχείου. Η μορφή του αρχείου δηλώνεται με δεκαεξαδικές τιμές οι οποίες συνήθως αποθηκεύονται στην αρχή του αρχείου.

Με γνώση της ακολουθίας των δεκαεξαδικών τιμών που εμφανίζονται στην αρχή των αρχείων, μπορείτε χειροκίνητα να υπολογίσετε σε ποια μορφή βρίσκεται το αρχείο. Η προβολή ενός αρχείου σε hex burst μπορεί να σας βοηθήσει να βρείτε κρυμμένους χαρακτήρες που δεν εμφανίζονται όταν το αρχείο είναι φορτωμένο σε ένα κανονικό πρόγραμμα επεξεργασίας κειμένου.

Πώς να δημιουργήσετε ένα Hex Dump χρησιμοποιώντας Linux

Για να δημιουργήσετε ένα hex burst χρησιμοποιώντας το Linux, χρησιμοποιήστε την εντολή hexdump.

Για να εμφανίσετε ένα αρχείο ως hex στο τερματικό (τυπική έξοδος), εκτελέστε την ακόλουθη εντολή:

hexdump όνομα αρχείου

Για παράδειγμα

hexdump image.png

Στην προεπιλεγμένη έξοδο θα εμφανιστεί ο αριθμός γραμμής (σε δεκαεξαδική μορφή) και στη συνέχεια 8 σειρές 4 δεκαεξαδικών τιμών ανά γραμμή.

Για παράδειγμα:

00000000 5089 474ε 0α0δ 0α1α 0000 0δ00 4849 5244

Μπορείτε να προμηθευτείτε διαφορετικούς διακόπτες για να αλλάξετε την προεπιλεγμένη έξοδο. Για παράδειγμα, καθορίζοντας τον διακόπτη μείον β θα παράγει μια 8 ψηφία μετατόπιση ακολουθούμενη από 16 τρία στήλη, πληρούμενα με μηδέν, bytes των δεδομένων εισόδου σε οκταδικό σχήμα.

hexdump -b image.png

Επομένως το παραπάνω παράδειγμα θα παρουσιαστεί ως εξής:

00000000 211 120 116 107 015 012 032 012 000 000 000 015 111 110 104 122

Η παραπάνω μορφή είναι γνωστή ως οκταδική απεικόνιση ενός byte.

Ένας άλλος τρόπος προβολής του αρχείου είναι η εμφάνιση ενός ψηφίου χαρακτήρων χρησιμοποιώντας το διακόπτη μείον c.

hexdump -c image.png

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

Άλλες επιλογές περιλαμβάνουν την προβολή Canonical hex + ascii, η οποία μπορεί να εμφανιστεί χρησιμοποιώντας τον διακόπτη μείον C και τη δεκαδική οθόνη δύο ψηφίων, η οποία μπορεί να εμφανιστεί χρησιμοποιώντας το διακόπτη μείον d. Ο διακόπτης μείον o μπορεί να χρησιμοποιηθεί για την εμφάνιση οκταδυτικής οθόνης δύο byte. Τέλος, ο διακόπτης minux x μπορεί να χρησιμοποιηθεί για την εμφάνιση δεκαεξαδικό δυαδικό ψηφίο.

hexdump-image.png

hexdump -d image.png

hexdump -o image.png

hexdump -x image.png

Εάν καμία από τις παραπάνω μορφές δεν ταιριάζει στις ανάγκες σας, μπορείτε να χρησιμοποιήσετε το διακόπτη μείον για να καθορίσετε τη μορφή.

Εάν γνωρίζετε ότι ένα αρχείο δεδομένων είναι πολύ μακρύ και θέλετε απλώς να δείτε τους πρώτους λίγους χαρακτήρες για να καθορίσετε τον τύπο του, μπορείτε να χρησιμοποιήσετε το διακόπτη -n για να καθορίσετε το μέγεθος του αρχείου που θα εμφανιστεί σε hex.

hexdump -n100 image.png

Η παραπάνω εντολή εμφανίζει τα πρώτα εκατό byte.

Εάν θέλετε να παραλείψετε ένα τμήμα του αρχείου, μπορείτε να χρησιμοποιήσετε το διακόπτη μείον για να ορίσετε μια μετατόπιση για να ξεκινήσετε από.

hexdump -s10 image.png

Αν δεν παρέχετε ένα όνομα αρχείου, το κείμενο διαβάζεται από την τυπική είσοδο.

Απλά εισάγετε την ακόλουθη εντολή:

hexdump

Στη συνέχεια, εισάγετε το κείμενο στην τυπική είσοδο και ολοκληρώστε πληκτρολογώντας το quit. Το εξάγωνο θα εμφανιστεί στην τυπική έξοδο.

Περίληψη

Το βοηθητικό πρόγραμμα hexdump είναι προφανώς ένα αρκετά ισχυρό εργαλείο και θα πρέπει σίγουρα να διαβάσετε τη σελίδα χειρωνακτικής εκτύπωσης για να αντιμετωπίσετε πλήρως όλα τα χαρακτηριστικά.

Θα χρειαστείτε επίσης μια καλή κατανόηση του τι ψάχνετε όταν διαβάζετε την έξοδο.

Για να δείτε τη σελίδα με το εγχειρίδιο, εκτελέστε την ακόλουθη εντολή:

άνθρωπος hexdump