Pokažite natisljive znake datoteke z nizi

Ste že kdaj poskusili odpreti datoteko v urejevalniku samo zato, da bi ugotovili, da vsebuje neberljivo binarno vsebina?

The Linux Ukaz "strings" omogoča ogled človeku berljivih znakov v kateri koli datoteki.

Glavni namen uporabe ukaza "strings" je ugotoviti, katero vrsto datoteke gledate, lahko pa jo uporabite tudi za ekstrakcijo besedila. Na primer, če imate datoteko iz lastniškega programa, ki shranjuje datoteke v čudni binarni obliki, lahko uporabite "nize" za ekstrakcijo besedila, ki ste ga vnesli v datoteko.

Primer uporabe ukaza Strings

Odličen način za prikaz moči ukaza strings je ustvarjanje dokumenta z uporabo LibreOffice Writer.

Odprto LibreOffice Writer, vnesite nekaj besedila in ga nato shranite vstandardni format ODT.

zdaj odprite okno terminala (pritisnite CTRL, ALT in T hkrati) in nato uporabite mačji ukaz za prikaz datoteke na naslednji način:

mačka vaše ime datoteke.odt | več. 

(Zamenjajte "yourfilename.odt" z imenom datoteke, ki ste jo ustvarili)

Videli boste cel zid nečitljivega besedila.

Linux cat odt datoteka

Pritisnite preslednico, da se pomikate po datoteki. Občasno v datoteki boste videli nekaj besedila, ki ste ga vnesli.

Ukaz strings se lahko uporablja za prikaz samo delov, ki so berljivi.

V najpreprostejši obliki lahko zaženete naslednji ukaz:

strings yourfilename.odt | več. 

Kot prej se bo pojavil zid besedila, vendar le besedilo, ki ga lahko berete kot človek. Če boste imeli srečo, boste lahko videli svoje besedilo.

Kar pa boste lahko videli, kar je ključnega pomena, je v prvi vrstici:

mimetypeapplication/vnd.oasis.opendocument.text. 

Vemo, da je vrsta datoteke datoteka LibreOffice Writer ODT iz dveh razlogov:

  1. Ustvarili smo datoteko
  2. Razširitev je .ODT
Odt datoteka ukaza nizov Linux

Predstavljajte si, da niste ustvarili datoteke ali da ste datoteko našli na obnovljenem disku, datoteka pa nima končnice.

Obnovitev sistema Windows pogosto obnovi datoteke z imeni, kot so 0001, 0002, 0003 itd. Dejstvo, da so bile datoteke obnovljene, je odlično, a poskus ugotoviti, katere vrste so bile te datoteke, je bila nočna mora.

Z uporabo nizov imate bojne možnosti, da ugotovite vrsto datoteke. Če veste, da je datoteka datoteka opendocument.text, jo lahko shranite s pripono ODT in jo odprete v programu LibreOffice writer.

Če niste vedeli, je datoteka ODT v bistvu stisnjena datoteka. Če preimenujete ime datoteke.odt v ime datoteke.zip, jo lahko odprete v orodju za arhiviranje in celo razpakirate datoteko.

Alternativno vedenje

Ukaz strings privzeto vrne vse nize v datoteki, vendar lahko spremenite vedenje tako, da vrne nize iz inicializiranih, naloženih podatkovnih odsekov v datoteki.

Kaj točno to pomeni? Zdi se, da nihče ne ve.

Smiselno je domnevati, da uporabljate nize, da poskusite ugotoviti vrsto datoteke ali poiskati določeno besedilo v datoteki.

Če pri izvajanju ukaza strings s privzetim vedenjem ne dobite rezultata, ki ste ga pričakovali, poskusite zagnati enega od naslednjih ukazov in preverite, ali je to pomembno:

nizi -d vaše ime datoteke. 

oz.

nizi --podatki vaše ime datoteke. 

Na strani z navodili je navedeno, da lahko zgornji ukaz pomaga zmanjšati količino smeti, vrnjene iz nizov.

Ukaz "strings" lahko nastavite za obratno delovanje, tako da je stikalo minus d privzeto vedenje. Če je v vašem sistemu tako, lahko vse podatke vrnete z naslednjim ukazom:

nizi -a vaše ime datoteke. 

Formatiranje izhoda

Besedilo lahko dobite v izhodu, da prikažete ime datoteke ob vsaki vrstici besedila.

Če želite to narediti, zaženite enega od naslednjih ukazov:

strings -f vaše ime datoteke. 

oz.

strings --print-file-name yourfilename. 

Izhod bo zdaj videti nekako takole:

vaše ime datoteke: del besedila. 

oz.

vaše ime datoteke: še en del besedila. 

Kot del izhoda lahko prikažete tudi odmik, kjer se to besedilo pojavi v datoteki. Če želite to narediti, zaženite naslednji ukaz:

nizi -o vaše ime datoteke. 

