如何在linux上使用strings命令

要查看二进制文件或数据文件中的文本吗?Linux strings命令为您提取那些称为“strings”的文本。...

要查看二进制文件或数据文件中的文本吗?Linux strings命令为您提取那些称为“strings”的文本。

Linux充满了看起来像是解决问题的解决方案的命令。弦乐司令部肯定属于那个阵营。它的目的是什么?是否有指向列出二进制文件中可打印字符串的命令的点?

让我们后退一步。诸如程序文件之类的二进制文件可以包含人类可读文本的字符串。但是你怎么才能看到他们呢?如果你使用cat或更少,你很可能会以一个悬挂终端窗口结束。如果将不可打印的字符输入到文本文件中,则设计用于处理文本文件的程序无法很好地处理这些文件。

二进制文件中的大部分字节不是人类可读的,不能以任何有意义的方式打印到终端窗口。没有与字母数字字符、标点符号或空格不对应的字符或标准符号来表示二进制值。这些字符统称为“可打印”字符。其余为“不可打印”字符。

因此,试图在二进制文件或数据文件中查看或搜索文本字符串是一个问题。这就是弦的作用。它从文件中提取可打印字符的字符串,以便其他命令可以使用这些字符串,而不必与不可打印字符竞争。

使用strings命令

strings命令并不复杂,它的基本用法非常简单。我们在命令行中提供希望字符串搜索的文件名。

在这里,我们将在一个二进制文件上使用字符串,一个叫做“jibber”的可执行文件。

strings jibber

如何在linux上使用strings命令

字符串从文件中提取并在终端窗口中列出。

如何在linux上使用strings命令

设置最小字符串长度

默认情况下,字符串将搜索四个字符或更长的字符串。要设置更长或更短的最小长度,请使用-n(最小长度)选项。

注意,最小长度越短,你看到更多垃圾的几率就越高。

某些二进制值与表示可打印字符的值具有相同的数值。如果其中两个数值恰好并排出现在文件中,并且您指定的最小长度为2,那么这些字节将被报告为一个字符串。

要要求字符串使用2作为最小长度,请使用以下命令。

strings -n 2 jibber

如何在linux上使用strings命令

我们现在有两个字母字符串包含在结果中。请注意,空格被计算为可打印字符。

如何在linux上使用strings命令

管道串通过

由于字符串输出的长度,我们将通过更少的管道。然后我们可以在文件中滚动查找感兴趣的文本。

strings jibber | less

如何在linux上使用strings命令

清单现在以较少的形式呈现给我们,首先显示清单的顶部。

如何在linux上使用strings命令

对对象文件使用字符串

通常,程序源代码文件被编译成目标文件。这些文件与库文件链接以创建二进制可执行文件。我们手头有jibber对象文件,所以让我们看看这个文件。请注意“.o”文件扩展名。

jibber.o | less

如何在linux上使用strings命令

如果第一组字符串的长度超过8个字符,则它们将全部包装在第8列。如果它们已被包装,则第九列中有一个“H”字符。您可以将这些字符串识别为SQL语句。

如何在linux上使用strings命令

滚动输出会发现文件中没有使用这种格式。

如何在linux上使用strings命令

有趣的是,可以看到目标文件和完成的可执行文件之间文本字符串的差异。

在文件的特定区域中搜索

编译程序内部有不同的区域用于存储文本。默认情况下,字符串搜索整个文件以查找文本。这就像您使用了-a(all)选项一样。要使字符串只在文件中已初始化、已加载的数据节中搜索,请使用-d(data)选项。

strings -d jibber | less

如何在linux上使用strings命令

除非您有充分的理由这样做,否则最好使用默认设置并搜索整个文件。

打印字符串偏移量

我们可以让字符串打印从每个字符串所在的文件开始的偏移量。为此,请使用-o(offset)选项。

strings -o parse_phrases | less

如何在linux上使用strings命令

偏移量以八进制表示。

如何在linux上使用strings命令

要以不同的数字基(如十进制或十六进制)显示偏移量,请使用-t(基数)选项。基数选项必须后跟d(十进制)、x(十六进制)或o(八进制)。使用-to和使用-o是一样的。

strings -t d parse_phrases | less

如何在linux上使用strings命令

偏移量现在以十进制打印。

如何在linux上使用strings命令

strings -t x parse_phrases | less

如何在linux上使用strings命令

偏移量现在以十六进制打印。

如何在linux上使用strings命令

包括空格

字符串将制表符和空格字符视为它找到的字符串的一部分。其他空白字符(如换行符和回车符)不会被视为字符串的一部分。-w(whitespace)选项使字符串将所有空白字符视为字符串的一部分。

strings -w add_data | less

如何在linux上使用strings命令

我们可以看到输出中的空白行,这是第二行结尾的(不可见)回车符和换行符的结果。

如何在linux上使用strings命令

我们不局限于文件

我们可以将字符串用于任何可以产生字节流的东西。

