在 Ubuntu(以及其它 Linux 发行版)里,strings 是一个命令行工具,用途是:从一个二进制文件(或任意文件)中提取出“可打印的字符串”。在编程和开发中,它有很多实用场景。
strings 是干什么的?简单说:
strings 文件名
它会扫描文件内容,把其中连续的、可打印的字符序列(比如 ASCII 字符串)打印出来。
例如一个编译后的 C 程序:
strings a.out
你可能看到:
Usage: program [options]
/home/user/project/config.txt
GCC: (Ubuntu 11.2.0)
程序里写的提示信息、路径、URL、密钥等,编译后仍然在二进制里。
strings app | grep http
常用于:
当你没有源码时:
strings binary
可以看到:
在安全研究中非常常见。
开发中容易误把敏感内容写死:
strings program | grep password
用来做:
比如你用了一个 .so 或 .a 文件:
strings libxxx.so
可以知道:
比如:
strings unknown_binary | head
可能看到:
ELF
GCC
Ubuntu
能判断:
对比源码和二进制:
gcc test.c -o test
strings test
帮助理解:
strings -n 6 file # 只显示长度 ≥ 6 的字符串
strings -a file # 扫描整个文件(不只是数据段)
strings -e l file # 指定字符编码(l=16-bit little endian)
strings server | grep ".conf"
strings app | grep OpenSSL
strings是程序员和安全工程师的“放大镜”,用来从二进制里看人类能读的文字信息。
如果你愿意,我也可以:
strings 效果