strings 是 Debian/Ubuntu 等 Linux 系统中非常常用的命令行工具,用于从二进制文件(可执行文件、库文件、核心转储等)中提取可打印的字符串。以下是一些实用技巧和常见用法:
strings /bin/ls
默认会输出长度 ≥ 4 的可打印字符序列。
strings -n 8 binary_file
只显示长度 ≥ 8 的字符串,减少噪音。
strings -t x binary_file # 十六进制
strings -t d binary_file # 十进制
strings -t o binary_file # 八进制
非常适合逆向分析或定位数据。
strings -e l binary_file # 16-bit little endian
strings -e b binary_file # 16-bit big endian
strings -e s binary_file # 8-bit
用于提取非 ASCII 编码字符串(如 UTF-16)。
grep 精准查找strings binary | grep -i "password"
strings binary | grep -E "http|ftp"
strings core.dump | less
常用于崩溃分析。
strings /usr/bin/nginx | grep -i version
strings -a binary
-a 扫描整个文件(不跳过某些段)。
objdump 对比使用objdump -s -j .rodata binary
比 strings 更结构化,但 strings 更快。
strings app | grep -iE "key|token|secret|pass"
安全审计常用。
strings binary | sort | uniq -c | sort -nr
统计字符串出现频率。
strings -n 6 challenge | grep flag
strings program | grep -E "https?://"
strings unknown_file | head
strings 只能提取明文字符串如果你有具体使用场景(如 CTF、逆向、安全审计、故障排查),我可以给你更针对性的技巧。