温馨提示×

Ubuntu Strings怎么提取

小樊
50
2026-08-31 06:26:36
栏目: 智能运维

在 Ubuntu 上提取字符串(strings)通常指从二进制文件、固件、内存转储或任意文件中提取可打印的字符串,常用的是 strings 命令,也可以结合 grep、xxd、binwalk 等工具。下面按常见场景给你完整说明。


一、最常用:strings 命令

1️⃣ 基本用法

strings filename

示例:

strings /bin/ls

2️⃣ 指定最小字符串长度(默认是 4)

strings -n 6 filename

3️⃣ 输出字符串在文件中的偏移

strings -t x filename   # 十六进制
strings -t d filename   # 十进制

示例:

strings -t x binary.bin

4️⃣ 从特定偏移开始提取

strings -e l filename   # 16-bit little-endian
strings -e b filename   # 16-bit big-endian
strings -e L filename   # 32-bit little-endian

二、从特定类型文件中提取字符串

✅ 1. 从 ELF / 可执行文件中提取

strings /usr/bin/python3

常用于:

  • 分析二进制
  • 查找硬编码路径、URL、密钥

✅ 2. 从固件 / 二进制镜像中提取

strings firmware.bin

结合过滤:

strings firmware.bin | grep -i password

✅ 3. 从内存转储中提取

strings mem.dump | less

三、结合 grep 精准提取

查找 IP / URL / 邮箱

strings file | grep -E "http|https|ftp"
strings file | grep -E "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"
strings file | grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"

四、如果没有 strings 命令

安装

sudo apt update
sudo apt install binutils

五、不用 strings 的替代方法

1️⃣ 使用 cat + grep

cat file | tr -cs '[:print:]' '\n' | less

2️⃣ 使用 xxd + grep

xxd file | grep ": 20"

3️⃣ 使用 binwalk(固件分析)

sudo apt install binwalk
binwalk -e firmware.bin

六、实战示例(常见用法)

查找可能的密码字符串

strings binary | grep -i pass

查找 URL

strings binary | grep -E "https?://"

查找函数名(适用于未 strip 的 ELF)

strings binary | grep main

七、常见问题

❓ 为什么 strings 提取不到?

  • 字符串被加密 / 压缩
  • 字符串长度 < 4(加 -n 3)
  • 非 ASCII 字符串(尝试 -e)

八、你可能真正想问的是?

如果你指的是:

  • ✅ 反编译 / 逆向分析
  • ✅ CTF 题目
  • ✅ 从 APK / Docker / 内存 / 固件中提取
  • ✅ 中文 / Unicode 字符串
  • ✅ Windows 程序在 Ubuntu 提取

可以告诉我具体文件类型或场景,我可以直接给你针对性的命令。

0 踩