温馨提示×

怎样用linux strings查IP地址

小樊
47
2026-10-11 08:41:57
栏目: 智能运维

在 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:只输出匹配的部分
  • 正则匹配 IPv4 形式

⚠️ 注意:这不验证 IP 是否合法(如 999.999.999.999 也会被匹配)


二、只匹配“看起来像真实 IP”的(更严格)

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。


三、查正在运行的进程(内存中的 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}'

五、顺便查 IPv6(可选)

strings file | grep -Eo '([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}'

六、常见坑提醒

  1. strings 默认只取长度 ≥ 4 的字符串
    strings -n 1 file
    
  2. 二进制里 IP 可能是十六进制或整数形式
    • 如 0x0A01A8C0 = 10.1.168.192
    • strings 不一定能直接看到

如果你能告诉我:

  • 是 文件 / 进程 / 日志 / 内存
  • 是 IPv4 还是 IPv6
  • 是否要 去重、统计出现次数

我可以给你更精准的一条命令。

0 踩