Oletko koskaan yrittänyt avata tiedostoa editorissa vain löytääksesi sen sisältävän lukukelvotonta binaarisisältöä? Linuxin «strings»-komento mahdollistaa ihmisten luettavien merkkien tarkastelun missä tahansa tiedostossa. «Strings»-komennon käytön päätarkoitus on selvittää, minkä tyyppistä tiedostoa tarkastelet, mutta voit myös käyttää sitä tekstin purkamiseen. Jos sinulla on esimerkiksi tiedosto patentoidusta ohjelmasta, joka tallentaa tiedostot vieraassa binäärimuodossa, voit käyttää «merkkijonoja» tiedostoon lisäämäsi tekstin purkamiseen.
Esimerkki Strings-komennon käytöstä
Loistava tapa osoittaa merkkijonokomennon teho on luoda asiakirja LibreOffice Writer -ohjelmalla. Avaa LibreOffice Writer, kirjoita tekstiä ja tallenna se tavallisessa ODT-muodossa. Avaa nyt pääteikkuna (paina CTRL, ALT ja T samanaikaisesti) ja käytä sitten cat-komentoa listataksesi tiedoston seuraavasti: cat yourfilename.odt | Järvi
type=»code»> (Korvaa «omatiedostonimi.odt» luomasi tiedoston nimellä) Näet koko seinän lukukelvotonta tekstiä.
Selaa tiedostoa painamalla välilyöntinäppäintä. Näet satunnaisesti koko tiedoston osan kirjoittamastasi tekstistä. Strings-komentoa voidaan käyttää näyttämään vain ne osat, jotka ovat ihmisen luettavissa. Yksinkertaisimmassa muodossaan voit suorittaa seuraavan komennon: strings yourfilename.odt | Järvi
type=»code»> Kuten ennenkin, näkyviin tulee tekstimuuri, mutta vain tekstiä, jonka voit lukea ihmisenä. Jos olet onnekas, voit nähdä tekstisi. Avain on kuitenkin ensimmäisellä rivillä: mimetypeapplication/vnd.oasis.opendocument.text
type=»code»> Tiedämme, että tiedostotyyppi on LibreOffice Writer ODT -tiedosto kahdesta syystä:
- Loimme tiedoston
- Pääte on .ODT
Oletetaan, että et luonut tiedostoa tai löysit tiedoston palautetulta asemalta, eikä tiedostolla ole tunnistetta. Windowsin palautus palauttaa usein tiedostot, joiden nimi on 0001, 0002, 0003 jne. Se, että tiedostot palautettiin, on hienoa, mutta yrittää selvittää, millaisia tiedostoja ne olivat, oli painajainen. Merkkien käyttäminen antaa sinulle taistelumahdollisuuden selvittää tiedostotyyppi. Tietäen, että tiedosto on opendocument.text-tiedosto, voit tallentaa sen ODT-tunnisteella ja avata sen LibreOffice-kirjoittimessa. Jos et tiennyt, ODT-tiedosto on pohjimmiltaan pakattu tiedosto. Jos nimeät tiedostonimesi.odt:n uudelleen muotoon yourfilename.zip, voit avata sen arkistotyökalussa ja jopa purkaa tiedoston.
Vaihtoehtoinen käyttäytyminen
Oletusarvoisesti strings-komento palauttaa kaikki tiedoston merkkijonot, mutta voit muuttaa sen toimintaa palauttamaan merkkijonoja tiedoston alustus- ja ladatuista tietoosioista. Mitä tämä tarkalleen ottaen tarkoittaa? Kukaan ei näytä tietävän. On järkevää olettaa, että käytät merkkijonoja yrittääksesi selvittää tiedostotyypin tai etsiäksesi tiettyä tekstiä tiedostosta. Jos strings-komennon suorittaminen oletuskäyttäytymisellä ei tuota toivomaasi tulosta, kokeile suorittaa jokin seuraavista komennoista nähdäksesi, onko sillä eroa: strings -d tiedostonimi
type=»code»> tai merkkijonot –data tiedostonimesi
Man-sivulla todetaan, että yllä oleva komento voi auttaa vähentämään merkkijonojen palauttaman roskapostin määrää. «Strings»-komento voidaan asettaa toimimaan päinvastoin, jolloin miinus d -kytkin on oletustoiminto. Jos järjestelmässäsi on näin, voit palauttaa kaikki tiedot seuraavalla komennolla: strings -a yourfilename
type=»code»>
Muotoile tulos
Voit saada tulosteen tekstin näyttämään tiedoston nimen jokaisen tekstirivin vieressä. Voit tehdä tämän suorittamalla jonkin seuraavista komennoista: strings -f yourfilename
type=»code»> tai strings –print-filename yourfilename
Tulos näyttää nyt tältä: tiedostonimi: tekstinpala
tai tiedostonimesi: toinen teksti
Osana tulostetta voit myös näyttää siirtymän, josta teksti näkyy tiedostossa. Voit tehdä tämän suorittamalla seuraavan komennon: strings -o yourfilename
type=»code»> Tulos näyttää suunnilleen tältä: 16573 your17024 text
type=»code»> Poikkeama on itse asiassa oktaalipoikkeama, vaikka järjestelmäsi merkkijonojen kokoonpanosta riippuen se voi helposti olla myös heksa- tai desimaalipoikkeama. Tarkempi tapa saada haluamasi siirtymä on käyttää seuraavia komentoja: strings -td tiedostonimi
merkkijonot -tiedostonimellesi
merkkijonot – tiedostonimi
Miinus t tarkoittaa, että siirtymä palautetaan, ja sitä seuraava merkki määrittää siirtymän tyypin (eli d = desimaali, o = oktaali, h = heksa). Oletusarvoisesti strings-komento tulostaa jokaisen uuden merkkijonon uudelle riville, mutta voit asettaa haluamasi erottimen. Jos haluat esimerkiksi käyttää putkisymbolia («|») erottimena, suorita seuraava komento: strings -s «|» tiedostonimesi
type=»code»>
Säädä merkkijonojen rajaa
Oletusarvoisesti strings-komento etsii neljän tulostettavan merkin merkkijonoa peräkkäin. Voit muuttaa oletusasetusta palauttamaan vain merkkijonon, joka sisältää kahdeksan tulostettavaa merkkiä tai 12 tulostettavaa merkkiä. Säätämällä tätä rajaa voit säätää tehoa saadaksesi parhaan mahdollisen tuloksen. Liian pitkän merkkijonon etsiminen saattaa jättää hyödyllisen tekstin pois, mutta liian lyhyen tekstin tekeminen voi aiheuttaa paljon enemmän sotkua. Voit säätää merkkijonorajoitusta suorittamalla seuraavan komennon: strings -n 8 tiedostonimi
type=»code»> Muutin yllä olevassa esimerkissä rajaksi 8. Voit korvata luvun 8 valitsemallasi numerolla. Voit myös käyttää seuraavaa komentoa tehdäksesi saman: strings –bytes=8 yourfilename
type=»code»>
Lisää välilyönti
Merkkijono-komento sisältää oletusarvoisesti välilyönnin, kuten sarkaimen tai välilyönnin, tulostettavana merkkinä. Joten jos sinulla on merkkijono, jossa lukee «kissa istui matolla», strings-komento palauttaa koko tekstin. Rivinvaihtomerkkejä ja rivinvaihtoja ei pidetä oletusarvoisesti tulostettavina merkeinä. Jos haluat saada merkkijonot tunnistamaan rivinvaihtomerkit ja rivimerkit tulostettaviksi merkeiksi, suorita merkkijonoja seuraavasti: strings -w tiedostonimi
type=»code»>
Vaihda salaus
Käytettävissä on viisi koodausvaihtoehtoa merkkijonojen kanssa:
- s = 7-bittinen tavu (käytetään ASCII:lle, ISO 8859)
- S = 8-bittinen tavu
- b = 16-bittinen bigendian
- l = 16-bittinen littleendian
Oletusarvo on 7-bittinen tavu. Suorita seuraava komento vaihtaaksesi koodauksen: strings -es yourfilename
merkkijonot –encoding=s tiedostonimi
Yllä olevassa komennossa määritin oletusarvon «s», joka tarkoittaa 7-bittistä tavua. Korvaa «s» valitsemallasi salauskirjaimella.
Nimeä binääritiedoston kuvaus uudelleen
Voit muuttaa merkkijonojen toimintaa käyttämään erilaista binaaritiedostojen kuvauskirjastoa kuin järjestelmässäsi. Tämä kytkin on tarkoitettu asiantuntijoille. Jos haluat käyttää toista kirjastoa, voit tehdä tämän suorittamalla seuraavan strings-komennon: strings -T bfdname
type=»code»>
Lue vaihtoehdot tiedostosta
Jos aiot käyttää samoja vaihtoehtoja joka kerta, sinun ei tarvitse määrittää kaikkia kytkimiä joka kerta, kun suoritat komennon, koska tämä vie aikaa. Voit luoda tekstitiedoston nanolla ja määrittää sen asetukset. Kokeile tätä terminaalissa suorittamalla seuraava komento: nano stringsopts
type=»code»> Kirjoita tiedostoon seuraava teksti: -f -o -n 3 -s «|»
type=»code»> Tallenna tiedosto painamalla CTRL + OFF ja poistu painamalla CTRL + X† Suorita merkkijonokomennot näillä valinnoilla suorittamalla seuraava komento: strings @ stringsopts yourfilename
type=»code»> Vaihtoehdot luetaan stringsopts-tiedostosta, ja sinun pitäisi nähdä kunkin merkkijonon tiedostonimi, offset ja «|» erottimena.
Hanki apua
Jos haluat lukea lisää merkkijonoista, suorita seuraava komento saadaksesi apua. strings –help
type=»code»> Tai lue käsikirja: man strings
type=»code»>
Selvitä, mitä versiota merkkijonoista käytät
Suorita jokin seuraavista komennoista löytääksesi käyttämäsi merkkijonon version: strings -v
kielet -V
merkkijonot — versio