在 Ubuntu 系统中获取 strings(从二进制文件、固件、内存等中提取可打印字符串)通常有三种常见场景,下面按使用频率给你说明。
strings 命令(最常见)stringsstrings 属于 binutils 工具集,Ubuntu 一般自带,如果没有:
sudo apt update
sudo apt install binutils
strings 文件名
示例:
strings /bin/ls
| 参数 | 说明 |
|---|---|
-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
gdb -p PID
(gdb) info proc mappings
(gdb) dump memory mem.bin 0xADDRESS 0xADDRESS+SIZE
(gdb) quit
strings mem.bin
/proccat /proc/PID/maps
然后结合 dd 或 gdb 导出内存。
binwalk firmware.bin
strings firmware.bin > strings.txt
strings firmware.bin | grep password
strings firmware.bin | grep -i https
for f in *; do
strings "$f" >> all_strings.txt
done
apt source 程序名
grep -R "字符串" 源码目录
ls /usr/share/locale/
readelf -p .rodata /bin/ls
❌ 不能
都可能需要反汇编或动态分析。
sudo apt install binutils
strings -n 6 文件名
如果你能说明:
我可以给你更精确的方法。