在 Linux 里,strings 本身不能直接识别 IP 地址,它只能从一个文件(或二进制、内存镜像等)中提取“可打印字符串”。
要“用 strings 查 IP 地址”,通常是:先用 strings 提取字符串,再用 grep 过滤出 IP。
下面给你几种常见、实用的方法。
strings 文件名 | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'
示例:
strings app.bin | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'
说明:
strings:提取可打印字符grep -Eo:
-E:使用扩展正则-o:只输出匹配的部分⚠️ 注意:这不验证 IP 是否合法(如 999.999.999.999 也会被匹配)
strings file | grep -Eo '\b([0-9]{1,3}\.){3}[0-9]{1,3}\b' | \
awk -F. '$1<=255 && $2<=255 && $3<=255 && $4<=255'
这样可以过滤掉明显非法的 IP。
strings /proc/<PID>/mem | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'
或者用:
cat /proc/<PID>/maps
strings /var/log/messages | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'
strings file | grep -Eo '([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}'
strings -n 1 file
0x0A01A8C0 = 10.1.168.192如果你能告诉我:
我可以给你更精准的一条命令。