在 Debian(及一般 Linux)下,strings 命令本身不直接提供“指定文件编码”的选项,它默认按 ASCII / 8-bit 字符 提取可打印字符串。不过你可以通过以下方式“间接指定或处理编码”。
strings 只能识别单字节可打印字符(默认 7-bit ASCII,或扩展 8-bit)。
它对 UTF‑16、UTF‑32、GBK、Shift‑JIS 等多字节编码无原生支持。
很多 Windows / PE 文件用 UTF‑16LE:
strings -e l file.bin
选项说明:
-e l:UTF‑16LE(小端)-e b:UTF‑16BE(大端)-e s:7‑bit ASCII-e S:UTF‑32(大端)-e L:UTF‑32(小端)✅ 这是 strings 唯一“编码相关”的参数
strings 不支持,需要用 iconv + cat:
strings file | iconv -f UTF-8 -t UTF-8
iconv -f GBK -t UTF-8 file | strings
strings file | iconv -f GBK -t UTF-8
grep + iconv 提取中文strings file | iconv -f UTF-16LE -t UTF-8 | grep -P '[\x{4e00}-\x{9fff}]'
binwalk / radare2 / ghidra(更专业)radare2:izz 支持编码ghidra:字符串识别支持多编码binwalk -e| 需求 | 方法 |
|---|---|
| UTF‑16 | strings -e l |
| UTF‑32 | strings -e L |
| GBK / 其他 | iconv + strings |
| 二进制分析 | radare2 / ghidra |
如果你愿意,可以告诉我:
我可以给你精确命令。