Egy fájl nyomtatható karaktereinek megjelenítése karakterláncokkal
Próbáltál már úgy megnyitni egy fájlt egy szerkesztőben, hogy megtudd, hogy az olvashatatlant tartalmaz? bináris tartalom?
Az Linux A "strings" parancs lehetővé teszi az ember által olvasható karakterek megtekintését bármely fájlban.
A "strings" parancs használatának fő célja annak megállapítása, hogy milyen típusú fájlt nézel, de használhatod szöveg kibontására is. Például, ha van egy fájlja egy szabadalmaztatott programból, amely furcsa bináris formátumban menti a fájlokat, akkor "karakterláncokkal" bonthatja ki a fájlba helyezett szöveget.
Példa a Strings parancs használatára
A strings parancs erejének bemutatásának nagyszerű módja a dokumentum létrehozása a LibreOffice Writer segítségével.
Nyisd ki LibreOffice Író, írjon be egy szöveget, majd mentse el aszabványos ODT formátum.
Most nyisson meg egy terminál ablakot (nyomja meg CTRL, ALT és T egyidejűleg), majd használja a macska parancs a fájl megjelenítéséhez a következőképpen:
cat yourfilename.odt | több.
(Cserélje ki a "sajatfilename.odt" elemet a létrehozott fájl nevére)
Amit látni fog, az egy egész fal olvashatatlan szöveg.

Nyomja meg a szóköz billentyűt a fájl görgetéséhez. A fájlban szórványosan megjelenik a beírt szöveg egy része.
A strings parancs csak az ember által olvasható részek megjelenítésére használható.
A legegyszerűbb formában a következő parancsot futtathatja:
karakterláncok yourfilename.odt | több.
A korábbiakhoz hasonlóan egy szövegfal jelenik meg, de csak olyan szöveg, amelyet emberként olvashat. Ha szerencséd van, akkor láthatod a szövegedet.
Amit azonban látni fogsz, ami kulcsfontosságú, az az első sorban található:
mimetypeapplication/vnd.oasis.opendocument.text.
Két okból tudjuk, hogy a fájltípus LibreOffice Writer ODT fájl:
- Létrehoztuk a fájlt
- A kiterjesztés .ODT

