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