Izhod bo videti nekako takole:

16573 vaše17024 besedilo. 

Odmik je pravzaprav osmiški odmik, čeprav je lahko, odvisno od tega, kako so bili nizi prevedeni za vaš sistem, lahko tudi šestnajstiški ali decimalni odmik.

Natančnejši način za pridobitev želenega odmika je uporaba naslednjih ukazov:

nizi -t d vaše ime datoteke
nizi -t o vašem imenu datoteke
nizi -t h vaše ime datoteke.

Minus t pomeni vrnitev odmika, znak, ki sledi, pa določa vrsto odmika (tj. d = decimalni, o = osmiški, h = šestnajstiški).

Privzeto ukaz strings natisne vsak nov niz v novo vrstico, lahko pa nastavite ločilo po svoji izbiri. Če želite na primer uporabiti simbol cevi ("|") kot ločilo, zaženite naslednji ukaz:

nizi -s "|" vaše ime datoteke. 

Prilagodite mejo niza

Ukaz strings privzeto išče niz štirih natisljivih znakov v vrsti. Privzeto lahko prilagodite tako, da vrne samo niz z osmimi znaki, ki jih je mogoče natisniti, ali 12 natisljivimi znaki.

S prilagoditvijo te omejitve lahko prilagodite izhod, da dobite najboljši možni rezultat. Če iščete predolg niz, tvegate, da boste izpustili uporabno besedilo, če pa ga naredite prekratko, boste morda na koncu dobili veliko več vrnjene smete.

Če želite prilagoditi omejitev niza, zaženite naslednji ukaz:

nizi -n 8 vaše ime datoteke. 

V zgornjem primeru sem spremenil omejitev na 8. 8 lahko zamenjate s številko po vaši izbiri.

Za isto stvar lahko uporabite tudi naslednji ukaz:

strings --bytes=8 ime vaše datoteke. 

Vključi presledke

Ukaz strings privzeto vključuje presledke, kot je tabulator ali presledek, kot znak za tiskanje. Če torej imate niz, ki se glasi kot "mačka je sedela na blazini", potem bi ukaz strings vrnil celotno besedilo.

Znaki nove vrstice in vrnitve nosilca se privzeto ne štejejo za znake za tiskanje.

Če želite pridobiti nize za prepoznavanje novih znakov v vrstici in vrnitev nosilca kot znaka za tiskanje, zaženite nize na naslednji način:

nizi -w vaše ime datoteke. 

Spremenite kodiranje

Za uporabo z nizi je na voljo pet možnosti kodiranja:

  • s = 7-bitni bajt (uporablja se za ASCII, ISO 8859)
  • S = 8-bitni bajt 
  • b = 16-bitni bigendian
  • l = 16-bitni littleendian

Privzeto je 7-bitni bajt.

Če želite spremeniti kodiranje, zaženite naslednji ukaz:

nizi -e je vaše ime datoteke
strings --encoding=s vaše ime datoteke.

V zgornjem ukazu sem določil privzeto "s", kar pomeni 7-bitni bajt. Zamenjajte "s" s črko kodiranja po vaši izbiri.

Spremenite ime opisa binarne datoteke

Obnašanje nizov lahko spremenite tako, da uporablja drugačno knjižnico deskriptorjev binarnih datotek, ki ni tista, ki je na voljo za vaš sistem.

To stikalo je eno za strokovnjake. Če imate za uporabo drugo knjižnico, lahko to storite tako, da zaženete naslednji ukaz nizov:

nizi -T bfdname. 

Možnosti branja iz datoteke

Če boste vsakič uporabili iste možnosti, potem ne želite, da vam je treba podajati vseh stikal vsakič, ko zaženete ukaz, ker to zahteva čas.

Kar lahko storite, je ustvariti besedilno datoteko z uporabo nano in določiti možnosti znotraj te datoteke.

Če želite to preizkusiti v terminalu, zaženite naslednji ukaz:

nano stringsopts. 

V datoteko vnesite naslednje besedilo:

-f -o -n 3 -s "|"

Shranite datoteko s pritiskom na CTRL + O in zapustite s pritiskom na CTRL + X.

Če želite zagnati ukaze nizov s temi možnostmi, zaženite naslednji ukaz:

strings @stringsopts vaše ime datoteke. 

Možnosti bodo prebrane iz datotek stringsopts, pred vsakim nizom pa bi morali videti ime datoteke z odmikom in znakom "|" kot ločilo.

Pridobivanje pomoči

Če želite prebrati več o nizih, zaženite naslednji ukaz, da dobite pomoč.

strune --pomoč. 

Druga možnost je, da preberete stran z navodili:

moške strune. 

Ugotovite, katero različico nizov izvajate

Če želite poiskati različico nizov, ki jih izvajate, zaženite enega od naslednjih ukazov:

strune -v
strune -V
nizi --različica.