Képzelje el, hogy nem Ön hozta létre a fájlt, vagy egy helyreállított lemezen találta a fájlt, és a fájl nem rendelkezik kiterjesztéssel.
Windows helyreállítás gyakran helyreállítja a 0001, 0002, 0003 stb. nevű fájlokat. Az a tény, hogy a fájlokat helyreállították, nagyszerű, de megpróbálni kitalálni, hogy milyen típusúak voltak ezek a fájlok, rémálom volt.
A karakterláncok használatával esélye van a fájltípus kidolgozására. Ha tudja, hogy egy fájl opendocument.text fájl, azt el tudja menteni az ODT kiterjesztéssel, és megnyithatja a LibreOffice íróban.
Ha nem tudna róla, az ODT-fájl alapvetően egy tömörített fájl. Ha átnevezi a fájlnevet.odt fájlt a sajátfájlnév.zip fájlra, megnyithatja egy archiváló eszközben, és akár ki is csomagolhatja a fájlt.
Alternatív viselkedések
Alapértelmezés szerint a strings parancs a fájlon belüli összes karakterláncot visszaadja, de megváltoztathatja a viselkedést úgy, hogy a fájl inicializált, betöltött adatrészeiből adjon vissza karakterláncokat.
Mit jelent ez pontosan? Úgy tűnik, senki sem tudja.
Célszerű azt feltételezni, hogy karakterláncokat használ a fájltípus kiderítésére, vagy egy adott szöveg megkeresésére egy fájlban.
Ha a strings parancs alapértelmezett viselkedéssel történő futtatásakor nem kapja meg a várt kimenetet, próbálja meg a következő parancsok egyikét futtatni, hogy megnézze, van-e változás:
strings -d a fájlnév.
vagy.
strings --adatok a fájlnév.
A kézikönyvoldal azt írja, hogy a fenti parancs segíthet csökkenteni a karakterláncokból visszaküldött szemét mennyiségét.
A "strings" parancs beállítható úgy, hogy fordítottan működjön, így a mínusz d kapcsoló az alapértelmezett viselkedés. Ha ez a helyzet az Ön rendszerén, akkor az összes adatot visszaadhatja a következő paranccsal:
strings -a fájlnév.
Kimenet formázása
Beállíthatja, hogy a kimeneten belüli szöveg minden szövegsor mellett megjelenjen a fájl neve.
Ehhez futtassa a következő parancsok egyikét:
strings -f your filename.
vagy.
strings --print-file-name yourfilename.
A kimenet most valahogy így fog kinézni:
yourfilename: egy szövegrész.
vagy.
yourfilename: egy másik szövegrész.
A kimenet részeként megjelenítheti azt az eltolást is, ahol a szöveg megjelenik egy fájlban. Ehhez futtassa a következő parancsot:
strings -o your filename.
A kimenet valahogy így fog kinézni:
16573 a 17024-es szöveged.
Az eltolás valójában az oktális eltolás, bár attól függően, hogy a karakterláncokat hogyan fordították le a rendszerben, könnyen lehet, hogy hexa vagy decimális eltolás is lehet.
A kívánt eltolás pontosabb módja a következő parancsok használata:
strings -t d az Ön fájlneve
strings -t o your filename
strings -t h your filename.
A mínusz t azt jelenti, hogy az eltolást adja vissza, és az ezt követő karakter határozza meg az eltolás típusát (azaz d = decimális, o = oktális, h = hex).
Alapértelmezés szerint a strings parancs minden új karakterláncot új sorba nyomtat, de beállíthatja a választott határolót. Ha például egy csőszimbólumot ("|") szeretne használni határolóként, futtassa a következő parancsot:
strings -s "|" a fájlneved.
Állítsa be a karakterlánc-korlátot
A strings parancs alapértelmezés szerint négy nyomtatható karakterből álló karakterláncot keres egymás után. Beállíthatja az alapértelmezett értéket úgy, hogy csak nyolc nyomtatható karakterből vagy 12 nyomtatható karakterből álló karakterláncot adjon vissza.
Ennek a határértéknek a beállításával személyre szabhatja a kimenetet a lehető legjobb eredmény elérése érdekében. Ha túl hosszú karakterláncot keres, azzal kockáztatja, hogy kihagyja a hasznos szöveget, de ha túl rövidre teszi, sokkal több szemét kerül vissza.
A karakterlánc-korlát beállításához futtassa a következő parancsot:
strings -n 8 az Ön fájlneve.
A fenti példában a korlátot 8-ra módosítottam. A 8-ast tetszés szerinti számmal helyettesítheti.
Ugyanezt a következő parancsot is használhatja:
strings --bytes=8 az Ön fájlneve.
Tegye bele a szóközt
Alapértelmezés szerint a strings parancs nyomtatható karakterként tartalmaz szóközt, például tabulátort vagy szóközt. Ezért ha van egy karakterlánca, amely így szól: "a macska ült a szőnyegen", akkor a strings parancs a teljes szöveget visszaadja.
Az új sorkarakterek és kocsivisszaadások alapértelmezés szerint nem számítanak nyomtatható karaktereknek.
Ahhoz, hogy a karakterláncok felismerjék az új sorkaraktereket és a kocsivisszaadásokat nyomtatható karakterként, futtassa a karakterláncokat a következő módon:
strings -w a fájlneve.
Módosítsa a kódolást
Öt kódolási lehetőség áll rendelkezésre a karakterláncokhoz:
- s = 7 bites bájt (ASCII, ISO 8859 esetén használatos)
- S = 8 bites bájt
- b = 16 bites bigendian
- l = 16 bites littleendian
Az alapértelmezett egy 7 bites bájt.
A kódolás megváltoztatásához futtassa a következő parancsot:
strings -e s your filename
strings --encoding=s az Ön fájlneve.
A fenti parancsban az alapértelmezett "s"-t adtam meg, ami 7 bites bájtot jelent. Cserélje ki az "s" betűt a választott kódoló betűvel.
Módosítsa a bináris fájl leírási nevét
Módosíthatja a karakterláncok viselkedését úgy, hogy az a rendszerhez biztosítotttól eltérő bináris fájlleíró könyvtárat használjon.
Ez a kapcsoló a szakértők számára készült. Ha van másik könyvtára is, akkor ezt a következő strings parancs futtatásával teheti meg:
strings -T bfdname.
Beolvasási beállítások egy fájlból
Ha minden alkalommal ugyanazokat az opciókat fogja használni, akkor ne kelljen minden kapcsolót megadnia a parancs minden egyes futtatásakor, mert ez időbe telik.
Amit megtehetsz, létrehozhatsz egy szöveges fájlt a nano segítségével, és megadhatod a fájl beállításait.
Ennek terminálon belüli kipróbálásához futtassa a következő parancsot:
nano stringsopts.
A fájlba írja be a következő szöveget:
-f -o -n 3 -s "|"
Mentse el a fájlt a gomb megnyomásával CTRL + O és a gomb megnyomásával lépjen ki CTRL + X.
A karakterlánc-parancsok ezekkel az opciókkal való futtatásához futtassa a következő parancsot:
strings @stringsopts yourfilename.
A beállításokat a rendszer a stringsopts fájlból olvassa be, és minden karakterlánc előtt látnia kell a fájlnevet, az eltolást és a "|" jelet. mint elválasztó.
Segítség kérése
Ha többet szeretne olvasni a karakterláncokról, futtassa a következő parancsot a segítségért.
strings --help.
Alternatív megoldásként olvassa el a kézikönyv oldalát:
férfi húrok.
Tudja meg, hogy a karakterláncok melyik verzióját használja
A futtatott karakterláncok verziójának megkereséséhez futtassa a következő parancsok egyikét:
húrok -v
húrok -V
strings --version.