Linux-Terminal auf einem Laptop

Fatmawati Achmad Zaenuri/Shutterstock.com

Möchten Sie den Text in einer Binär- oder Datendatei sehen? Das Linux |_+_| -Befehl ruft diese Textteile – sogenannte Strings – für Sie heraus.



Linux ist voll von Befehlen, die wie Lösungen für die Suche nach Problemen aussehen können. Die |_+_| Befehl fällt definitiv in dieses Lager. Nur was ist sein Zweck? Gibt es einen Sinn für einen Befehl, der die druckbaren Zeichenfolgen aus einer Binärdatei auflistet?

Gehen wir einen Schritt zurück. Binärdateien – wie Programmdateien – können Zeichenfolgen mit menschenlesbarem Text enthalten. Aber wie bekommt man sie zu sehen? Wenn Sie |_+_| . verwenden oder |_+_| Sie werden wahrscheinlich ein hängendes Terminalfenster haben. Programme, die für die Arbeit mit Textdateien entwickelt wurden, kommen nicht gut zurecht, wenn nicht druckbare Zeichen durch sie geleitet werden.

Die meisten Bytes in einer Binärdatei sind nicht lesbar und können nicht sinnvoll im Terminalfenster ausgegeben 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 nach Textzeichenfolgen anzuzeigen oder zu durchsuchen, ist daher ein Problem. Und das ist, wo |_+_| kommt rein. Es extrahiert Zeichenfolgen von druckbaren Zeichen aus Dateien damit andere Befehle die Zeichenfolgen verwenden können, ohne sich mit nicht druckbaren Zeichen herumschlagen zu müssen.

Verwenden des Zeichenfolgenbefehls

Es gibt nichts Kompliziertes an der |_+_| Befehl, und seine grundlegende Verwendung ist sehr einfach. Wir geben den Namen der gewünschten Datei an |_+_| auf der Kommandozeile zu durchsuchen.

Anzeige

Hier verwenden wir Strings für eine Binärdatei – eine ausführbare Datei – namens Jibber. Wir geben |_+_|, ein Leerzeichen, Jibber ein und drücken dann die Eingabetaste.

wie benutzt man die fn-taste
strings

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

Einstellen der minimalen Stringlänge

Standardmäßig sucht Strings nach Strings, die vier oder mehr Zeichen lang sind. Um eine längere oder kürzere Mindestlänge einzustellen, verwenden Sie die |_+_| (Mindestlänge) Option.

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

Einige Binärwerte haben denselben numerischen Wert wie der Wert, der ein druckbares Zeichen darstellt. Wenn zwei dieser numerischen Werte in der Datei nebeneinander liegen und Sie eine Mindestlänge von zwei angeben, werden diese Bytes wie ein String gemeldet.

Anzeige

Um |_+_| . zu fragen Um zwei als Mindestlänge zu verwenden, verwenden Sie den folgenden Befehl.

strings

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

Piping Saiten durch weniger

Wegen der Länge der Ausgabe von |_+_| werden wir sie durch |_+_| leiten. Wir können dann durch die Datei scrollen und nach interessantem Text suchen.

cat

Die Auflistung wird uns jetzt in |_+_| präsentiert, wobei die Spitze der Auflistung zuerst angezeigt wird.

Verwenden von Strings mit Objektdateien

Typischerweise werden Programmquellcodedateien in Objektdateien kompiliert. Diese werden mit Bibliotheksdateien verknüpft, um eine binäre ausführbare Datei zu erstellen. Wir haben die Jibber-Objektdatei zur Hand, also lassen Sie uns einen Blick in diese Datei werfen. Beachten Sie die Dateierweiterung .o.

was ist ein speedtest
less

Der erste Satz von Zeichenfolgen wird alle in Spalte acht umgebrochen, wenn sie länger als acht Zeichen sind. Wenn sie umbrochen wurden, befindet sich ein H-Zeichen in Spalte neun. Sie erkennen diese Zeichenfolgen möglicherweise als SQL-Anweisungen.

Anzeige

Ein Scrollen durch die Ausgabe zeigt, dass diese Formatierung nicht in der gesamten Datei verwendet wird.

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

Suchen in bestimmten Bereichen der Datei

Kompilierte Programme haben verschiedene Bereiche in sich, die zum Speichern von Text verwendet werden. Standardmäßig ist |_+_| durchsucht die gesamte Datei nach Text. Dies ist so, als ob Sie das |_+_| . verwendet hätten (alle) Möglichkeit. Damit Zeichenfolgen nur in initialisierten, geladenen Datenabschnitten in der Datei suchen, verwenden Sie |_+_| (Daten-)Option.

