温馨提示×

如何用linux strings查硬编码

小樊
42
2026-09-08 12:02:26
栏目: 智能运维

在 Linux 下,strings 命令常用于从二进制文件(可执行文件、库、固件等)中提取可打印字符串,非常适合用来发现硬编码信息(如 IP、域名、密码、API Key、SQL、路径等)。下面按“怎么做 → 怎么查 → 实战技巧”来说明。


一、基本用法(提取字符串)

strings binary_file

示例:

strings ./app

默认会输出长度 ≥ 4 的可打印字符序列。


二、结合 grep 查硬编码(最核心)

1️⃣ 查硬编码 IP 地址

strings app | grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}'

2️⃣ 查域名

strings app | grep -E 'https?://[a-zA-Z0-9./-]+'

或只查域名:

strings app | grep -E '\b[a-zA-Z0-9.-]+\.(com|cn|net|org)\b'

3️⃣ 查密码 / 密钥关键词

strings app | grep -iE 'password|passwd|secret|token|apikey|api_key'

4️⃣ 查 SQL 语句(硬编码查询)

strings app | grep -iE 'select|insert|update|delete|from|where'

5️⃣ 查路径(Linux)

strings app | grep -E '/[a-zA-Z0-9_./-]+'

6️⃣ 查账号 / 配置

strings app | grep -E 'admin|root|config|user'

三、提高命中率的高级用法

1️⃣ 指定最小字符串长度

strings -n 6 app

(避免太多无意义短字符串)

2️⃣ 显示字符串在文件中的偏移

strings -t x app

或十进制:

strings -t d app

例如:

strings -t x app | grep password

可以配合 objdump / gdb 进一步定位。


四、分区域查(更精准)

1️⃣ 只查数据段(常见硬编码)

strings -e l app
  • -e l:16-bit little endian
  • -e b:16-bit big endian
  • -e s:7-bit ASCII(默认)
  • -e L:32-bit little endian

五、配合其他工具(实战推荐)

1️⃣ strings + grep + less

strings app | grep -iE 'token|key|secret' | less

2️⃣ 查动态库

strings /lib/x86_64-linux-gnu/libxxx.so

3️⃣ 查固件 / 镜像

strings firmware.bin | grep -i password

六、典型硬编码风险示例(你会看到的)

mysql://root:123456@127.0.0.1:3306/db
api_key=AKIA1234567890
password=admin123
http://192.168.1.100:8080/login

七、注意事项(很重要)

✅ strings 只能看明文
❌ 加密 / 压缩 / 混淆的内容看不到
✅ 可结合:

  • objdump -s -j .rodata
  • radare2
  • ghidra
  • binwalk

八、一句话总结

strings 查硬编码 = strings 文件 | grep 关键词

如果你有:

  • 具体文件类型(ELF / APK / 固件)
  • 想查的内容(密码 / IP / Token)
  • 或逆向分析场景

我可以直接给你针对性命令

0