在 Ubuntu(以及其他 Linux 系统)中,strings 是一个命令行工具,用于从二进制文件、可执行文件、库文件或任意文件中提取可打印的字符串。
下面从安装、基本用法、常见场景、常用参数几个方面讲清楚。
strings 会扫描文件中的 可打印字符序列(通常是 ASCII/Unicode),常用于:
大多数 Ubuntu 已预装。
如果没有,可以安装:
sudo apt update
sudo apt install binutils
strings /bin/ls
输出示例:
/lib64/ld-linux-x86-64.so.2
GNU C Library
Usage: %s [OPTION]... [FILE]...
strings example.bin
strings -n 6 binary_file
只显示 长度 ≥ 6 的字符串。
strings -t x binary_file
或十进制:
strings -t d binary_file
示例:
0x1a3f /usr/lib
0x1a50 main
strings -e l binary_file
-e 指定编码:
s:7-bit ASCII(默认)l:16-bit little-endianb:16-bit big-endianL:32-bit little-endianobjdump -s -j .rodata binary_file
或结合 strings:
objdump -s -j .rodata binary_file | strings
strings binary | grep -E 'http|https|192\.168'
strings binary | grep -i debug
strings suspicious_file | less
strings binary | grep '/lib'
| 参数 | 说明 |
|---|---|
-n num |
最小字符串长度 |
-t x |
显示十六进制偏移 |
-t d |
显示十进制偏移 |
-e encoding |
指定字符编码 |
-o |
显示偏移(旧版) |
-a |
扫描整个文件(默认) |
strings -n 6 -t x /usr/bin/ls | less
含义:
strings 不会解密加密内容如果你有 具体文件类型(如 ELF、PE、固件、core dump) 或想 分析特定内容(如密码、路径、通信地址),可以告诉我,我可以给你更精确的命令。