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

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

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

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

Παράδειγμα χρήσης της εντολής Strings

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

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

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

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

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

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

Αρχείο Linux cat odt

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

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

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

συμβολοσειρά yourfilename.odt | περισσότερο. 

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

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

mimetypeapplication/vnd.oasis.opedocument.text. 

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

  1. Δημιουργήσαμε το αρχείο
  2. Η επέκταση είναι .ODT
Αρχείο odt εντολής συμβολοσειρών Linux

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

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

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

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

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

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

Τι ακριβώς σημαίνει αυτό; Κανείς δεν φαίνεται να ξέρει.

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

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

strings -d your filename. 

ή.

strings --data το όνομα του αρχείου σας. 

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

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

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

Μορφοποίηση εξόδου

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

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

strings -f your filename. 

ή.

strings --print-file-name your filename. 

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

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

ή.

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

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

strings -o your filename. 

Η έξοδος θα μοιάζει κάπως έτσι:

16573 το κείμενο σας 17024. 

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

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

strings -t d your filename
strings -t o your filename
strings -t h your filename.

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

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

χορδές -s "|" το όνομα του αρχείου σας. 

Προσαρμόστε το όριο συμβολοσειράς

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

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

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

strings -n 8 το όνομα του αρχείου σας. 

Στο παραπάνω παράδειγμα, έχω αλλάξει το όριο σε 8. Μπορείτε να αντικαταστήσετε το 8 με τον αριθμό της επιλογής σας.

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

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

Συμπεριλάβετε το κενό διάστημα

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

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

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

strings -w το όνομα του αρχείου σας. 

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

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

  • s = byte 7 bit (χρησιμοποιείται για ASCII, ISO 8859)
  • S = byte 8 bit 
  • b = 16 bit bigendian
  • l = 16 bit littleendian

Η προεπιλογή είναι ένα byte 7 bit.

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

strings -e s το όνομα του αρχείου σας
strings --encoding=s το όνομα του αρχείου σας.

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

Αλλάξτε το Όνομα περιγραφής δυαδικού αρχείου

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

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

χορδές -T bfdname. 

Ανάγνωση επιλογών από αρχείο

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

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

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

νάνο χορδές. 

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

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

Αποθηκεύστε το αρχείο πατώντας CTRL + O και βγείτε πατώντας CTRL + X.

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

strings @stringsopts το όνομα του αρχείου σας. 

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

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

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

χορδές --βοήθεια. 

Εναλλακτικά, διαβάστε τη σελίδα του εγχειριδίου:

ανδρικές χορδές. 

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

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

χορδές -v
χορδές -V
χορδές -- έκδοση.