在 Linux 里,strings 本身不是专门找密文的工具,它只是把二进制文件里“看起来像可打印字符串”的内容提取出来。所谓“找密文”,通常是:
下面按实用场景讲。
strings file.bin
只显示长度 ≥ 4 的可打印字符(默认):
strings -n 6 file.bin
指定字符集(常见 UTF-8 / ASCII):
strings -e l file.bin # 16-bit little endian
strings -e b file.bin # 16-bit big endian
strings file.bin | grep -E '[A-Za-z0-9+/]{16,}'
或更严格:
strings -n 20 file.bin | grep -E '^[A-Za-z0-9+/]+={0,2}$'
strings file.bin | grep -E '([0-9a-fA-F]{2}){16,}'
strings file.bin | grep -iE 'password|secret|key|token|apikey|private'
strings file.bin | grep -iE 'AES|RSA|DES|SHA|encrypt|decrypt'
加上 -a -t x:
strings -a -t x file.bin
输出示例:
1a2b3c password=admin123
2c4d5e U2FsdGVkX1...
这样可以:
dd / hexdump 进一步提取strings -a -t x file.bin | grep -i secret
然后用:
dd if=file.bin bs=1 skip=0x1a2b3c count=64 of=secret.bin
strings -n 8 -a -t x file.bin \
| grep -iE 'key|secret|token|encrypt|base64|=='
或:
strings file.bin | base64 -d 2>/dev/null
(尝试直接解 base64)
✅ 只能用于:
❌ 不要:
如果你愿意,可以告诉我:
我可以给你更精准的 strings + 分析命令。