Linux-Strings Befehl Tutorial für Anfänger (5 Beispiele)
Der Blick in eine binäre/ausführbare Datei, um menschenlesbare Zeichenketten zu greifen, ist nicht die Art von Arbeit, die jeder macht, aber was ist, wenn man dazu aufgefordert wird? Das Öffnen der Datei in einem Editor und die manuelle Suche nach Material ist keine elegante Lösung. Also, was soll ich tun? Ja, du hast es richtig erraten – es gibt ein Kommandozeilenprogramm, das dies für dich erledigt.
Das betreffende Tool heißt Strings, und in diesem Tutorial werden wir die Grundlagen dieses Befehls anhand einiger leicht verständlicher Beispiele diskutieren. Aber bevor wir das tun, ist es erwähnenswert, dass alle Beispiele in diesem Artikel auf Ubuntu 16.04 LTS getestet wurden.
Linux Strings Befehl
Der Befehl Strings druckt im Wesentlichen die Zeichenketten druckbarer Zeichen in Dateien. Folgendes ist seine Syntax:
strings [OPTIONS] FILENAME Und so beschreibt es die Man Page des Tools:
For each file given, GNU strings prints the printable character sequences that are at least 4 characters long (or the number given with the options below) and are followed by an unprintable character. Depending upon how the strings program was configured it will default to either displaying all the printable sequences that it can find in each file, or only those sequences that are in loadable, initialized data sections. If the file type in unrecognizable, or if strings is reading from stdin then it will always display all of the printable sequences that it can find. For backwards compatibility any file that occurs after a command line option of just - will also be scanned in full, regardless of the presence of any -d option. strings is mainly useful for determining the contents of non-text files.
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine gute Vorstellung davon vermitteln sollen, wie der Befehl Strings funktioniert.
Q1. Wie verwendet man den Befehl strings?
Die grundlegende Bedienung ist recht einfach – übergeben Sie einfach den Dateinamen als Eingabe und führen Sie den Befehl aus.
Bitte beachten Sie, dass Strings hauptsächlich zum Extrahieren von Informationen aus binären/ausführbaren Dateien verwendet wird, daher werden wir in allen unseren Beispielen eine solche Datei verwenden.
Zum Beispiel:
strings test
Hier ist die Ausgabe dieses Befehls, die auf meinem System erzeugt wurde:
Q2. Wie erzwinge ich eine benutzerdefinierte Charaktergrenze?
Wie eingangs erläutert, ist das Standardverhalten des Tools Zeichenketten so eingestellt, dass nur Zeichenfolgen gedruckt werden, die mindestens 4 Zeichen lang sind. Wenn Sie möchten, können Sie diese Grenze jedoch mit der Befehlszeilenoption -n ändern (was erfordert, dass Sie eine Zahl übergeben, die die neue Grenze angibt).
Wenn Sie beispielsweise das Limit auf 2 setzen möchten, gehen Sie wie folgt vor:
strings -n 2 test
So sieht man nun auch in der Ausgabe zwei und drei Zeichenketten.
Q3. Wie kann man Zeichenketten dazu bringen, den Offset von Zeichenfolgen zu drucken?
Wenn Sie möchten, dass Zeichenketten auch die Offsets von Zeichenfolgen anzeigen, die sie in der Ausgabe anzeigen, dann können Sie dies mit der Befehlszeilenoption -t tun, die erfordert, dass Sie eine einzelne Zeicheneingabe bereitstellen, die das Radix des Offsets angibt – ‚o‘ für oktal, ‚x‘ für hexadezimal oder ‚d‘ für dezimal.
Zum Beispiel:
strings -t d test
Und hier ist die Ausgabe, die sie auf meinem System erzeugt hat:
So können Sie sehen, dass den Zeichenketten in der Ausgabe nun ihre jeweiligen Offsets vorangestellt sind.
Q4. Wie man Zeichenketten dazu bringt, die ganze Datei zu scannen?
Je nachdem, wie Strings konfiguriert wurde, kann es sein, dass es die gesamte Eingabedatei scannt oder nicht. Wenn Sie jedoch absolut sicher sein wollen, dass das Tool die komplette Datei liest (und nicht nur ladbare, initialisierte Datenabschnitte), verwenden Sie die Befehlszeilenoption -a.
Zum Beispiel:
strings -a test
Umgekehrt, wenn Sie möchten, dass Strings nur Zeichenketten aus initialisierten, geladenen Datenabschnitten in der Datei anzeigt, verwenden Sie die Befehlszeilenoption -d.
strings -d test
Q5. Wie kann man den Separator ändern?
Wie Sie bemerkt haben, ist das von Strings verwendete Trennzeichen standardmäßig ein Zeilenumbruch. Wenn Sie jedoch möchten, können Sie ein benutzerdefiniertes Trennzeichen mit der Befehlszeilenoption -s verwenden.
Zum Beispiel:
strings -s [[[]]] test
Fazit
Der Befehl Strings ist ein äußerst nützliches Werkzeug, wenn Sie Binärdateien/Ausführbare Dateien nach nützlichen Informationen durchsuchen möchten. Wir haben hier einige wichtige Befehlszeilenoptionen besprochen. Also üben Sie sie, und wenn Sie fertig sind, gehen Sie zur Man Page des Tools für weitere Informationen.