通过这个命令,我们可以查看计算机的随机存取存储器(RAM)。

我们需要使用sudo,因为我们正在访问/dev/mem。这是一个字符设备文件,其中包含计算机主内存的图像。

sudo strings /dev/mem | less

如何在linux上使用strings命令

清单并不是RAM的全部内容。它只是可以从中提取的字符串。

如何在linux上使用strings命令

相关:在Linux中,“一切都是文件”是什么意思?

一次搜索多个文件

通配符可用于选择要搜索的文件组。*字符表示多个字符,而?字符表示任何单个字符。您还可以选择在命令行中提供许多文件名。

我们将使用通配符搜索/bin目录中的所有可执行文件。因为清单将包含许多文件的结果,所以我们将使用-f(filename)选项。这将打印每行开头的文件名。然后我们可以看到每个字符串在哪个文件中找到。

我们正在通过grep管道传输结果,并寻找包含“Copyright”一词的字符串

strings -f /bin/* | grep Copyright

如何在linux上使用strings命令

我们得到了/bin目录中每个文件的版权声明的整洁列表,文件名位于每行的开头。

如何在linux上使用strings命令

弦被解开了

字符串并不神秘;它是一个典型的Linux命令。它做了一些非常具体的事情,做得非常好。

它是Linux的另一个核心,当它与其他命令一起工作时,它就真正地出现了。当您看到它如何位于二进制文件和其他工具(如grep)之间时,您就开始了解这个稍微晦涩难懂的命令的功能了。

  • 发表于 2021-04-03 09:27
  • 阅读 ( 269 )
  • 分类:互联网

你可能感兴趣的文章

关于javarmi注册中心以及如何使用它的所有内容

...这些服务提供了一个集中的目录。在本文中,我们将学习如何实现一个服务器来公开对象,以及如何实现一个客户端来调用服务器上的方法,以及如何在RMI注册表中注册和查找服务。 ...

  • 发布于 2021-03-12 15:58
  • 阅读 ( 309 )

如何在linux上安装和使用powershell

... 在本文中,我将向您展示如何在Linux上安装、运行和使用PowerShell! ...

  • 发布于 2021-03-16 02:34
  • 阅读 ( 307 )

如何使用crontab自动化linux中的重复任务

... 在这里,您将了解什么是crontab,如何添加自动化作业,以及一些实际示例。 ...

  • 发布于 2021-03-28 04:45
  • 阅读 ( 207 )

redis和php快速数据存储入门

... 让我们深入了解,学习如何加快我们的在线运营。 ...

  • 发布于 2021-03-28 11:57
  • 阅读 ( 317 )

终极树莓皮命令备忘单

... 这就是为什么我们准备了这个方便的备忘单的日常使用树莓皮。 ...

  • 发布于 2021-03-30 18:59
  • 阅读 ( 245 )

如何在linux上使用seq命令

Linux seq命令可以在眨眼之间生成数字列表。但是如何将这个功能付诸实际使用呢?我们将向您展示seq如何为您带来便利。 seq命令 乍一看,Linux seq命令似乎有些奇怪。它可以让你快速生成数字序列,就这样!不过,这里的关键...

  • 发布于 2021-04-01 11:46
  • 阅读 ( 158 )

如何从linux命令行查看二进制文件

...。文件里有一大堆马厩,可以帮你分析。我们将向您展示如何使用这些工具。 识别文件类型 文件通常具有一些特性,允许软件包识别它是哪种类型的文件,以及其中的数据表示什么。尝试在MP3音乐播放器中打开PNG文件是没有...

  • 发布于 2021-04-02 04:41
  • 阅读 ( 357 )

如何检查linux上安装了哪个gpu

需要识别Linux计算机中的图形处理单元(GPU)吗?下面是如何从命令行和GNOME中识别图形卡。 第一步 你可能去过那里。你被征召来为一个非技术性的亲戚或同事提供支持,有些事情告诉你这不是无痛的。不过,你还是加入了!...

  • 发布于 2021-04-02 16:40
  • 阅读 ( 238 )

bash需要知道的15个特殊字符

...我们将向您展示哪些字符是“特殊”或“元”字符,以及如何从功能和字面上使用它们。 ~主目录 波浪号(~)是主目录的缩写。这意味着您不必在命令中键入主目录的完整路径。在文件系统中的任何位置,都可以使用此命令转...

  • 发布于 2021-04-03 03:58
  • 阅读 ( 216 )

如何在linux上使用xargs命令

...定的命令,它将默认使用echo。 我们可以用它来演示xargs如何总是生成一行输出,即使是从多行输入。 如果将-1(每行列出一个文件)选项与ls一起使用,则会得到一列文件名。 ls -1 ./*.sh 这将列出当前目录中的shell脚本文件。 ...

  • 发布于 2021-04-03 07:25
  • 阅读 ( 166 )
dmy491
dmy491

0 篇文章

相关推荐