strings

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

Drucken des String-Offsets

Wir können |_+_| . haben Drucken Sie den Offset vom Anfang der Datei, an dem sich jede Zeichenfolge befindet. Verwenden Sie dazu die |_+_| (Offset)-Option.

strings

Der Offset wird in . angegeben Oktal .

Um den Offset in einer anderen numerischen Basis anzuzeigen, z. B. dezimal oder hexadezimal, verwenden Sie |_+_| (Radix)-Option. Der Radix-Option muss |_+_| . folgen ( Dezimal ), strings ( hexadezimal ) oder |_+_| (Oktal). Verwenden von |_+_| entspricht der Verwendung von |_+_|.

strings

Die Offsets werden jetzt dezimal gedruckt.

-n

Die Offsets werden jetzt hexadezimal gedruckt.

Einschließlich Leerzeichen

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

strings

Anzeige

In der Ausgabe sehen wir die Leerzeile, die durch den (unsichtbaren) Wagenrücklauf und die Zeilenumbruchzeichen am Ende der zweiten Zeile entsteht.

Wir sind nicht auf Dateien beschränkt

Wir können |_+_| . verwenden mit allem, was ein Bytestrom ist oder erzeugen kann.

Mit diesem Befehl können wir durch die Arbeitsspeicher (RAM) unseres Computers.

Wir müssen |_+_| . verwenden weil wir auf /dev/mem zugreifen. Dies ist eine Zeichengerätedatei, die ein Abbild des Hauptspeichers Ihres Computers enthält.

strings

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

VERBUNDEN: Was bedeutet 'Alles ist eine Datei' in Linux?

Durchsuchen vieler Dateien gleichzeitig

Platzhalter können verwendet werden, um Gruppen von zu durchsuchenden Dateien auszuwählen. Die |_+_| Zeichen steht für mehrere Zeichen und das |_+_| Zeichen steht für ein beliebiges einzelnes Zeichen. Sie können auch viele Dateinamen in der Befehlszeile angeben.

Anzeige

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 |_+_| (Dateiname) Option. 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 Griff , und suchen Sie nach Zeichenfolgen, die das Wort Copyright enthalten.

less

Wir erhalten eine übersichtliche Auflistung der Copyright-Anweisungen für jede Datei im Verzeichnis /bin, mit dem Namen der Datei am Anfang jeder Zeile.

Saiten entwirrt

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

Es ist ein weiteres Zahnrad von Linux und wird erst richtig lebendig, wenn es mit anderen Befehlen arbeitet. Wenn Sie sehen, wie es zwischen Binärdateien und anderen Tools wie |_+_| platziert werden kann, werden Sie die Funktionalität dieses etwas obskuren Befehls zu schätzen wissen.

Meine Desktopsymbole sind weg
Linux-Befehle
Dateien Teer · pv · Katze · tac · chmod · Griff · unterschied · sed · Mit · Mann · geschoben · popd · fsck · Testdisk · seq · fd · pandoc · CD · $PFAD · awk · beitreten · jq · falten · einzigartig · Journalctl · Schwanz · Zustand · ls · fstab · rauswerfen · weniger · chgrp · chown · rev · suchen · Saiten · Typ · umbenennen · Postleitzahl · entpacken · montieren · ummount · Installieren · fdisk · mkfs · rm · rmdir · rsync · df · gpg · wir · Nano · mkdir · von · ln · Patch · Konvertieren · rclon · Fetzen · SRM
Prozesse alias · Bildschirm · oben · nett · renice · Fortschritt · strace · System · tmux · chsh · Geschichte · beim · Charge · kostenlos · die · dmesg · Benutzermod · ps · chroot · xargs · tty · kleiner Finger · lsof · vmstat · Auszeit · Mauer · ja · töten · Schlaf · sudo · seine · Zeit · groupadd · Benutzermod · Gruppen · lshw · stilllegen · neu starten · halt · ausschalten · passwd · lscpu · crontab · Datum · bg · fg
Vernetzung netstat · Klingeln · Traceroute · ip · ss · Wer ist · fail2ban · bmon · Sie · Finger · nmap · ftp · Locken · wget · Wer · Wer bin ich · In · iptables · ssh-keygen · ufw

VERBUNDEN: Beste Linux-Laptops für Entwickler und Enthusiasten

WEITER LESEN