Πώς να εμφανίσετε τους εκτυπώσιμους χαρακτήρες ενός αρχείου με την εντολή Strings

Έχετε προσπαθήσει ποτέ να ανοίξετε ένα αρχείο σε ένα πρόγραμμα επεξεργασίας μόνο για να διαπιστώσετε ότι περιέχει μη αναγνώσιμο δυαδικό περιεχόμενο;

Η εντολή "string" του Linux επιτρέπει την προβολή των χαρακτήρων που μπορούν να διαβαστούν από άνθρωπο μέσα σε οποιοδήποτε αρχείο.

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

Παράδειγμα χρήσης της εντολής των συμβολοσειρών

Ένας πολύ καλός τρόπος για να αποδείξετε τη δύναμη της εντολής των συμβολοσειρών είναι να δημιουργήσετε ένα έγγραφο χρησιμοποιώντας το LibreOffice Writer.

Απλά ανοίξτε το LibreOffice Writer και εισαγάγετε κάποιο κείμενο και, στη συνέχεια, αποθηκεύστε το σε κανονική μορφή ODT .

Τώρα ανοίξτε ένα παράθυρο τερματικού (πιέστε ταυτόχρονα CTRL, ALT και T) και, στη συνέχεια, χρησιμοποιήστε την εντολή cat για να εμφανίσετε το αρχείο ως εξής:

cat yourfilename.odt | περισσότερο

(Αντικαταστήστε το yourfilename.odt με το όνομα του αρχείου που δημιουργήσατε)

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

Πατήστε το πλήκτρο διαστήματος για να μετακινηθείτε στο αρχείο. Σποραδικά σε όλο το αρχείο θα δείτε μερικά από τα κείμενα που έχετε εισάγει.

Η εντολή συμβολοσειρών μπορεί να χρησιμοποιηθεί για την εμφάνιση μόνο των μερών που είναι αναγνώσιμα από τον άνθρωπο.

Στην απλούστερη μορφή του, μπορείτε να εκτελέσετε την ακόλουθη εντολή:

συμβολοσειρές σας περισσότερο

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

Αυτό που θα είναι το κλειδί, ωστόσο, είναι στην πρώτη γραμμή:

mimetypeapplication / vnd.oasis.opendocument.text

Γνωρίζουμε ότι ο τύπος αρχείου είναι αρχείο ODT του LibreOffice Writer για 2 λόγους:

  1. Δημιουργήσαμε το αρχείο
  2. Η επέκταση είναι .ODT

Φανταστείτε ότι δεν δημιουργήσατε το αρχείο ή ότι βρήκατε το αρχείο σε έναν ανακτημένο δίσκο και ότι το αρχείο δεν είχε επέκταση.

Η ανάκτηση των Windows θα ανακτούσε συχνά αρχεία με ονόματα όπως 0001, 0002, 0003 κλπ. Το γεγονός ότι τα αρχεία ανακτήθηκαν είναι σπουδαίο, αλλά προσπαθεί να ανακαλύψει τι τύποι αυτών των αρχείων ήταν ένας εφιάλτης.

Χρησιμοποιώντας τις συμβολοσειρές έχετε μια πιθανότητα πάλης για να επεξεργαστείτε τον τύπο αρχείου. Γνωρίζοντας ότι ένα αρχείο είναι ένα αρχείο opendocument.text σημαίνει ότι μπορείτε να το αποθηκεύσετε με την επέκταση ODT και να το ανοίξετε στο LibreOffice writer.

Σε περίπτωση που δεν γνωρίζετε ότι ένα αρχείο ODT είναι βασικά ένα συμπιεσμένο αρχείο. Εάν μετονομάσετε το όνομα_filename.odt στο filename.zip, μπορείτε να το ανοίξετε σε ένα αρχείο αρχειοθέτησης και ακόμη και να αποσυμπιέσετε το αρχείο.

Εναλλακτικές Συμπεριφορές

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

Τι σημαίνει αυτό ακριβώς; Κανείς δεν φαίνεται να το γνωρίζει.

Είναι λογικό να υποθέσουμε ότι χρησιμοποιείτε συμβολοσειρές για να προσπαθήσετε είτε να μάθετε τον τύπο αρχείου είτε να αναζητήσετε συγκεκριμένο κείμενο σε ένα αρχείο.

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

συμβολοσειρές -d όνομα του αρχείου σας

συμβολοσειρές - δώστε το όνομα σας

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

Η εντολή "συμβολοσειρές" μπορεί να ρυθμιστεί ώστε να λειτουργεί αντίστροφα, έτσι ώστε ο μείον διακόπτης d να είναι η προεπιλεγμένη συμπεριφορά. Εάν αυτό συμβαίνει στο σύστημά σας τότε μπορείτε να επιστρέψετε όλα τα δεδομένα χρησιμοποιώντας την ακόλουθη εντολή:

