温馨提示×

如何获取Ubuntu Strings

小樊
44
2026-08-31 06:25:36
栏目: 智能运维

在 Ubuntu 系统中获取 strings(从二进制文件、固件、内存等中提取可打印字符串)通常有三种常见场景,下面按使用频率给你说明。


一、使用 strings 命令(最常见)

1️⃣ 安装 strings

strings 属于 binutils 工具集,Ubuntu 一般自带,如果没有:

sudo apt update
sudo apt install binutils

2️⃣ 基本用法

strings 文件名

示例:

strings /bin/ls

3️⃣ 常用参数

参数 说明
-n 指定最小字符串长度
-e 指定字符编码
-t x / -t d 显示字符串偏移(十六进制 / 十进制)
-f 显示文件名

示例

# 只显示长度 ≥ 8 的字符串
strings -n 8 test.bin

# 显示偏移(十六进制)
strings -t x test.bin

# 提取 UTF-8 / UTF-16 字符串
strings -e l test.bin

二、从进程或内存中提取 strings

1️⃣ 从运行中进程(gdb)

gdb -p PID
(gdb) info proc mappings
(gdb) dump memory mem.bin 0xADDRESS 0xADDRESS+SIZE
(gdb) quit
strings mem.bin

2️⃣ 使用 /proc

cat /proc/PID/maps

然后结合 ddgdb 导出内存。


三、从固件 / 二进制文件中提取(安全/逆向常用)

1️⃣ 固件常用组合

binwalk firmware.bin
strings firmware.bin > strings.txt

2️⃣ 搜索特定字符串

strings firmware.bin | grep password
strings firmware.bin | grep -i https

3️⃣ 批量提取

for f in *; do
  strings "$f" >> all_strings.txt
done

四、如果你想“获取 Ubuntu 系统里的字符串资源”

1️⃣ 程序中的字符串(源码)

apt source 程序名
grep -R "字符串" 源码目录

2️⃣ 本地化(翻译)字符串

ls /usr/share/locale/

3️⃣ 查看 ELF 文件中的字符串表

readelf -p .rodata /bin/ls

五、常见问题

❓ strings 能提取所有字符串吗?

❌ 不能

  • 加密字符串
  • 运行时拼接字符串
  • 压缩数据

都可能需要反汇编或动态分析。


六、总结(快速上手)

sudo apt install binutils
strings -n 6 文件名

如果你能说明:

  • ✅ 是 二进制文件 / 固件 / 内存 / 源码
  • ✅ 目的是 逆向 / 取证 / 调试 / 翻译

我可以给你更精确的方法。

0