Zeigen Sie die druckbaren Zeichen einer Datei mit Zeichenfolgen an

Haben Sie jemals versucht, eine Datei in einem Editor zu öffnen, um festzustellen, dass sie unlesbaren binären Inhalt enthält?

Mit dem Linux-Befehl "strings" können die für Menschen lesbaren Zeichen in jeder Datei angezeigt werden.

Der Hauptzweck der Verwendung des Befehls "strings" besteht darin, herauszufinden, um welchen Dateityp es sich handelt. Sie können ihn jedoch auch zum Extrahieren von Text verwenden. Wenn Sie beispielsweise eine Datei aus einem proprietären Programm haben, das Dateien in einem seltsamen Binärformat speichert, können Sie den in die Datei eingefügten Text mit "Zeichenfolgen" extrahieren.


Beispiel für die Verwendung des Befehls Strings

Eine gute Möglichkeit, die Leistungsfähigkeit des Befehls strings zu demonstrieren, besteht darin, ein Dokument mit LibreOffice Writer zu erstellen.

Öffnen Sie einfach LibreOffice Writer, geben Sie Text ein und speichern Sie ihn im Standard-ODT-Format.

Öffnen Sie nun ein Terminalfenster (drücken Sie STRG, ALT und T. gleichzeitig) und verwenden Sie dann den Befehl cat, um die Datei wie folgt anzuzeigen:

Katze yourfi

(Ersetzen Sie die Datei yourfilename.odt durch den Namen der von Ihnen erstellten Datei.)

Was Sie sehen werden, ist eine ganze Wand aus unleserlichem Text.

Drücken Sie die Leertaste, um durch die Datei zu scrollen. In der gesamten Datei wird sporadisch ein Teil des eingegebenen Textes angezeigt.

Mit dem Befehl strings können nur die Teile angezeigt werden, die für den Menschen lesbar sind.

In seiner einfachsten Form können Sie den folgenden Befehl ausführen:

Saiten yourfi

Nach wie vor wird eine Textwand angezeigt, jedoch nur Text, den Sie als Mensch lesen können. Wenn Sie Glück haben, können Sie Ihren Text sehen.

Was Sie jedoch als Schlüssel sehen können, steht in der ersten Zeile:

mimetypeapplication / vnd.oasis.

Wir wissen, dass der Dateityp aus zwei Gründen eine LibreOffice Writer-ODT-Datei ist:

  1. Wir haben die Datei erstellt
  2. Die Erweiterung ist .ODT

Stellen Sie sich vor, Sie haben die Datei nicht erstellt oder auf einer wiederhergestellten Festplatte gefunden und die Datei hatte keine Erweiterung.

Bei der Windows-Wiederherstellung wurden häufig Dateien mit Namen wie 0001, 0002, 0003 usw. wiederhergestellt. Die Tatsache, dass die Dateien wiederhergestellt wurden, ist großartig, aber es war ein Albtraum, herauszufinden, um welche Dateitypen es sich handelt.

Durch die Verwendung von Zeichenfolgen haben Sie die Chance, den Dateityp zu ermitteln. Wenn Sie wissen, dass eine Datei eine opendocument.text-Datei ist, können Sie sie mit der ODT-Erweiterung speichern und in LibreOffice Writer öffnen.

Falls Sie nicht wussten, dass eine ODT-Datei im Grunde eine komprimierte Datei ist. Wenn Sie yourfilename.odt in yourfilename.zip umbenennen, können Sie es in einem Archivierungswerkzeug öffnen und sogar die Datei entpacken.

Alternative Verhaltensweisen

Standardmäßig gibt der Befehl strings alle Zeichenfolgen in einer Datei zurück. Sie können das Verhalten jedoch so ändern, dass Zeichenfolgen aus initialisierten, geladenen Datenabschnitten in einer Datei zurückgegeben werden.

Was bedeutet das genau? Niemand scheint es zu wissen.

Es ist sinnvoll anzunehmen, dass Sie Zeichenfolgen verwenden, um entweder den Dateityp herauszufinden oder nach einem bestimmten Text in einer Datei zu suchen.

Wenn Sie beim Ausführen des Befehls strings mit dem Standardverhalten nicht die erhoffte Ausgabe erhalten, versuchen Sie, einen der folgenden Befehle auszuführen, um festzustellen, ob dies einen Unterschied macht:

Schnur

or

Zeichenfolgen --Daten Sie Ihren Dateinamen

Auf der Handbuchseite wird angegeben, dass der obige Befehl dazu beitragen kann, die Menge des von Zeichenfolgen zurückgegebenen Mülls zu verringern.

Der Befehl "strings" kann so eingerichtet werden, dass er umgekehrt funktioniert, sodass der Minus-d-Schalter das Standardverhalten ist. Wenn dies auf Ihrem System der Fall ist, können Sie alle Daten mit dem folgenden Befehl zurückgeben:

Schnur


Ausgabe formatieren

Sie können den Text in der Ausgabe so einstellen, dass neben jeder Textzeile der Name der Datei angezeigt wird.

Führen Sie dazu einen der folgenden Befehle aus:

Schnur

or

Zeichenfolgen --print-file-name yourfilename

Die Ausgabe sieht nun ungefähr so ​​aus:

Ihr Dateiname: ein Textstück

or

Ihr Dateiname: ein weiterer Text

Als Teil der Ausgabe können Sie auch den Versatz anzeigen, an dem dieser Text in einer Datei angezeigt wird. Führen Sie dazu den folgenden Befehl aus:

Schnur

Die Ausgabe sieht ungefähr so ​​aus:

