在 Debian(以及一般的 Linux)世界里,所谓 “解析 Debian strings 编码”,通常有以下几种理解。我分别说明,并给出实用方法。
strings 是一个命令(来自 binutils),用于从二进制文件或数据文件中提取可打印字符串。
strings /bin/ls
默认只显示 ASCII 可打印字符。
老版本 strings 默认只认 7-bit ASCII,遇到 UTF-8 中文会:
使用 -e 参数:
strings -e S 文件
常见编码选项:
| 参数 | 含义 |
|---|---|
-e S |
7-bit ASCII(默认) |
-e B |
16-bit |
-e L |
32-bit little endian |
-e b |
16-bit |
-e l |
32-bit |
-e s |
8-bit(UTF-8 常用) |
✅ UTF-8 文本推荐:
strings -e s 文件
或简写:
strings -n 4 文件
.deb 包内容dpkg-deb -x package.deb ./out
然后:
strings ./out/usr/bin/xxx
dpkg -L 包名
找到二进制文件后:
strings /usr/bin/xxx | grep 关键字
Debian 程序常使用:
.po(源码).mo(编译后,二进制).mo 文件msgunfmt xxx.mo
或:
strings xxx.mo
readelf -p .rodata 文件
或:
objdump -s -j .rodata 文件
nm 文件
c++filt 符号
strings -e s /usr/bin/apt | less
dpkg-deb -x apt.deb apt_out
strings -e s apt_out/usr/bin/apt
❌ 中文乱码
✅ 用 strings -e s + 终端 UTF-8
❌ 字符串被截断
✅ 用 -n 6 提高最小长度
❌ 误以为是加密
✅ 实际可能是压缩或资源段
如果你指的是 “Debian 安装界面的 strings”、“deb 包控制文件编码”、还是 “某个具体程序的字符串解析”,可以告诉我具体场景,我可以给更精确的命令。