χορδές - ένα όνομα αρχείου

Διαμόρφωση μορφοποίησης

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

Για να το κάνετε αυτό εκτελέστε μία από τις ακόλουθες εντολές:

συμβολοσειρές -f yourfilename

συμβολοσειρές -print-file-name yourfilename

Η έξοδος θα μοιάζει τώρα κάτι τέτοιο:

yourfilename: ένα κομμάτι κειμένου

yourfilename: ένα άλλο κείμενο

Ως μέρος της εξόδου μπορείτε επίσης να εμφανίσετε την μετατόπιση του τόπου όπου εμφανίζεται αυτό το κείμενο σε ένα αρχείο. Για να το εκτελέσετε, εκτελέστε την ακόλουθη εντολή:

συμβολοσειρές - ένα όνομα αρχείου

Η έξοδος θα φαίνεται κάπως έτσι:

16573 σας

17024 κείμενο

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

Ένας πιο ακριβής τρόπος για να πάρετε το όφσετ που θέλετε είναι να χρησιμοποιήσετε τις ακόλουθες εντολές:

strings -td yourfilename

συμβολοσειρές - στο όνομα του αρχείου σας

συμβολοσειρές -το όνομα του αρχείου σας

Το μείον t σημαίνει επιστροφή της μετατόπισης και ο χαρακτήρας που ακολουθεί καθορίζει τον τύπο μετατόπισης. (δηλαδή d = δεκαδικό, o = οκταδικό, h = hex).

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

συμβολοσειρές -s "|" " yourfilename

Ρυθμίστε το όριο των συμβολοσειρών

Η εντολή συμβολοσειρών από προεπιλογή αναζητά μια σειρά από 4 εκτυπώσιμους χαρακτήρες στη σειρά. Μπορείτε να προσαρμόσετε την προεπιλογή έτσι ώστε να επιστρέφει μόνο μια συμβολοσειρά με 8 εκτυπώσιμους χαρακτήρες ή 12 εκτυπώσιμους χαρακτήρες.

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

Για να προσαρμόσετε το όριο συμβολοσειρών, εκτελέστε την ακόλουθη εντολή

strings -n 8 yourfilename

Στο παραπάνω παράδειγμα έχω αλλάξει το όριο στο 8.

Μπορείτε να αντικαταστήσετε 8 με τον αριθμό της επιλογής σας.

Μπορείτε επίσης να χρησιμοποιήσετε την ακόλουθη εντολή για να κάνετε το ίδιο πράγμα:

συμβολοσειρές --bytes = 8 το όνομα του αρχείου σας

Συμπεριλάβετε το κενό

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

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

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

strings -w yourfilename

Αλλάξτε την κωδικοποίηση

Υπάρχουν διαθέσιμες 5 επιλογές κωδικοποίησης για χρήση με συμβολοσειρές:

Η προεπιλεγμένη ρύθμιση είναι 7 byte.

Για να αλλάξετε την κωδικοποίηση εκτελέστε την ακόλουθη εντολή:

συμβολοσειρές - στο όνομα του αρχείου σας

συμβολοσειρές - encoding = s yourfilename

Στην παραπάνω εντολή, έχω καθορίσει την προεπιλογή "s" που σημαίνει 7 byte byte. Απλά αντικαταστήστε το "s" με το γράμμα κωδικοποίησης της επιλογής σας.

Αλλαγή του ονόματος δυαδικού αρχείου

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

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

συμβολοσειρές -T bfdname

Επιλογές ανάγνωσης από ένα αρχείο

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

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

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

nano stringsopts

Στο αρχείο καταχωρίστε το ακόλουθο κείμενο:

-f -o -n 3 -s "|"

Αποθηκεύστε το αρχείο πιέζοντας CTRL και O και έξοδο πιέζοντας CTRL και X.

Για να εκτελέσετε τις εντολές συμβολοσειρών με αυτές τις επιλογές εκτελέστε την ακόλουθη εντολή:

οι συμβολοσειρές @stringsopts το όνομα του αρχείου σας

Οι επιλογές θα διαβαστούν από τα αρχεία stringsopts και θα πρέπει να δείτε το όνομα αρχείου πριν από κάθε συμβολοσειρά, το offset και το "|" ως διαχωριστικό.

Λαμβάνω βοήθεια

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

συμβολοσειρές --help

Εναλλακτικά, μπορείτε επίσης να διαβάσετε τη σελίδα χειροκίνητων εργασιών:

ανθρώπινες χορδές

Μάθετε ποια έκδοση των χορδών εκτελείτε

Για να βρείτε την έκδοση των συμβολοσειρών που εκτελείτε, εκτελέστε μία από τις ακόλουθες εντολές:

συμβολοσειρές -v

χορδές -V

συμβολοσειρές - έκδοση