Вы когда-нибудь пытались открыть файл в редакторе, чтобы узнать, что он содержит нечитаемый двоичный контент?
Команда «strings» Linux позволяет просматривать человекочитаемые символы в любом файле.
Основная цель использования команды «strings» - выработать тип файла, который вы просматриваете, но вы также можете использовать его для извлечения текста. Например, если у вас есть файл из проприетарной программы, которая сохраняет файлы в странном двоичном формате, вы можете использовать «строки» для извлечения текста, который вы помещаете в файл.
Пример использования команды строк
Отличным способом продемонстрировать силу команды strings является создание документа с использованием LibreOffice Writer.
Просто откройте LibreOffice Writer и введите текст, а затем сохраните его в стандартном формате ODT.
Теперь откройте окно терминала (одновременно нажмите CTRL, ALT и T), а затем используйте команду cat для отображения файла следующим образом:
cat yourfilename.odt | Больше
(Замените файл yourfilename.odt на имя созданного вами файла)
То, что вы увидите, - целая стена неразборчивого текста.
Нажмите пробел для прокрутки файла. Среда по всему файлу вы увидите часть текста, который вы ввели.
Команда strings может использоваться для отображения только тех частей, которые доступны для чтения.
В простейшей форме вы можете запустить следующую команду:
strings yourfilename.odt | Больше
Как и прежде, появится стена текста, но только текст, который вы можете читать как человек. Если вам повезет, вы сможете увидеть свой текст.
Однако вы можете увидеть, что это ключ, на первой строке:
mimetypeapplication / vnd.oasis.opendocument.text
Мы знаем, что тип файла является файлом ODT LibreOffice Writer по двум причинам:
- Мы создали файл
- Расширение - .ODT
Представьте, что вы не создали файл или вы нашли файл на восстановленном диске, и файл не имел расширения.
Восстановление Windows часто восстанавливало файлы с именами, такими как 0001, 0002, 0003 и т. Д. Тот факт, что файлы были восстановлены, замечательно, но пытается разобраться, какие типы этих файлов были кошмаром.
Используя строки, у вас есть шанс сразиться с типом файла. Зная, что файл является файлом opendocument.text, вы можете сохранить его с расширением ODT и открыть его в LibreOffice.
Если вы не знали, что файл ODT представляет собой сжатый файл. Если вы переименуете yourfilename.odt в файл yourfilename.zip, вы можете открыть его в инструменте архивации и даже разархивировать файл.
Альтернативное поведение
По умолчанию команда strings возвращает все строки в файле, но вы можете переключать поведение так, чтобы оно возвращало строки из инициализированных загруженных разделов данных в файл.
Что это значит? Кажется, никто не знает.
Имеет смысл предположить, что вы используете строки, чтобы попытаться либо узнать тип файла, либо найти конкретный текст в файле.
Если при запуске команды strings с использованием поведения по умолчанию вы не получите вывод, на который вы надеялись, попробуйте запустить одну из следующих команд, чтобы увидеть, имеет ли значение значение:
На странице руководства указано, что приведенная выше команда может помочь уменьшить количество мусора, возвращаемого из строк. Команда «strings» может быть настроена для работы в обратном порядке, так что переключатель минус d является поведением по умолчанию. Если это имеет место в вашей системе, вы можете вернуть все данные, используя следующую команду: Вы можете получить текст на выходе, чтобы отобразить имя файла рядом с каждой строкой текста. Для этого выполните одну из следующих команд: Результат теперь будет выглядеть примерно так: В качестве части вывода вы также можете отобразить смещение, где этот текст появляется в файле. Для этого выполните следующую команду: Результат будет выглядеть примерно так: Смещение фактически является восьмеричным смещением, хотя в зависимости от того, как строки были скомпилированы для вашей системы, это может быть просто шестнадцатеричным или десятичным смещением. Более точный способ получения смещения вы хотите использовать следующие команды: Минус t означает возврат смещения, а последующий символ определяет тип смещения. (т. е. d = десятичный, o = восьмеричный, h = hex). По умолчанию команда strings печатает каждую новую строку в новой строке, но вы можете установить разделитель по вашему выбору. Например, чтобы использовать символ трубы («|») в качестве разделителя, выполните следующую команду: Команда strings по умолчанию ищет строку из 4 печатных символов в строке. Вы можете настроить значение по умолчанию так, чтобы оно возвращало только строку с 8 печатными знаками или 12 печатными символами. Регулируя это ограничение, вы можете настроить выход, чтобы получить наилучший результат. Если вы ищете слишком длинную строку, вы рискуете упустить полезный текст, но, сделав его слишком коротким, вы можете получить гораздо больше нежелательных сообщений. Чтобы настроить ограничение строки, выполните следующую команду: В приведенном выше примере я изменил предел на 8.Вы можете заменить 8 номером по вашему выбору. Вы также можете использовать следующую команду, чтобы сделать то же самое: По умолчанию команда strings включает пробелы, такие как вкладка или пробел, в качестве печатаемого символа. Поэтому, если у вас есть строка, которая читается как «кот сидел на коврике», тогда команда строк вернет весь текст. Новые символы строк и возврат каретки по умолчанию не считаются печатными символами. Чтобы получить строки для распознавания новых символов строк и возвратов каретки в виде строк для печати, выполните следующие действия: Существует 5 вариантов кодирования, доступных для использования со строками: По умолчанию используется 7 бит. Чтобы изменить кодировку, выполните следующую команду: В приведенной выше команде я указал значение по умолчанию «s», что означает 7-битный байт. Просто замените «s» буквой кодировки по вашему выбору. Вы можете изменить поведение строк так, чтобы он использовал другую библиотеку дескрипторов двоичных файлов, отличную от той, которая предусмотрена для вашей системы. Этот переключатель подходит для экспертов. Если у вас есть другая библиотека, которую вы можете использовать, вы можете сделать это, выполнив следующую команду: Если вы собираетесь использовать одни и те же параметры каждый раз, то вам не нужно указывать все переключатели каждый раз, когда вы запускаете команду, потому что это требует времени. Вы можете создать текстовый файл с помощью nano и указать параметры внутри этого файла. Чтобы попробовать это в терминальном режиме, выполните следующую команду: В файле введите следующий текст: Сохраните файл, нажав CTRL и O и выйдите, нажав CTRL и X. Для запуска команд строк с этими параметрами выполните следующую команду: Параметры будут прочитаны из файла stringsopts, и вы должны увидеть имя файла перед каждой строкой, смещением и «|» как разделитель. Если вы хотите больше узнать о строках, вы можете запустить следующую команду, чтобы получить справку. Кроме того, вы также можете прочитать страницу руководства: Чтобы найти версию запущенных строк, выполните одну из следующих команд:strings -d yourfilenameстроки --data yourfilenamestrings -a yourfilename Форматирование вывода
strings -f yourfilenamestrings --print-file-name yourfilenameyourfilename: фрагмент текстаyourfilename: еще один фрагмент текстастроки -o yourfilename16573 ваш17024 текстstrings -t d yourfilenamestrings -t o yourfilenamestrings -t h yourfilenamestrings -s "|" yourfilename Отрегулируйте строковый предел
strings -n 8 yourfilenameстроки --bytes = 8 yourfilename Включить пробелы
strings -w yourfilename Изменить кодировку
strings -e s yourfilenamestrings --encoding = s yourfilename Изменение имени описания двоичного файла
strings -T bfdname Параметры чтения из файла
nano stringsopts-f -o -n 3 -s "|"Строки @stringsopts yourfilename Получать помощь
строки --helpчеловеческие струны Узнайте, какую версию строк вы выполняете
строки -vстроки -Vстроки --версия




