Ubuntu Strings配置有哪些技巧
导读:Ubuntu strings 实用技巧 一、核心用法速览 基本提取:查看二进制中的可打印字符串 示例:strings /usr/bin/ls | head 指定最小长度:只显示长度≥N的字符串 示例:strings -n 8 /u...
Ubuntu strings 实用技巧
一、核心用法速览
- 基本提取:查看二进制中的可打印字符串
- 示例:
strings /usr/bin/ls | head
- 示例:
- 指定最小长度:只显示长度≥N的字符串
- 示例:
strings -n 8 /usr/bin/ls | head
- 示例:
- 控制输出格式:显示字符串在文件中的偏移
- 示例:
strings -t x /usr/bin/ls | head(十六进制偏移)、strings -t d为十进制
- 示例:
- 指定字符编码:适配不同编码的二进制
- 示例:
strings -e l(小端)、strings -e b(大端)、strings -e S(UTF-16/32)
- 示例:
- 版本信息:
strings -V - 扫描整个文件:不局限于节区,扫描全文件
- 示例:
strings -a /path/to/binary | less
- 示例:
- 结合 grep 精准筛选:快速定位关键字
- 示例:
strings /usr/bin/ls | grep -i "usage"、strings /usr/bin/ls | grep -E "error|fail|warn"
- 示例:
二、高效筛选与定位
- 只看特定偏移范围:先用偏移筛选,再提取字符串
- 示例:
strings -t x /usr/bin/ls | awk '$1 ~ /^0x[78]/ { print $2} ' | sort -u
- 示例:
- 多关键字命中:一次匹配多个词
- 示例:
strings /usr/bin/ls | grep -E "cannot|denied|invalid" | sort -u
- 示例:
- 与正则配合:提取类似 URL、路径、版本号等模式
- 示例:
strings /usr/bin/ls | grep -Eo 'https?://[^"]+'
- 示例:
- 与 file/objdump/readelf 联动:先确认文件类型,再定向提取
- 示例:
file /usr/bin/ls;objdump -s /usr/bin/ls | grep -i "string";readelf -p .rodata /usr/bin/ls | less
- 示例:
- 结果去重与计数:快速了解出现频次
- 示例:
strings /usr/bin/ls | sort | uniq -c | sort -nr | head
- 示例:
- 大文件分页查看:避免刷屏
- 示例:
strings -a big.bin | less -S
- 示例:
- 只输出匹配行及前后若干行:便于上下文分析
- 示例:
strings /usr/bin/ls | grep -A2 -B2 "segmentation"
- 示例:
三、实战场景与命令组合
- 排查程序崩溃线索:定位错误提示或异常标记
- 示例:
strings core | grep -i "exception\|abort\|segfault" | head
- 示例:
- 快速探测依赖或特征字符串:识别第三方库、协议标识
- 示例:
strings /usr/bin/curl | grep -E "HTTP/|libcurl|TLS" | sort -u
- 示例:
- 安全审计与信息泄露:查找可疑关键字
- 示例:
strings /usr/bin/app | grep -Ei "password|secret|token|key" | sort -u
- 示例:
- 版本与构建信息抽取:定位版本号、构建时间、签名标记
- 示例:
strings /usr/bin/app | grep -E "v[0-9]+\.[0-9]+\.[0-9]+" | sort -u
- 示例:
- 多架构二进制分析:对多架构包分别检查
- 示例:
strings /usr/bin/ls | head与strings /usr/bin/ls | head(在不同架构环境下执行)
- 示例:
- 与管道组合做差异对比:对比两个可执行文件的字符串差异
- 示例:
diff < (strings v1/app) < (strings v2/app) | grep -E "^\+|^-"
- 示例:
四、排错与最佳实践
- 权限与路径:对系统二进制使用
sudo或切换到 root,确保可读- 示例:
sudo strings /usr/sbin/sshd | head
- 示例:
- 编码与语言环境:处理非 ASCII 内容时,用
-e指定编码(如 UTF-16/32)- 示例:
strings -e S /path/to/binary | grep "关键字"
- 示例:
- 全文件扫描:遇到加壳或字符串不在常规节区时,使用
-a- 示例:
strings -a suspicious.bin | less
- 示例:
- 性能与可读性:对大文件加
less -S分页,或用head/tail限制输出- 示例:
strings -a huge.bin | less -S
- 示例:
- 结果准确性:strings 只做“可打印字符”提取,可能包含误报;结合
grep/awk/sort -u精炼结果 - 合规与安全:分析软件请遵守 EULA/许可证 与法律法规,勿用于未授权审计或逆向工程
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Strings配置有哪些技巧
本文地址: https://pptw.com/jishu/765956.html
