strings 是 Linux 下一个非常常用的命令行工具,用来从二进制文件或任意文件中提取可打印的字符串(通常是 ASCII 或 Unicode 文本)。它常用于分析可执行文件、日志、内存镜像、固件等。
下面从基本用法 → 常用参数 → 实战示例逐步说明。
strings 文件名
示例:
strings /bin/ls
这会输出 /bin/ls 中所有长度 ≥ 4 的可打印字符串。
-n)默认最小长度是 4。
strings -n 6 example.bin
只显示长度 ≥ 6 的字符串,减少噪声。
-t)strings -t x file.bin # 十六进制偏移
strings -t d file.bin # 十进制偏移
strings -t o file.bin # 八进制偏移
示例输出:
1a2f usage: prog [options]
1a45 main
适合配合 hexdump / gdb 使用。
-e)strings -e s file.bin # 7-bit ASCII(默认)
strings -e l file.bin # 16-bit little-endian
strings -e b file.bin # 16-bit big-endian
strings -e B file.bin # 32-bit big-endian
用于分析:
strings -n 5 file.bin | head -50
或结合 dd:
dd if=file.bin bs=1 skip=1024 count=4096 | strings
strings program | grep -i "password"
strings program | grep -E "http|ftp"
常用于:
file unknown.bin
strings unknown.bin | less
strings /usr/bin/curl | grep -i error
strings firmware.bin | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"
strings core.1234 | grep -i "segfault"
strings photo.jpg | less
⚠️ 注意:
进阶工具:
binwalk(固件)radare2 / ghidra(逆向)xxd / hexdump(底层分析)strings = 从“看不懂的文件”里找“看得懂的文字”
如果你有具体文件类型(如 ELF、PE、固件、图片、内存 dump),我可以给你更针对性的分析命令。