strings 命令是二進(jìn)制工具集 GNU Binutils 的一員,用于打印文件中可打印字符串,strings命令在對(duì)象文件或二進(jìn)制文件中查找可打印的字符串。字符串是4個(gè)或更多可打印字符的任意序列,以換行符或空字符結(jié)束。 strings命令對(duì)識(shí)別隨機(jī)對(duì)象文件很有用。

命令語(yǔ)法

strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ] [ file ... ]

命令選項(xiàng)

-a --all:掃描整個(gè)文件而不是只掃描目標(biāo)文件初始化和裝載段-f –print-file-name:在顯示字符串前先顯示文件名-n –bytes=[number]:找到并且輸出所有NUL終止符序列- :設(shè)置顯示的最少的字符數(shù),默認(rèn)是4個(gè)字符-t --radix={o,d,x} :輸出字符的位置,基于八進(jìn)制,十進(jìn)制或者十六進(jìn)制-o :類似--radix=o-T --target= :指定二進(jìn)制文件格式-e --encoding={s,S,b,l,B,L} :選擇字符大小和排列順序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit@ :讀取中選項(xiàng)

列出ls中所有的ASCII文本:

> strings `which pwd` | more/lib64/ld-linux-x86-64.so.2libc.so.6fflushstrcpy__printf_chkreaddirsetlocalembrtowcstrncmpoptindstrrchrdcgettextclosedirfchdir...

查看某一個(gè)字符串屬于哪個(gè)文件

> cd /usr/bin && strings -f * | grep "name"

查看glibc支持的版本

strings /lib64/libc.so.6 | grep GLIBCGLIBC_2.2.5GLIBC_2.2.6GLIBC_2.3GLIBC_2.3.2GLIBC_2.3.3GLIBC_2.3.4GLIBC_2.4GLIBC_2.5GLIBC_2.6GLIBC_2.7GLIBC_2.8GLIBC_2.9GLIBC_2.10GLIBC_2.11GLIBC_2.12GLIBC_2.13GLIBC_2.14GLIBC_2.15GLIBC_2.16GLIBC_2.17GLIBC_PRIVATE...

更改分隔符

默認(rèn)情況下,字符串使用的分隔符是換行符。但是,如果需要,您可以使用 -s 命令行選項(xiàng)自定義分隔符。

> strings -s /  ls | more/lib64/ld-linux-x86-64.so.2/    ...$8H/T$@H/D$@H/D$@H/=u|!/D$@H9/D$8t      /D$@H/=^y!/=]y!/=Hy!/=+y!/=/y!/G(H;G0/5 s!/-Is!/D$P??/D$@H/D$PL/5|u!/D$8H/D$@H/D$8H/L$$H/L$$L/D$(H/D$@I/D$@H/-Vj!/t$81/=9r!/=P_!/>v|

打印字符序列的偏移量

> strings -t d ls | more    568 /lib64/ld-linux-x86-64.so.2    648         _k+   3817 libselinux.so.1   3833 __gmon_start__   3848 _init   3854 fgetfilecon   3866 freecon   3874 lgetfilecon   3886 _fini   3892 libcap.so.2   3904 cap_to_text   3916 cap_free   3925 cap_get_file   3938 libacl.so.1   3950 acl_get_entry   3964 acl_get_tag_type   3981 acl_extended_file   3999 libc.so.6

原文鏈接:https://rumenz.com/rumenbiji/linux-strings.html
微信公眾號(hào):入門小站