Verwendung des Befehls strings unter Linux

Verwendung des Befehls strings unter Linux

Verwendung des Befehls strings unter Linux

Möchten Sie den Text in einer Binär- oder Datendatei sehen? Der Linux- stringsBefehl holt diese Textteile, die als „Strings“ bezeichnet werden, für Sie heraus.

Linux steckt voller Befehle, die auf der Suche nach Problemen wie Lösungen aussehen können. Das stringsKommando fällt definitiv in dieses Lager. Was genau ist ihr Zweck? Gibt es einen Punkt zu einem Befehl, der die druckbaren Zeichenfolgen in einer Binärdatei auflistet?

Machen wir einen Schritt zurück. Binärdateien – wie z. B. Programmdateien – können Zeichenfolgen von lesbarem Text enthalten. Aber wie kommst du dazu, sie zu sehen? Wenn Sie verwenden catoder lesswahrscheinlich mit einem nicht mehr reagierenden Terminalfenster enden. Programme, die für die Arbeit mit Textdateien entwickelt wurden, kommen nicht gut zurecht, wenn nicht druckbare Zeichen durch sie eingegeben werden.

Die meisten Bytes in einer Binärdatei sind nicht lesbar und können nicht auf sinnvolle Weise im Terminalfenster gedruckt werden. Es gibt keine Zeichen oder Standardsymbole zur Darstellung von Binärwerten, die nicht alphanumerischen Zeichen, Satzzeichen oder Leerzeichen entsprechen. Zusammen werden diese als „druckbare“ Zeichen bezeichnet. Der Rest sind „nicht druckbare“ Zeichen.

Der Versuch, eine Binär- oder Datendatei anzuzeigen oder nach Textzeichenfolgen zu suchen, ist daher ein Problem. Und hier stringskommt es an. Es extrahiert Zeichenfolgen mit druckbaren Zeichen aus Dateien, sodass andere Befehle die Zeichenfolgen verwenden können, ohne sich mit nicht druckbaren Zeichen herumschlagen zu müssen.

Verwenden des Befehls strings

Der stringsBefehl ist nicht kompliziert und seine grundlegende Verwendung ist sehr einfach. Wir geben den Namen der stringszu durchsuchenden Datei in der Befehlszeile an.

In diesem Beispiel verwenden wir Zeichenfolgen für eine Binärdatei – eine ausführbare Datei – mit dem Namen „Jibber“. Geben Sie stringsein Leerzeichen und „Jibber“ ein und drücken Sie die Eingabetaste.

strings jibber

Verwendung des Befehls strings unter Linux

Die Zeichenfolgen werden aus der Datei extrahiert und im Terminalfenster aufgelistet.

Verwendung des Befehls strings unter Linux

Einstellen der minimalen Stringlänge

Standardmäßig suchen Zeichenfolgen nach Zeichenfolgen mit vier oder mehr Zeichen. Verwenden Sie die -nOption (Mindestlänge), um eine längere oder kürzere Mindestlänge festzulegen.

Beachten Sie, dass je kürzer die Mindestlänge ist, desto höher ist die Wahrscheinlichkeit, dass Sie mehr Junk sehen.

Einige Binärwerte haben denselben numerischen Wert wie der Wert, der ein druckbares Zeichen darstellt. Wenn zwei dieser numerischen Werte nebeneinander in der Datei vorkommen und Sie eine Mindestlänge von zwei angeben, werden diese Bytes so gemeldet, als wären sie eine Zeichenfolge.

Zu fragen , stringszwei als die minimale Länge zu verwenden, verwenden Sie den folgenden Befehl ein .

strings -n 2 jibber

Verwendung des Befehls strings unter Linux

In den Ergebnissen sind jetzt Zeichenfolgen mit zwei Buchstaben enthalten. Beachten Sie, dass Leerzeichen als druckbares Zeichen gezählt werden.

Verwendung des Befehls strings unter Linux

Saiten durch weniger leiten

Aufgrund der Länge der Ausgabe von stringswerden wir sie weiterleiten less. Wir können dann durch die Datei scrollen und nach interessanten Texten suchen.

strings jibber | less

Verwendung des Befehls strings unter Linux

Die Auflistung wird nun für uns in lessangezeigt, wobei der obere Rand der Auflistung zuerst angezeigt wird.

Verwendung des Befehls strings unter Linux

Verwenden von Zeichenfolgen mit Objektdateien

In der Regel werden Programmquellcodedateien in Objektdateien kompiliert. Diese werden mit Bibliotheksdateien verknüpft, um eine ausführbare Binärdatei zu erstellen. Wir haben die Jibber-Objektdatei zur Hand, schauen wir uns also diese Datei an. Beachten Sie die Dateierweiterung „.o“.

jibber.o | less

Verwendung des Befehls strings unter Linux

Die ersten Zeichenfolgen werden alle in Spalte 8 umbrochen, wenn sie länger als acht Zeichen sind. Wenn sie umbrochen wurden, steht in Spalte neun ein „H“. Möglicherweise erkennen Sie diese Zeichenfolgen als SQL-Anweisungen.

Verwendung des Befehls strings unter Linux

Wenn Sie durch die Ausgabe scrollen, wird angezeigt, dass diese Formatierung nicht in der gesamten Datei verwendet wird.

