Како користити команду стрингова на Линуку

Желите да видите текст унутар бинарне датотеке или датотеке са подацима? Линук команда стрингс извлачи те делове текста – који се називају „стрингс“ – уместо вас.

Линук је пун команди које могу изгледати као решења у потрази за проблемима. Команда струна дефинитивно спада у тај табор. Шта је само његова сврха? Да ли постоји сврха команде која наводи стрингове за штампање из бинарне датотеке?

Хајдемо корак уназад. Бинарне датотеке—као што су програмске датотеке—могу да садрже низове текста читљивог људима. Али како да их видите? Ако користите цат или мање, вероватно ћете завршити са окаченим прозором терминала. Програми који су дизајнирани да раде са текстуалним датотекама не сналазе се добро ако се кроз њих уносе знакови који се не могу штампати.

Већина бајтова унутар бинарне датотеке није читљива људима и не може се одштампати у прозор терминала на начин који има било какав смисао. Не постоје знакови или стандардни симболи који представљају бинарне вредности који не одговарају алфанумеричким знаковима, интерпункцији или размацима. Заједно, они су познати као знакови који се могу штампати. Остатак су знакови који се „не могу штампати“.

Дакле, покушај прегледа или претраживања текстуалних низова у бинарној или податковној датотеци представља проблем. И ту долазе жице. Извлаче се низови знакова за штампање из датотека тако да друге команде могу да користе стрингове без потребе да се боре са знаковима који се не могу штампати.

Коришћење стрингова Цомманд

Нема ништа компликовано у вези са стрингс командом, а њена основна употреба је веома једноставна. На командној линији дајемо име датотеке по којој желимо да стрингови претражују.

  Како смањити температуру ГПУ-а

Овде ћемо користити стрингове на бинарној датотеци — извршној датотеци — која се зове „јиббер“. Укуцамо стрингове, размак, „јиббер“, а затим притиснемо Ентер.

strings jibber

Низови се издвајају из датотеке и наводе у прозору терминала.

Подешавање минималне дужине низа

Подразумевано, стрингови ће тражити низове који имају четири карактера или дуже. Да бисте подесили дужу или краћу минималну дужину, користите опцију -н (минимална дужина).

Имајте на уму да што је краћа минимална дужина, веће су шансе да ћете видети више смећа.

Неке бинарне вредности имају исту нумеричку вредност као вредност која представља знак за штампање. Ако се две од тих нумеричких вредности нађу једна поред друге у датотеци и наведете минималну дужину од две, ти бајтови ће бити пријављени као да су стринг.

Да бисте тражили да стрингови користе два као минималну дужину, користите следећу команду.

strings -n 2 jibber

Сада имамо низове од два слова укључене у резултате. Имајте на уму да се размаци рачунају као знак за штампање.

Цевоводне жице кроз мање

Због дужине излаза из стрингова, проћи ћемо кроз мање. Затим можемо да скролујемо кроз датотеку тражећи текст који нас занима.

strings jibber | less

Листа је сада представљена за нас у мањем броју, са првим приказаним врхом листе.

Коришћење стрингова са објектним датотекама

Типично, датотеке изворног кода програма се компајлирају у објектне датотеке. Они су повезани са датотекама библиотеке да би се креирала бинарна извршна датотека. Имамо при руци датотеку јиббер објекта, па хајде да погледамо унутар тог фајла. Обратите пажњу на екстензију датотеке „.о“.

jibber.o | less

Први сет стрингова се умотава у колону осам ако је дужи од осам знакова. Ако су умотани, знак „Х“ је у колони девет. Ове стрингове можете препознати као СКЛ наредбе.

  Најбољи АирПлаи пријемници

Померање кроз излаз открива да се ово форматирање не користи у целој датотеци.

Занимљиво је видети разлике у текстуалним низовима између објектне датотеке и готовог извршног фајла.

Претраживање у одређеним областима у датотеци

Преведени програми имају различите области у себи које се користе за складиштење текста. Подразумевано, стрингс претражује целу датотеку тражећи текст. Ово је исто као да сте користили опцију -а (све). Да бисте тражили стрингове само у иницијализованим, учитаним одељцима података у датотеци, користите опцију -д (подаци).

strings -d jibber | less

Осим ако немате добар разлог за то, можете користити подразумевану поставку и претражити целу датотеку.

Штампање одступања низа

Можемо да дозволимо да стрингови штампају помак од почетка датотеке на којој се налази сваки низ. Да бисте то урадили, користите опцију -о (оффсет).

strings -o parse_phrases | less

Оффсет је дат у Оцтал.

Да би се помак приказао у другој нумеричкој бази, као што је децимални или хексадецимални, користите опцију -т (радикс). Опција радик мора бити праћена са д (децималан), Икс (хексадецимални), или о (октално). Коришћење -то је исто као и коришћење -о.

strings -t d parse_phrases | less

Помаци се сада штампају децимално.

strings -t x parse_phrases | less

Помаци се сада штампају хексадецимално.

Укључујући размак

стрингс сматра знакове табулатора и размака делом стрингова које пронађе. Други знакови размака, као што су нови редови и повратни знакови, не третирају се као да су део стрингова. Опција -в (размак) узрокује да стрингови третирају све знакове размака као да су делови стринга.

strings -w add_data | less

Можемо да видимо празан ред у излазу, који је резултат (невидљивог) повратка и знакова новог реда на крају другог реда.

  Декодирање сложене обраде догађаја једноставнијим терминима

Нисмо ограничени на датотеке

Можемо да користимо низове са било чим што је, или може произвести, ток бајтова.

Са овом командом, можемо да прегледамо РАМ меморија (РАМ) нашег рачунара.

Морамо да користимо судо јер приступамо /дев/мем. Ово је датотека карактерног уређаја која садржи слику главне меморије вашег рачунара.

sudo strings /dev/mem | less

Списак није цео садржај ваше РАМ меморије. То су само жице које се могу извући из њега.

Претраживање више датотека одједном

Замолници се могу користити за одабир група датотека које ће се претраживати. Знак * представља више знакова, а ? знак представља било који појединачни знак. Такође можете изабрати да наведете много имена датотека на командној линији.

Користићемо џокер знак и претражити све извршне датотеке у /бин директоријуму. Пошто ће листа садржати резултате из многих датотека, користићемо опцију -ф (име датотеке). Ово ће одштампати назив датотеке на почетку сваког реда. Тада можемо видети у којој је датотеци пронађен сваки низ.

Преносимо резултате греп, и тражећи низове који садрже реч „Ауторска права“.

strings -f /bin/* | grep Copyright

Добијамо уредан списак изјава о ауторским правима за сваку датотеку у /бин директоријуму, са именом датотеке на почетку сваког реда.

жице Унравеллед

Нема мистерије за жице; то је типична Линук команда. Ради нешто врло специфично и то веома добро.

То је још један од зупчаника Линука и заиста оживљава када ради са другим командама. Када видите како може да седи између бинарних датотека и других алата као што је греп, почињете да цените функционалност ове помало нејасне команде.