如何利用Ubuntu Strings进行个性化设置
小樊
39
2025-11-14 06:49:59
Ubuntu strings个性化设置指南
一 概念澄清
- strings 是 GNU binutils 中的命令行工具,用于从二进制文件中提取可打印字符串,常用于逆向工程、日志定位、固件分析等场景。它并非系统主题或界面设置工具,因此“个性化”主要体现在你如何定制它的提取规则与输出格式。默认最小长度为4个字符,常见输出包含偏移量 + 字符串;可用选项控制长度、编码、输出格式等。
二 常用个性化选项与示例
- 控制最小长度:使用 -n,例如只提取长度≥6的字符串
- 示例:
strings -n 6 your_binary
- 指定输出格式:使用 -t,支持 x(十六进制偏移)、d(十进制偏移)、o(八进制偏移);默认同时打印偏移与字符串
- 示例:
strings -t x your_binary(偏移以十六进制显示)
- 指定字符编码:使用 -e,如 s(7-bit ASCII)、b(8-bit byte)、l(16-bit little-endian)、B(16-bit big-endian)、utf-8 等
- 示例:
strings -e utf-8 your_binary
- 仅打印偏移:使用 -o(便于后续脚本处理)
- 示例:
strings -o your_binary
- 组合示例:提取长度≥8、以十六进制偏移显示、UTF-8 编码的字符串
- 示例:
strings -n 8 -t x -e utf-8 your_binary
- 查看版本与帮助:
strings -V、man strings
以上选项可组合使用,以满足不同的“个性化”输出需求。
三 进阶个性化 管道与脚本加工
- 去重并统计出现次数(保留首次出现的顺序)
- 示例:
strings -n 6 your_binary | awk '!seen[$0]++' | sort | uniq -c | sort -nr
- 过滤包含关键字的字符串(区分大小写)
- 示例:
strings -n 6 your_binary | grep -i "password"
- 高亮并分页查看
- 示例:
strings -n 6 your_binary | grep -i "token" | less -R
- 导出到文件并附加元信息
- 示例:
{ echo "=== strings @ $(date) ==="; strings -n 6 your_binary; } > strings_report.txt
- 批量处理多个文件(按文件前缀归类)
- 示例:
for f in app*.bin; do strings -n 6 "$f" > "strings_${f%.bin}.txt"; done
- 与逆向/分析工具联动
- 示例:
strings -n 6 your_binary | sort -u | xargs -I{} sh -c 'objdump -s -j .rodata | grep -F "{}" || echo NotInRO'
四 常见问题与排查
- 提取结果“乱码”或不完整:用 -e utf-8 / -e l / -e B 指定正确编码或宽字符顺序,再试;必要时先确认文件是否为文本或特定编码的二进制。
- 输出太多难以阅读:提高最小长度(如 -n 8 或 -n 10),或结合 grep / awk / sort / uniq 做二次筛选与统计。
- 只想看偏移或只要字符串:要偏移用 -o;只要字符串可直接管道到
grep/sed,或使用 -t x 仅输出偏移配合后续处理。
- 需要更“可视化”的结果:将结果导入
less -R(保留高亮)、或生成 HTML/CSV 报表供团队审阅(例如 ... | sort | uniq -c | sort -nr | column -t)。
备注与小贴士
- strings 仅“读取”二进制内容,不会对文件做任何修改;请放心在只读副本或备份上实验。
- 若你实际想做的是“系统界面个性化”(主题、图标、字体等),那是 GNOME Tweaks / 主题与外观 的范畴,并非 strings 工具的职责。