Verwendung des Befehls strings unter Linux

Es ist interessant, die Unterschiede in den Textzeichenfolgen zwischen der Objektdatei und der fertigen ausführbaren Datei zu sehen.

Suchen in bestimmten Bereichen in der Datei

Kompilierte Programme haben verschiedene Bereiche in sich, in denen Text gespeichert wird. stringsDurchsucht standardmäßig die gesamte Datei nach Text. Dies ist so, als hätten Sie die -aOption (all) verwendet. Verwenden Sie die -dOption (data), damit Zeichenfolgen nur in initialisierten, geladenen Datenabschnitten in der Datei suchen .

strings -d jibber | less

Verwendung des Befehls strings unter Linux

Sofern Sie keinen triftigen Grund dafür haben, können Sie auch die Standardeinstellung verwenden und die gesamte Datei durchsuchen.

String-Offset drucken

Wir können stringsden Offset ab dem Anfang der Datei drucken lassen, an dem sich jeder String befindet. Verwenden Sie dazu die -oOption (Versatz).

strings -o parse_phrases | less

Verwendung des Befehls strings unter Linux

Der Offset wird in Oktal angegeben .

Verwendung des Befehls strings unter Linux

Verwenden Sie die -tOption (radix), um den Versatz auf einer anderen numerischen Basis anzuzeigen, z. B. dezimal oder hexadezimal . Der Option radix muss ddezimal ), xhexadezimal ) oder o(oktal) folgen . Verwenden -t oist dasselbe wie Verwenden -o.

strings -t d parse_phrases | less

Verwendung des Befehls strings unter Linux

Die Offsets werden jetzt dezimal gedruckt.

Verwendung des Befehls strings unter Linux

strings -t x parse_phrases | less

Verwendung des Befehls strings unter Linux

Die Offsets werden jetzt hexadezimal gedruckt.

Verwendung des Befehls strings unter Linux

Einschließlich Leerzeichen

stringsbetrachtet Tabulator- und Leerzeichen als Teil der gefundenen Zeichenfolgen. Andere Leerzeichen wie Zeilenumbrüche und Zeilenumbrüche werden nicht als Teil der Zeichenfolgen behandelt. Die -w Option (Whitespace) bewirkt, dass Strings alle Whitespace-Zeichen so behandeln, als wären sie Teile des Strings.

strings -w add_data | less

Verwendung des Befehls strings unter Linux

Wir können die leere Zeile in der Ausgabe sehen, die ein Ergebnis des (unsichtbaren) Wagenrücklaufs und der Zeilenumbrüche am Ende der zweiten Zeile ist.

Verwendung des Befehls strings unter Linux

Wir sind nicht auf Dateien beschränkt

Wir können strings alles verwenden, was ein Strom von Bytes ist oder erzeugen kann.

Mit diesem Befehl können wir den Arbeitsspeicher (RAM) unseres Computers durchsuchen.

Wir müssen verwenden, sudoweil wir auf / dev / mem zugreifen. Dies ist eine Gerätedatei mit Zeichen, die ein Bild des Hauptspeichers Ihres Computers enthält.

sudo strings /dev/mem | less

Verwendung des Befehls strings unter Linux

Die Auflistung ist nicht der gesamte Inhalt Ihres RAM. Es sind nur die Zeichenfolgen, die daraus extrahiert werden können.

Verwendung des Befehls strings unter Linux

VERBINDUNG: Was bedeutet „Alles ist eine Datei“ unter Linux?

Mehrere Dateien gleichzeitig durchsuchen

Mit Platzhaltern können Sie zu durchsuchende Dateigruppen auswählen. Das  * Zeichen steht für mehrere Zeichen, und das  ? Zeichen steht für ein einzelnes Zeichen. Sie können auch viele Dateinamen in der Befehlszeile angeben.

Wir werden einen Platzhalter verwenden und alle ausführbaren Dateien im Verzeichnis / bin durchsuchen. Da die Auflistung Ergebnisse aus vielen Dateien enthält, verwenden wir die -fOption (Dateiname). Dadurch wird der Dateiname am Anfang jeder Zeile gedruckt. Wir können dann sehen, in welcher Datei jeder String gefunden wurde.

Wir leiten die Ergebnisse durch grep und suchen nach Zeichenfolgen, die das Wort „Copyright“ enthalten.

strings -f /bin/* | grep Copyright

Verwendung des Befehls strings unter Linux

Wir erhalten eine übersichtliche Auflistung der Copyright-Vermerke für jede Datei im Verzeichnis / bin, wobei der Name der Datei am Anfang jeder Zeile steht.

Verwendung des Befehls strings unter Linux

Saiten entwirrt

Saiten haben kein Geheimnis. Es ist ein typischer Linux-Befehl. Es macht etwas sehr Spezifisches und macht es sehr gut.

Es ist ein weiteres Zahnrad von Linux und wird erst dann zum Leben erweckt, wenn es mit anderen Befehlen zusammenarbeitet. Wenn Sie sehen, wie es zwischen Binärdateien und anderen Tools wie sitzen kann grep, beginnen Sie, die Funktionalität dieses etwas undurchsichtigen Befehls zu schätzen.

q , quelle

Zusammenhängende Posts:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.