在 Linux 里,strings 和 grep 经常一起用,用来从二进制文件、core 文件、日志等“非纯文本”里提取可打印字符串,并按关键字过滤。
下面按常见场景给你讲清楚。
strings /bin/ls | grep ssh
含义:
strings:提取 /bin/ls 中所有可打印字符串grep ssh:只显示包含 ssh 的行strings app | grep -i error
strings -n 6 binary | grep -n password
-n 6:只显示长度 ≥ 6 的字符串(过滤噪音)-n:grep 显示行号strings binary | grep -E 'user|pass|token'
strings binary | grep user | grep pass
strings core.1234 | grep -i "segmentation"
strings capture.pcap | grep http
strings binary > strings.txt
grep -n "config" strings.txt
strings file1 file2 | grep key
strings 常用参数(配合 grep 很有用)| 参数 | 作用 |
|---|---|
-n N |
只显示长度 ≥ N 的字符串 |
-a |
扫描整个文件(默认可能跳过某些段) |
-e |
指定字符编码(如 s l b) |
-t x |
显示字符串在文件中的偏移(十六进制) |
示例:
strings -a -n 8 binary | grep -i license
strings /usr/bin/app | grep -i pass
strings malware.bin | grep -E 'http|cmd|exec|sh'
strings app | grep -E '^__|printf|socket'
grep -A/-B 看上下文strings binary | grep -A3 -B3 token
lessstrings binary | grep -i error | less
如果你愿意,可以告诉我:
我可以给你更精准的命令模板。