Der Versatz ist eigentlich der Oktalversatz, obwohl es abhängig davon, wie Zeichenfolgen für Ihr System kompiliert wurden, leicht auch der Hex- oder der Dezimalversatz sein kann.

Eine genauere Möglichkeit, den gewünschten Versatz zu erhalten, besteht darin, die folgenden Befehle zu verwenden:

Zeichenfolgen -td Ihr Dateiname
Zeichenfolgen - zu Ihrem Dateinamen
Zeichenfolgen -th Ihr Dateiname

Das Minus t bedeutet, den Versatz zurückzugeben, und das folgende Zeichen bestimmt den Versatztyp. (dh d = dezimal, o = oktal, h = hex).

Standardmäßig druckt der Befehl strings jede neue Zeichenfolge in einer neuen Zeile. Sie können jedoch das Trennzeichen Ihrer Wahl festlegen. Um beispielsweise ein Pipe-Symbol ("|") als Trennzeichen zu verwenden, führen Sie den folgenden Befehl aus:

Strings -s "| &


Passen Sie das String-Limit an

Der Befehl strings sucht standardmäßig nach einer Zeichenfolge mit 4 druckbaren Zeichen in einer Reihe. Sie können die Standardeinstellung so anpassen, dass nur eine Zeichenfolge mit 8 druckbaren Zeichen oder 12 druckbaren Zeichen zurückgegeben wird.

Durch Anpassen dieses Grenzwerts können Sie die Ausgabe anpassen, um das bestmögliche Ergebnis zu erzielen. Wenn Sie nach einer zu langen Zeichenfolge suchen, riskieren Sie, nützlichen Text wegzulassen. Wenn Sie ihn jedoch zu kurz machen, wird möglicherweise viel mehr Junk zurückgegeben.

Führen Sie den folgenden Befehl aus, um das Zeichenfolgenlimit anzupassen:

Streicher

Im obigen Beispiel habe ich das Limit auf 8 geändert. Sie können 8 durch die Nummer Ihrer Wahl ersetzen.

Sie können auch den folgenden Befehl verwenden, um dasselbe zu tun:

Zeichenfolgen --bytes & #

Leerzeichen einschließen

Standardmäßig enthält der Befehl strings Leerzeichen wie eine Registerkarte oder ein Leerzeichen als druckbares Zeichen. Wenn Sie also eine Zeichenfolge haben, die lautet "Die Katze saß auf der Matte", gibt der Befehl "Zeichenfolgen" den gesamten Text zurück.

Neue Zeilenzeichen und Zeilenumbrüche gelten standardmäßig nicht als druckbare Zeichen.

Um Zeichenfolgen dazu zu bringen, neue Zeilenzeichen und Zeilenumbrüche als druckbare Zeichen zu erkennen, führen Sie die folgenden Zeichenfolgen aus:

Schnur

Ändern Sie die Codierung

Für die Verwendung mit Zeichenfolgen stehen 5 Codierungsoptionen zur Verfügung:

  • s = 7-Bit-Byte (verwendet für ASCII, ISO 8859)
  • S = 8-Bit-Byte
  • b = 16 Bit Bigendian
  • l = 16 Bit Littleendian

Der Standardwert ist ein 7-Bit-Byte.

Führen Sie den folgenden Befehl aus, um die Codierung zu ändern:

Zeichenfolgen -es Ihr Dateiname
Zeichenfolgen --encoding = s Ihr Dateiname

Im obigen Befehl habe ich die Standardeinstellung "s" angegeben, was 7-Bit-Byte bedeutet. Ersetzen Sie einfach das "s" durch den Codierungsbuchstaben Ihrer Wahl.

Ändern Sie den Beschreibungsnamen der Binärdatei

Sie können das Verhalten von Zeichenfolgen so ändern, dass eine andere Binärdateideskriptorbibliothek als die für Ihr System bereitgestellte verwendet wird.

Dieser Schalter ist einer für die Experten. Wenn Sie eine andere Bibliothek verwenden möchten, können Sie dies tun, indem Sie den folgenden Zeichenfolgenbefehl ausführen:

st

Leseoptionen aus einer Datei

Wenn Sie jedes Mal dieselben Optionen verwenden möchten, müssen Sie nicht jedes Mal, wenn Sie den Befehl ausführen, alle Schalter angeben, da dies einige Zeit in Anspruch nimmt.

Sie können eine Textdatei mit nano erstellen und die Optionen in dieser Datei angeben.

Um dies in einem Terminal auszuprobieren, führen Sie den folgenden Befehl aus:

Geben Sie in die Datei den folgenden Text ein:

-f -o -n

Speichern Sie die Datei, indem Sie STRG und O drücken, und beenden Sie sie, indem Sie STRG und X drücken.

Führen Sie den folgenden Befehl aus, um die Zeichenfolgenbefehle mit diesen Optionen auszuführen:

Strings @strings

Die Optionen werden aus den Stringsopts der Datei gelesen und Sie sollten den Dateinamen vor jedem String, den Offset und das "|" sehen. als Trennzeichen.

Erste Hilfe

Wenn Sie mehr über Zeichenfolgen erfahren möchten, können Sie den folgenden Befehl ausführen, um Hilfe zu erhalten.

Alternativ können Sie auch die Handbuchseite lesen:

Finden Sie heraus, welche Version von Strings Sie ausführen

Führen Sie einen der folgenden Befehle aus, um die Version der von Ihnen ausgeführten Zeichenfolgen zu ermitteln:

Strings -v
Saiten -V
Strings - Version

Schreibe einen Kommentar