strings aus den GNU Binutils durchsucht Binärdateien nach zusammenhängenden, druckbaren Zeichenfolgen und gibt sie aus. Fehlermeldungen, Pfade, Versionsstrings, URLs oder versteckte Kennungen bleiben als Text im Binärcode erhalten — strings macht sie sichtbar, ohne dass man die Datei disassemblieren muss.

strings /bin/ls
strings -n 8 firmware.bin

Wichtige Optionen

  • -n N / --min-length=N: Mindestlänge der Zeichenfolge (Standard: 4 Zeichen).
  • -t d|x|o: Offset jeder Zeichenfolge in dezimal, hexadezimal oder oktal — wichtig, um die Fundstelle in der Datei wiederzufinden.
  • -e s|S|b|l: Zeichenbreite beziehungsweise Byte-Reihenfolge (7-Bit, 8-Bit, 16-Bit Big- oder Little-Endian; -e l findet UTF-16-Texte).
  • -a / --all: ganze Datei scannen statt nur initialisierte Sektionen.
  • -f: Dateiname vor jeder Zeichenfolge bei mehreren Dateien.

Einsatz in Forensik und Analyse

Bei der Incident Response und in CTF-Aufgaben fördert strings oft versteckte Flags, Kommandozeilen, IP-Adressen oder verdächtige Pfade aus einem Prozess-Abbild zutage, bevor man mit objdump oder readelf in die Details einsteigt. Die Kombination aus -n und -t liefert gezielt lange Kennungen samt Offset.

strings -n 10 -t x verdaechtige.bin

strings arbeitet auf der Ebene der Maschinensprache und ergänzt die Schwesterwerkzeuge der Binutils-Kette: nm für Symbole, objcopy für den Umbau, size für Größen.

Verwandte Grundlagen: objcopy-Befehle, size-Befehle, Symboltabelle.